diff --git a/bench/emper.py b/bench/emper.py index 75a6d829ba627f97f7b01c305457e98d90c73197..01207d445eda34f1f416656b6ad5b292d6375be0 100644 --- a/bench/emper.py +++ b/bench/emper.py @@ -30,6 +30,7 @@ import fnmatch import logging from pathlib import Path import os +import re import subprocess import sys from typing import Dict, List, Sequence, Union @@ -89,87 +90,34 @@ FLAVORS: Flavors = { 'checkout': PIPE_CHECKOUT, 'meson_options': '-Dworker_sleep_strategy=pipe' }, - 'pipe-0us-200us': { - 'checkout': PIPE_CHECKOUT, - 'meson_options': '-Dworker_sleep_strategy=pipe', - 'server_cmd_suffix': ' 0 200', - }, - 'pipe-0us-1ms': { - 'checkout': PIPE_CHECKOUT, - 'meson_options': '-Dworker_sleep_strategy=pipe', - 'server_cmd_suffix': ' 0 1000', - }, # 'pipe-2iow': { # 'checkout': PIPE_CHECKOUT, # 'meson_options': '-Dworker_sleep_strategy=pipe', # 'server_cmd_prefix': ENV_CMD_UIOWM2, # }, - # 'pipe-2iow-0us-200us': { - # 'checkout': PIPE_CHECKOUT, - # 'meson_options': '-Dworker_sleep_strategy=pipe', - # 'server_cmd_suffix': ' 0 200', - # 'server_cmd_prefix': ENV_CMD_UIOWM2, - # }, 'pipe-no-comp': { 'checkout': PIPE_CHECKOUT, 'meson_options': '-Dworker_sleep_strategy=pipe -Dio_completer_behavior=none', }, - 'pipe-no-comp-0us-1ms': { - 'checkout': PIPE_CHECKOUT, - 'meson_options': - '-Dworker_sleep_strategy=pipe -Dio_completer_behavior=none', - 'server_cmd_suffix': ' 0 1000', - }, 'waitfd': { 'meson_options': '-Dworker_sleep_strategy=waitfd', 'checkout': WAITFD_CHECKOUT, }, - 'waitfd-0us-1ms': { - 'meson_options': '-Dworker_sleep_strategy=waitfd', - 'server_cmd_suffix': ' 0 1000', - 'checkout': WAITFD_CHECKOUT, - }, # 'waitfd-2iow': { # 'meson_options': '-Dworker_sleep_strategy=waitfd', # 'checkout': WAITFD_CHECKOUT, # 'server_cmd_prefix': ENV_CMD_UIOWM2, # }, - # 'waitfd-2iow-0us-200us': { - # 'meson_options': '-Dworker_sleep_strategy=waitfd', - # 'server_cmd_suffix': ' 0 200', - # 'checkout': WAITFD_CHECKOUT, - # 'server_cmd_prefix': ENV_CMD_UIOWM2, - # }, 'waitfd-no-comp': { 'meson_options': '-Dworker_sleep_strategy=waitfd -Dio_completer_behavior=none', 'checkout': WAITFD_CHECKOUT, }, - 'waitfd-no-comp-0us-200us': { - 'meson_options': - '-Dworker_sleep_strategy=waitfd -Dio_completer_behavior=none', - 'server_cmd_suffix': ' 0 200', - 'checkout': WAITFD_CHECKOUT, - }, - 'waitfd-no-comp-0us-1ms': { - 'meson_options': - '-Dworker_sleep_strategy=waitfd -Dio_completer_behavior=none', - 'server_cmd_suffix': ' 0 1000', - 'checkout': WAITFD_CHECKOUT, - }, 'io-stealing': { 'meson_options': '-Dio_stealing=true', }, - 'io-stealing-0us-200us': { - 'meson_options': '-Dio_stealing=true', - 'server_cmd_suffix': ' 0 200', - }, - 'io-stealing-0us-1ms': { - 'meson_options': '-Dio_stealing=true', - 'server_cmd_suffix': ' 0 1000', - }, 'io-stealing-lockless': { 'meson_options': '-Dio_stealing=true -Dio_lockless_cq=true', }, @@ -189,18 +137,6 @@ FLAVORS: Flavors = { 'meson_options': '-Dio_stealing=true -Dworker_sleep_strategy=pipe -Dio_completer_behavior=none', }, - 'io-stealing-pipe-no-comp-0us-200us': { - 'checkout': PIPE_CHECKOUT, - 'meson_options': - '-Dio_stealing=true -Dworker_sleep_strategy=pipe -Dio_completer_behavior=none', - 'server_cmd_suffix': ' 0 200', - }, - 'io-stealing-pipe-no-comp-0us-1ms': { - 'checkout': PIPE_CHECKOUT, - 'meson_options': - '-Dio_stealing=true -Dworker_sleep_strategy=pipe -Dio_completer_behavior=none', - 'server_cmd_suffix': ' 0 1000', - }, 'io-stealing-pipe-no-comp-lockless': { 'checkout': PIPE_CHECKOUT, @@ -208,33 +144,6 @@ FLAVORS: Flavors = { ('-Dio_stealing=true -Dworker_sleep_strategy=pipe' ' -Dio_completer_behavior=none -Dio_lockless_cq=true'), }, - 'io-stealing-pipe-no-comp-lockless-0us-200us': { - 'checkout': - PIPE_CHECKOUT, - 'meson_options': - ('-Dio_stealing=true -Dworker_sleep_strategy=pipe' - ' -Dio_completer_behavior=none -Dio_lockless_cq=true'), - 'server_cmd_suffix': - ' 0 200', - }, - 'io-stealing-pipe-no-comp-lockless-0us-1ms': { - 'checkout': - PIPE_CHECKOUT, - 'meson_options': - ('-Dio_stealing=true -Dworker_sleep_strategy=pipe' - ' -Dio_completer_behavior=none -Dio_lockless_cq=true'), - 'server_cmd_suffix': - ' 0 1000', - }, - 'io-stealing-pipe-no-comp-lockless-200us': { - 'checkout': - PIPE_CHECKOUT, - 'meson_options': - ('-Dio_stealing=true -Dworker_sleep_strategy=pipe' - ' -Dio_completer_behavior=none -Dio_lockless_cq=true'), - 'server_cmd_suffix': - ' 200', - }, 'io-stealing-waitfd': { 'meson_options': '-Dio_stealing=true -Dworker_sleep_strategy=waitfd', 'checkout': WAITFD_CHECKOUT, @@ -251,24 +160,6 @@ FLAVORS: Flavors = { 'checkout': WAITFD_CHECKOUT, }, - 'io-stealing-waitfd-no-comp-0us-200us': { - 'meson_options': - ('-Dio_stealing=true -Dworker_sleep_strategy=waitfd -Dio_completer_behavior=none' - ), - 'server_cmd_suffix': - ' 0 200', - 'checkout': - WAITFD_CHECKOUT, - }, - 'io-stealing-waitfd-no-comp-0us-1ms': { - 'meson_options': - ('-Dio_stealing=true -Dworker_sleep_strategy=waitfd -Dio_completer_behavior=none' - ), - 'server_cmd_suffix': - ' 0 1000', - 'checkout': - WAITFD_CHECKOUT, - }, 'io-stealing-waitfd-no-comp-lockless': { 'meson_options': ('-Dio_stealing=true -Dworker_sleep_strategy=waitfd' @@ -285,24 +176,6 @@ FLAVORS: Flavors = { 'checkout': WAITFD_CHECKOUT, }, - 'io-stealing-waitfd-no-comp-lockless-0us-1ms': { - 'meson_options': - ('-Dio_stealing=true -Dworker_sleep_strategy=waitfd' - ' -Dio_completer_behavior=none -Dio_lockless_cq=true'), - 'server_cmd_suffix': - ' 0 1000', - 'checkout': - WAITFD_CHECKOUT, - }, - 'io-stealing-waitfd-no-comp-lockless-200us': { - 'meson_options': - ('-Dio_stealing=true -Dworker_sleep_strategy=waitfd' - ' -Dio_completer_behavior=none -Dio_lockless_cq=true'), - 'server_cmd_suffix': - ' 200', - 'checkout': - WAITFD_CHECKOUT, - }, 'io-notification-waitfd': { 'meson_options': '-Dio_notification=true -Dio_stealing=true -Dworker_sleep_strategy=waitfd', @@ -310,31 +183,15 @@ FLAVORS: Flavors = { }, 'io-notification-waitfd-lockless': { 'meson_options': - '-Dio_notification=true -Dio_stealing=true -Dworker_sleep_strategy=waitfd -Dio_lockless_cq=true', - 'checkout': WAITFD_CHECKOUT, - }, - 'io-notification-waitfd-no-comp': { - 'meson_options': - ('-Dio_stealing=true -Dworker_sleep_strategy=waitfd -Dio_completer_behavior=none' - ' -Dio_notification=true'), + ('-Dio_notification=true -Dio_stealing=true -Dworker_sleep_strategy=waitfd' + ' -Dio_lockless_cq=true'), 'checkout': WAITFD_CHECKOUT, }, - 'io-notification-waitfd-no-comp-0us-200us': { - 'meson_options': - ('-Dio_stealing=true -Dworker_sleep_strategy=waitfd -Dio_completer_behavior=none' - ' -Dio_notification=true'), - 'server_cmd_suffix': - ' 0 200', - 'checkout': - WAITFD_CHECKOUT, - }, - 'io-notification-waitfd-no-comp-0us-1ms': { + 'io-notification-waitfd-no-comp': { 'meson_options': ('-Dio_stealing=true -Dworker_sleep_strategy=waitfd -Dio_completer_behavior=none' ' -Dio_notification=true'), - 'server_cmd_suffix': - ' 0 1000', 'checkout': WAITFD_CHECKOUT, }, @@ -345,57 +202,17 @@ FLAVORS: Flavors = { 'checkout': WAITFD_CHECKOUT, }, - 'io-notification-waitfd-no-comp-lockless-0us-200us': { - 'meson_options': ('-Dio_stealing=true -Dworker_sleep_strategy=waitfd' - ' -Dio_completer_behavior=none -Dio_lockless_cq=true' - ' -Dio_notification=true'), - 'server_cmd_suffix': - ' 0 200', - 'checkout': - WAITFD_CHECKOUT, - }, - 'io-notification-waitfd-no-comp-lockless-0us-1ms': { - 'meson_options': ('-Dio_stealing=true -Dworker_sleep_strategy=waitfd' - ' -Dio_completer_behavior=none -Dio_lockless_cq=true' - ' -Dio_notification=true'), - 'server_cmd_suffix': - ' 0 1000', - 'checkout': - WAITFD_CHECKOUT, - }, - 'io-notification-waitfd-no-comp-lockless-200us': { - 'meson_options': ('-Dio_stealing=true -Dworker_sleep_strategy=waitfd' - ' -Dio_completer_behavior=none -Dio_lockless_cq=true' - ' -Dio_notification=true'), - 'server_cmd_suffix': - ' 200', - 'checkout': - WAITFD_CHECKOUT, - }, 'io-notification-waitfree': { 'meson_options': - '-Dio_stealing=true -Dio_notification=true -Dworker_sleep_strategy=waitfd -Dwaitfd_flags=waitFree', - 'checkout': WAITFD_CHECKOUT, - }, - 'io-notification-waitfree-0us-1ms': { - 'meson_options': - '-Dio_stealing=true -Dio_notification=true -Dworker_sleep_strategy=waitfd -Dwaitfd_flags=waitFree', - 'server_cmd_suffix': ' 0 1000', - 'checkout': WAITFD_CHECKOUT, - }, - 'io-notification-waitfree-no-comp': { - 'meson_options': - ('-Dio_completer_behavior=none -Dio_stealing=true -Dio_notification=true ' - '-Dworker_sleep_strategy=waitfd -Dwaitfd_flags=waitFree'), + ('-Dio_stealing=true -Dio_notification=true -Dworker_sleep_strategy=waitfd' + ' -Dwaitfd_flags=waitFree'), 'checkout': WAITFD_CHECKOUT, }, - 'io-notification-waitfree-no-comp-0us-1ms': { + 'io-notification-waitfree-no-comp': { 'meson_options': ('-Dio_completer_behavior=none -Dio_stealing=true -Dio_notification=true ' '-Dworker_sleep_strategy=waitfd -Dwaitfd_flags=waitFree'), - 'server_cmd_suffix': - ' 0 1000', 'checkout': WAITFD_CHECKOUT, }, @@ -407,16 +224,6 @@ FLAVORS: Flavors = { 'checkout': WAITFD_CHECKOUT, }, - 'io-notification-waitfree-no-comp-lockless-0us-1ms': { - 'meson_options': - ('-Dio_completer_behavior=none -Dio_stealing=true -Dio_notification=true ' - '-Dworker_sleep_strategy=waitfd -Dwaitfd_flags=waitFree -Dio_lockless_cq=true' - ), - 'server_cmd_suffix': - ' 0 1000', - 'checkout': - WAITFD_CHECKOUT, - }, 'no-stats': { 'meson_options': '-Dstats=False' }, @@ -437,10 +244,6 @@ FLAVORS: Flavors = { 'no-sleep': { 'meson_options': '-Dworker_sleep=false' }, - 'no-sleep-0us-1ms': { - 'meson_options': '-Dworker_sleep=false', - 'server_cmd_suffix': ' 0 1000' - }, 'sqpoll': { 'meson_options': '-Dio_uring_sq_poller=one', 'checkout': SQPOLL_CHECKOUT, @@ -500,51 +303,6 @@ FLAVORS: Flavors = { 'completer-wakeup': { 'meson_options': '-Dio_completer_behavior=maybe_wakeup' }, - 'no-sleep-computation-100us': { - 'meson_options': '-Dworker_sleep=false', - 'server_cmd_suffix': '100' - }, - 'no-sleep-no-comp-computation-100us': { - 'meson_options': - '-Dworker_sleep=false -Dio_completer_behavior=maybe_wakeup', - 'server_cmd_suffix': '100' - }, - 'no-sleep-computation-1ms': { - 'meson_options': '-Dworker_sleep=false', - 'server_cmd_suffix': ' 1000' - }, - 'no-sleep-no-comp-computation-1ms': { - 'meson_options': - '-Dworker_sleep=false -Dio_completer_behavior=maybe_wakeup', - 'server_cmd_suffix': ' 1000' - }, - 'computation-100us': { - 'server_cmd_suffix': '100' - }, - 'computation-200us': { - 'server_cmd_suffix': ' 200' - }, - 'computation-0us-200us': { - 'server_cmd_suffix': ' 0 200' - }, - 'computation-0us-1ms': { - 'server_cmd_suffix': ' 0 1000' - }, - 'completer-wakeup-computation-100us': { - 'meson_options': '-Dio_completer_behavior=maybe_wakeup', - 'server_cmd_suffix': '100' - }, - 'computation-10us': { - 'server_cmd_suffix': '10' - }, - 'completer-wakeup-computation-10us': { - 'meson_options': '-Dio_completer_behavior=maybe_wakeup', - 'server_cmd_suffix': '10' - }, - 'mutex-computation-100us': { - 'meson_options': '-Dio_cq_lock_implementation=mutex', - 'server_cmd_suffix': '100' - }, 'simple-arch': { 'meson_options': '-Dio_single_uring=true', }, @@ -564,22 +322,6 @@ FLAVORS: Flavors = { '20-nopin': { 'server_cmd_prefix': ENV_CMD_20_WORKER + ' PIN_WORKERS=false', }, - '20-computation-100us': { - 'server_cmd_prefix': ENV_CMD_20_WORKER, - 'server_cmd_suffix': '100' - }, - '20-nopin-computation-100us': { - 'server_cmd_prefix': ENV_CMD_20_WORKER + ' PIN_WORKERS=false', - 'server_cmd_suffix': '100' - }, - '20-computation-200us': { - 'server_cmd_prefix': ENV_CMD_20_WORKER, - 'server_cmd_suffix': '200' - }, - '20-nopin-computation-200us': { - 'server_cmd_prefix': ENV_CMD_20_WORKER + ' PIN_WORKERS=false', - 'server_cmd_suffix': '200' - }, 'linked-futures': { 'checkout': LINKED_FUTURE_CHECKOUT, }, @@ -595,31 +337,15 @@ FLAVORS: Flavors = { 'bdqfa': { 'checkout': BATCH_DEQUEUE_ANYWHERE, }, - 'bdqfa-200us': { - 'checkout': BATCH_DEQUEUE_ANYWHERE, - 'server_cmd_suffix': '200' - }, 'bdqfa-20-nopin': { 'checkout': BATCH_DEQUEUE_ANYWHERE, 'server_cmd_prefix': ENV_CMD_20_WORKER + ' PIN_WORKERS=false', }, - 'bdqfa-20-nopin-200us': { - 'checkout': BATCH_DEQUEUE_ANYWHERE, - 'server_cmd_prefix': ENV_CMD_20_WORKER + ' PIN_WORKERS=false', - 'server_cmd_suffix': '200' - }, 'laws': { 'meson_options': ('-Ddefault_scheduling_strategy=locality_aware_work_stealing ' '-Dset_affinity_on_block=true'), }, - 'laws-200us': { - 'meson_options': - ('-Ddefault_scheduling_strategy=locality_aware_work_stealing ' - '-Dset_affinity_on_block=true'), - 'server_cmd_suffix': - '200' - }, 'laws-20-nopin': { 'server_cmd_prefix': ENV_CMD_20_WORKER + ' PIN_WORKERS=false', @@ -627,15 +353,6 @@ FLAVORS: Flavors = { ('-Ddefault_scheduling_strategy=locality_aware_work_stealing ' '-Dset_affinity_on_block=true'), }, - 'laws-20-nopin-200us': { - 'server_cmd_prefix': - ENV_CMD_20_WORKER + ' PIN_WORKERS=false', - 'meson_options': - ('-Ddefault_scheduling_strategy=locality_aware_work_stealing ' - '-Dset_affinity_on_block=true'), - 'server_cmd_suffix': - '200' - }, 'laws-bdqfa': { 'checkout': BATCH_DEQUEUE_ANYWHERE, @@ -643,15 +360,6 @@ FLAVORS: Flavors = { ('-Ddefault_scheduling_strategy=locality_aware_work_stealing ' '-Dset_affinity_on_block=true'), }, - 'laws-bdqfa-200us': { - 'checkout': - BATCH_DEQUEUE_ANYWHERE, - 'meson_options': - ('-Ddefault_scheduling_strategy=locality_aware_work_stealing ' - '-Dset_affinity_on_block=true'), - 'server_cmd_suffix': - '200' - }, 'laws-bdqfa-20-nopin': { 'checkout': BATCH_DEQUEUE_ANYWHERE, @@ -661,19 +369,37 @@ FLAVORS: Flavors = { ('-Ddefault_scheduling_strategy=locality_aware_work_stealing ' '-Dset_affinity_on_block=true'), }, - 'laws-bdqfa-20-nopin-200us': { - 'checkout': - BATCH_DEQUEUE_ANYWHERE, - 'server_cmd_prefix': - ENV_CMD_20_WORKER + ' PIN_WORKERS=false', - 'meson_options': - ('-Ddefault_scheduling_strategy=locality_aware_work_stealing ' - '-Dset_affinity_on_block=true'), - 'server_cmd_suffix': - '200' - }, } +S2NS = {'s': 10**6, 'ms': 10**3, 'us': 1} +COMPUTATION_RE = r'(?P<value>\d+)(?P<unit>[m|u]s)' + + +def generate_computation_flavors(flavors: Flavors, + computation_descs: list[str]) -> Flavors: + """Generate emper flavors with fixed or even computation""" + comp_flavors = {} + for flavor, flavor_dict in flavors.items(): + for computation_desc in computation_descs: + cmd_suffix = '' + parts = computation_desc.split('-') + for part in parts: + match = re.match(COMPUTATION_RE, part) + assert match + computation, unit = match.groups() + cmd_suffix += f' {int(computation) * S2NS[unit]}' + + comp_flavor_dict = flavor_dict.copy() + # strip first newline since the prepare_flavors() will add it back + comp_flavor_dict['server_cmd_suffix'] = cmd_suffix[1:] + comp_flavors[f'{flavor}-{computation_desc}'] = comp_flavor_dict + + return comp_flavors + + +COMPUTATION_DESCRIPTIONS = ['200us', '0us-1ms'] +FLAVORS.update(generate_computation_flavors(FLAVORS, COMPUTATION_DESCRIPTIONS)) + def repo_add_muhq_remote(): """Add muhq remote to emper repo""" diff --git a/eval-muhq-ma.sh b/eval-muhq-ma.sh index f91ea1bdbee7d82dc3a962ef9d6b4a5394b60ad3..b75e5a96298841ee449fecadbcfebd6295c5f6c2 100755 --- a/eval-muhq-ma.sh +++ b/eval-muhq-ma.sh @@ -43,7 +43,7 @@ echo 'throughput-arguments:' "${COMMON_ARGS_THROUGHPUT[@]}" echo 'latency-arguments:' "${COMMON_ARGS_LATENCY[@]}" # Baseline measurements -./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f vanilla computation-200us -- emper +./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f vanilla vanilla-200us -- emper # No sleep measurements ./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f no-sleep no-sleep-0us-1ms -- emper @@ -76,7 +76,7 @@ echo 'latency-arguments:' "${COMMON_ARGS_LATENCY[@]}" # Measurements showing completer, stealing notification benefits with computation ./eval.py "${COMMON_ARGS_THROUGHPUT[@]}" -f \ - computation-0us-1ms io-stealing-0us-1ms \ + vanilla-0us-1ms io-stealing-0us-1ms \ pipe-0us-1ms pipe-no-comp-0us-1ms \ io-stealing-pipe-no-comp-0us-1ms \ waitfd-0us-1ms waitfd-no-comp-0us-1ms \ @@ -105,7 +105,7 @@ echo 'latency-arguments:' "${COMMON_ARGS_LATENCY[@]}" #-- emper # Latency evaluation -./eval.py "${COMMON_ARGS_LATENCY[@]}" -f computation-200us computation-0us-1ms no-sleep-0us-1ms \ +./eval.py "${COMMON_ARGS_LATENCY[@]}" -f vanilla-200us vanilla-0us-1ms no-sleep-0us-1ms \ -- emper go-200us tokio-200us ./eval.py "${COMMON_ARGS_LATENCY[@]}" -f \ diff --git a/muhq-ma-plots.sh b/muhq-ma-plots.sh index 0c1d657b5ec57b0d830f13c6eb9816029692d61a..78090d604a43503ee5cbe92d51aab7db9385e14a 100755 --- a/muhq-ma-plots.sh +++ b/muhq-ma-plots.sh @@ -25,34 +25,34 @@ ${PLOT} -o "$OUT"/ma-linked-futures.tex -i emper-vanilla emper-linked-futures -- ${PLOT} -o "$OUT"/ma-emper.tex -i 'emper*' -- "$THROUGHPUT_DATA" ${PLOT} -o "$OUT"/ma-pipe.tex -i emper-vanilla '*pipe*' -ix '*0us-1ms' -- "$THROUGHPUT_DATA" -${PLOT} -o "$OUT"/ma-pipe-delay.tex -i emper-computation-0us-1ms '*pipe*0us-1ms' -- "$THROUGHPUT_DATA" +${PLOT} -o "$OUT"/ma-pipe-delay.tex -i emper-vanilla-0us-1ms '*pipe*0us-1ms' -- "$THROUGHPUT_DATA" ${PLOT} -o "$OUT"/ma-waitfd.tex -i emper-vanilla '*waitfd*' -ix '*0us-1ms' -- "$THROUGHPUT_DATA" -${PLOT} -o "$OUT"/ma-waitfd-delay.tex -i emper-computation-0us-1ms '*waitfd*0us-1ms*' -- "$THROUGHPUT_DATA" +${PLOT} -o "$OUT"/ma-waitfd-delay.tex -i emper-vanilla-0us-1ms '*waitfd*0us-1ms*' -- "$THROUGHPUT_DATA" ${PLOT} -o "$OUT"/ma-stealing.tex -i emper-vanilla '*io-stealing*' -ix '*0us-1ms' -- "$THROUGHPUT_DATA" -${PLOT} -o "$OUT"/ma-stealing-delay.tex -i '*computation*0us-1ms' '*stealing*0us-1ms' -- "$THROUGHPUT_DATA" +${PLOT} -o "$OUT"/ma-stealing-delay.tex -i '*vanilla*0us-1ms' '*stealing*0us-1ms' -- "$THROUGHPUT_DATA" ${PLOT} -o "$OUT"/ma-notification.tex -i emper-vanilla '*notification*' -ix '*0us-1ms' -- "$THROUGHPUT_DATA" ${PLOT} -o "$OUT"/ma-notification-delay.tex -i '*notification*0us-1ms' -- "$THROUGHPUT_DATA" ${PLOT} -o "$OUT"/ma-base-strategies.tex -i emper-vanilla 'emper-simple-arch*' emper-pipe emper-waitfd -ix '*0us-1ms' -- "$THROUGHPUT_DATA" ${PLOT} -o "$OUT"/ma-strategies.tex -i emper-vanilla '*pipe*' '*waitfd*' -ix '*0us-1ms' -- "$THROUGHPUT_DATA" -${PLOT} -o "$OUT"/ma-strategies-delay.tex -i '*computation*0us-1ms' '*pipe*0us-1ms' '*waitfd*-0us-1ms' -- "$THROUGHPUT_DATA" +${PLOT} -o "$OUT"/ma-strategies-delay.tex -i '*vanilla*0us-1ms' '*pipe*0us-1ms' '*waitfd*-0us-1ms' -- "$THROUGHPUT_DATA" ${PLOT} -o "$OUT"/ma-all.tex -- "$THROUGHPUT_DATA" ${PLOT} -o "$OUT"/ma-no-delay.tex -ix '*1ms' -- "$THROUGHPUT_DATA" ${PLOT} -o "$OUT"/ma-delay.tex -i '*1ms' -- "$THROUGHPUT_DATA" ${PLOT} -o "$OUT"/ma-runtimes.tex -i emper-vanilla go tokio -- "$THROUGHPUT_DATA" -${PLOT} -o "$OUT"/ma-runtimes-delay.tex -i '*computation*200us' 'go*200us' 'tokio*200us' -- "$THROUGHPUT_DATA" +${PLOT} -o "$OUT"/ma-runtimes-delay.tex -i '*vanilla*200us' 'go*200us' 'tokio*200us' -- "$THROUGHPUT_DATA" -${PLOT_LATENCY} ${LATENCY_DATA}/{emper-computation,go,tokio}-200us/$LATENCIES > "$OUT"/ma-runtime-latency.tex +${PLOT_LATENCY} ${LATENCY_DATA}/{emper-vanilla,go,tokio}-200us/$LATENCIES > "$OUT"/ma-runtime-latency.tex -${PLOT_LATENCY} ${LATENCY_DATA}/*{waitfd,pipe,computation}-0us-1ms/$LATENCIES > "$OUT"/ma-strategy-latency.tex +${PLOT_LATENCY} ${LATENCY_DATA}/emper-{waitfd,pipe,vanilla}-0us-1ms/$LATENCIES > "$OUT"/ma-strategy-latency.tex -${PLOT_LATENCY} ${LATENCY_DATA}/*{pipe*,computation}-0us-1ms/$LATENCIES > "$OUT"/ma-pipe-latency.tex -${PLOT_LATENCY} ${LATENCY_DATA}/*{waitfd*,notification*,computation}-0us-1ms/$LATENCIES > "$OUT"/ma-waitfd-latency.tex +${PLOT_LATENCY} ${LATENCY_DATA}/emper-{pipe*,vanilla}-0us-1ms/$LATENCIES > "$OUT"/ma-pipe-latency.tex +${PLOT_LATENCY} ${LATENCY_DATA}/emper-{waitfd*,notification*,vanilla}-0us-1ms/$LATENCIES > "$OUT"/ma-waitfd-latency.tex cd "$OUT"