Commit ffe497f0 authored by Florian Fischer's avatar Florian Fischer
Browse files

make evaluation modes selectable

parent 8271e71f
Pipeline #82027 passed with stage
in 1 minute and 25 seconds
...@@ -22,8 +22,6 @@ if [ -d "$OUT" ]; then ...@@ -22,8 +22,6 @@ if [ -d "$OUT" ]; then
mv "$OUT" "$OUT"-"$ctime" mv "$OUT" "$OUT"-"$ctime"
fi fi
mkdir -p "${OUT}"/{latency,throughput}
NUMA_ARGS=--measure-cmd="numactl --cpunodebind=netdev:10gbe-card-p1 /usr/bin/time -o {BENCHDIR}/server_stats.{RUN}.txt -v" NUMA_ARGS=--measure-cmd="numactl --cpunodebind=netdev:10gbe-card-p1 /usr/bin/time -o {BENCHDIR}/server_stats.{RUN}.txt -v"
COMMON_ARGS=(--ssh-port "${SSH_PORT}" --host "${HOST}" --perf-energy) COMMON_ARGS=(--ssh-port "${SSH_PORT}" --host "${HOST}" --perf-energy)
...@@ -40,77 +38,92 @@ COMMON_ARGS_LATENCY=(${COMMON_ARGS[@]} --data-dir ${OUT}/latency \ ...@@ -40,77 +38,92 @@ COMMON_ARGS_LATENCY=(${COMMON_ARGS[@]} --data-dir ${OUT}/latency \
echo "muhq's MA io eval" echo "muhq's MA io eval"
echo 'Writing results to' "$OUT" echo 'Writing results to' "$OUT"
echo 'arguments:' "${COMMON_ARGS[@]}" echo 'arguments:' "${COMMON_ARGS[@]}"
echo 'throughput-arguments:' "${COMMON_ARGS_THROUGHPUT[@]}"
echo 'latency-arguments:' "${COMMON_ARGS_LATENCY[@]}" ## Baseline measurements
eval_throughput() {
# Baseline measurements echo "Measuring throughput"
./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f vanilla vanilla-200us -- emper echo 'throughput-arguments:' "${COMMON_ARGS_THROUGHPUT[@]}"
# No sleep measurements mkdir -p "${OUT}"/throughput
./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f no-sleep no-sleep-0us-1ms -- emper
./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f vanilla vanilla-200us -- emper
# Measure parsimonious sem
./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f parsimonious-sem -- emper # No sleep measurements
./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f no-sleep no-sleep-0us-1ms -- emper
# Measure registering io_uring fd's improvements
./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f not-register-iouring -- emper # Measure parsimonious sem
./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f parsimonious-sem -- emper
# Measurements comparing runtimes
./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -- go go-200us tokio tokio-200us # Measure registering io_uring fd's improvements
./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f not-register-iouring -- emper
# Measurements showing distributed design improvements
./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f simple-arch simple-arch-try-syscall -- emper # Measurements comparing runtimes
./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -- go go-200us tokio tokio-200us
# Measurements showing linked future improvements
./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f linked-futures -- emper # Measurements showing distributed design improvements
./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f simple-arch simple-arch-try-syscall -- emper
# Measurements showing sleep strategies
./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f pipe waitfd -- emper # Measurements showing linked future improvements
./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f linked-futures -- emper
# Measurements showing completer, stealing, notification benefits
./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f \ # Measurements showing sleep strategies
io-stealing \ ./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f pipe waitfd -- emper
pipe-no-comp io-stealing-pipe-no-comp \
waitfd-no-comp io-stealing-waitfd-no-comp \ # Measurements showing completer, stealing, notification benefits
io-notification-waitfd-no-comp \ ./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f \
-- emper io-stealing \
pipe-no-comp io-stealing-pipe-no-comp \
# Measurements showing completer, stealing notification benefits with computation waitfd-no-comp io-stealing-waitfd-no-comp \
./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f \ io-notification-waitfd-no-comp \
vanilla-0us-1ms io-stealing-0us-1ms \ -- emper
pipe-0us-1ms pipe-no-comp-0us-1ms \
io-stealing-pipe-no-comp-0us-1ms \ # Measurements showing completer, stealing notification benefits with computation
waitfd-0us-1ms waitfd-no-comp-0us-1ms \ ./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f \
io-stealing-waitfd-no-comp-0us-1ms \ vanilla-0us-1ms io-stealing-0us-1ms \
io-notification-waitfd-no-comp-0us-1ms \ pipe-0us-1ms pipe-no-comp-0us-1ms \
-- emper io-stealing-pipe-no-comp-0us-1ms \
waitfd-0us-1ms waitfd-no-comp-0us-1ms \
# Measurements waitfree notification variants benefits io-stealing-waitfd-no-comp-0us-1ms \
./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f \ io-notification-waitfd-no-comp-0us-1ms \
io-notification-waitfree io-notification-waitfree-no-comp \ -- emper
io-notification-waitfree-0us-1ms io-notification-waitfree-no-comp-0us-1ms \
-- emper # Measurements waitfree notification variants benefits
./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f \
# Measure lockless stealing variants seperatly because they are not reliable io-notification-waitfree io-notification-waitfree-no-comp \
# and thus easier to skip io-notification-waitfree-0us-1ms io-notification-waitfree-no-comp-0us-1ms \
#./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f \ -- emper
#io-stealing-lockless \
#io-stealing-pipe-no-comp-lockless \ # Measure lockless stealing variants seperatly because they are not reliable
#io-stealing-waitfd-no-comp-lockless \ # and thus easier to skip
#io-notification-waitfd-no-comp-lockless \ #./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f \
#io-stealing-pipe-no-comp-lockless-0us-1ms \ #io-stealing-lockless \
#io-stealing-waitfd-no-comp-lockless-0us-1ms \ #io-stealing-pipe-no-comp-lockless \
#io-notification-waitfd-no-comp-lockless-0us-1ms \ #io-stealing-waitfd-no-comp-lockless \
#io-notification-waitfree-no-comp-lockless \ #io-notification-waitfd-no-comp-lockless \
#io-notification-waitfree-no-comp-lockless-0us-1ms \ #io-stealing-pipe-no-comp-lockless-0us-1ms \
#-- emper #io-stealing-waitfd-no-comp-lockless-0us-1ms \
#io-notification-waitfd-no-comp-lockless-0us-1ms \
# Latency evaluation #io-notification-waitfree-no-comp-lockless \
./eval.py "${COMMON_ARGS_LATENCY[@]}" -f vanilla-200us vanilla-0us-1ms no-sleep-0us-1ms \ #io-notification-waitfree-no-comp-lockless-0us-1ms \
-- emper go-200us tokio-200us #-- emper
}
./eval.py "${COMMON_ARGS_LATENCY[@]}" -f \
{pipe,waitfd}{,-no-comp}-{200us,0us-1ms} \ eval_latency() {
io-stealing-{pipe,waitfd}-no-comp-{200us,0us-1ms} \ ## Latency evaluation
io-notification-{,waitfree-}waitfd-no-comp-{200us,0us-1ms} \ echo "Measuring latency"
-- emper echo 'latency-arguments:' "${COMMON_ARGS_LATENCY[@]}"
mkdir -p "${OUT}"/latency
./eval.py "${COMMON_ARGS_LATENCY[@]}" -f {no-sleep,vanilla}-{200us,0us-1ms} \
-- emper go-200us tokio-200us
./eval.py "${COMMON_ARGS_LATENCY[@]}" -f \
{pipe,waitfd}{,-no-comp}-{200us,0us-1ms} \
io-stealing-{pipe,waitfd}-no-comp-{200us,0us-1ms} \
io-notification-{,waitfree-}waitfd-no-comp-{200us,0us-1ms} \
-- emper
}
[[ "${EVAL_THROUGHPUT:=true}" != "false"]] && eval_throughput
[[ "${EVAL_LATENCY:=true}" != "false"]] && eval_latency
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment