From 449b7a8ec73a8c915a17f58363add40c20899a7f Mon Sep 17 00:00:00 2001 From: Florian Fischer <florian.fischer@muhq.space> Date: Mon, 2 Aug 2021 18:15:08 +0200 Subject: [PATCH] add dataref target --- Makefile | 18 +++++++++++------- bench.c | 3 +-- stats.c | 2 +- tools/yaml2dataref.sh | 18 ++++++++++++++++++ 4 files changed, 31 insertions(+), 10 deletions(-) create mode 100755 tools/yaml2dataref.sh diff --git a/Makefile b/Makefile index 5cd7361..6942f4a 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,6 @@ BENCH_MAIN := bench.c SYSCALLS := blocking io-uring io-uring-sqpoll io-uring-no-syscall epoll paio-sig paio-thrd -STATS ?= - OBJ := $(addprefix bench-,$(SYSCALLS)) LDFLAGS := -luring -pthread -lrt -lm @@ -10,20 +8,26 @@ LDFLAGS := -luring -pthread -lrt -lm CFLAGS := -Werror -Wall -g -O3 # CFLAGS := -Werror -Wall -g -O0 -.PHONY: all clean eval eval-stats docker-eval docker-eval-stats check +.PHONY: all clean eval stats dataref docker-eval docker-stats docker-dataref check eval: all - @for syscall in $(SYSCALLS); do ./bench-$$syscall $(STATS); done + @for syscall in $(SYSCALLS); do echo -n "$$syscall "; ./bench-$$syscall; done + +stats: + @for syscall in $(SYSCALLS); do echo "$$syscall:"; ./bench-$$syscall --stats; done -eval-stats: - @$(MAKE) STATS=--stats eval +dataref: + @$(MAKE) eval-stats | tools/yaml2dataref.sh docker-eval: ./docker.sh make eval -docker-eval-stats: +docker-stats: ./docker.sh make eval-stats +docker-dataref: + ./docker.sh make dataref + all: $(OBJ) define generateTargets diff --git a/bench.c b/bench.c index a1d9ef8..353ddd6 100644 --- a/bench.c +++ b/bench.c @@ -54,13 +54,12 @@ int main(int argc, char *argv[]) { } if (print_stats) { - printf("%s:\n", argv[0]); print_desc_stats("nanos", " ", nanos, exp_iterations); print_desc_stats("cycles", " ", cycles, exp_iterations); } else { uint64_t avg_nanos = calc_mean(nanos, exp_iterations); uint64_t avg_cycles = calc_mean(cycles, exp_iterations); - printf("%s avg-nanos: %lu, avg-cycles: %lu\n", argv[0], avg_nanos, avg_cycles); + printf("avg-nanos: %lu, avg-cycles: %lu\n", avg_nanos, avg_cycles); } free(nanos); diff --git a/stats.c b/stats.c index b7a621d..70a581f 100644 --- a/stats.c +++ b/stats.c @@ -62,7 +62,7 @@ void print_desc_stats(const char* name, const char* indentation, const uint64_t* const uint64_t var = calc_var(data, size, mean); const uint64_t std = (uint64_t)sqrt((double)var); - printf("%s%s\n", indentation, name); + printf("%s%s:\n", indentation, name); printf("%s%smin: %lu\n", indentation, indentation, min); printf("%s%smax: %lu\n", indentation, indentation, max); printf("%s%smedian: %lu\n", indentation, indentation, median); diff --git a/tools/yaml2dataref.sh b/tools/yaml2dataref.sh new file mode 100755 index 0000000..44de499 --- /dev/null +++ b/tools/yaml2dataref.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# taken from here: +# https://stackoverflow.com/questions/5014632/how-can-i-parse-a-yaml-file-from-a-linux-shell-script +s='[[:space:]]*' +w='[a-zA-Z0-9_]*' +fs=$(echo @|tr @ '\034') +sed -ne "s|^\($s\):|\1|" \ + -e "s|^\($s\)\($w\)$s:${s}[\"']\(.*\)[\"']$s\$|\1$fs\2$fs\3|p" \ + -e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p" | +awk -F"$fs" '{ + indent = length($1)/2; + vname[indent] = $2; + for (i in vname) {if (i > indent) {delete vname[i]}} + if (length($3) > 0) { + vn=""; for (i=0; i<indent; i++) {vn=(vn)(vname[i])("/")} + printf("\\setdref{%s%s}{%s}\n", vn, $2, $3); + } +}' -- GitLab