diff --git a/README.adoc b/README.adoc index 14ce22e..fe8b233 100644 --- a/README.adoc +++ b/README.adoc @@ -4792,52 +4792,11 @@ One possibility we could play with is to build loadable modules instead of built cat out/bench-boot.txt .... -Output on <> fb317f4778633692b91c9174224dccc6a3a02893: +Benchmark results will be kept at: https://github.com/cirosantilli/linux-kernel-module-cheat-regression -.... -cmd ./run -a x86_64 -E '/poweroff.out' -time 4.00 -exit_status 0 -cmd ./run -a x86_64 -E '/poweroff.out' -K -time 1.32 -exit_status 0 -cmd ./run -a x86_64 -E '/poweroff.out' -T exec_tb -time 5.00 -exit_status 0 -instructions 7014180 -cmd ./run -a x86_64 -E 'm5 exit' -g -time 389.39 -exit_status 0 -instructions 645396324 -cmd ./run -a arm -E '/poweroff.out' -time 1.82 -exit_status 0 -cmd ./run -a arm -E '/poweroff.out' -T exec_tb -time 2.11 -exit_status 0 -instructions 687532 -cmd ./run -a arm -E 'm5 exit' -g -time 88.59 -exit_status 0 -instructions 142359498 -cmd ./run -a aarch64 -E '/poweroff.out' -time 1.34 -exit_status 0 -cmd ./run -a aarch64 -E '/poweroff.out' -T exec_tb -time 1.35 -exit_status 0 -instructions 179564 -cmd ./run -a aarch64 -E 'm5 exit' -g -time 58.18 -exit_status 0 -instructions 116389714 -cmd ./run -a aarch64 -E 'm5 exit' -g -- --cpu-type=HPI --caches --l2cache --l1d_size=1024kB --l1i_size=1024kB --l2_size=1024kB --l3_size=1024kB -time 355.81 -exit_status 0 -instructions 116508439 -.... +Output fb317f4778633692b91c9174224dccc6a3a02893: -TODO the following takes more than 1 hour to finish: +TODO the following takes more than 1 hour to finish on the <>: .... cmd ./run -a arm -E 'm5 exit' -g -- --caches --cpu-type=HPI diff --git a/bench-all b/bench-all new file mode 100755 index 0000000..a1ad20b --- /dev/null +++ b/bench-all @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# Run all benchmarks for this repo, and save the results to the +# benchmark repo, which should be cloned at ../linux-kernel-module-cheat-benchmarks. +# +# We will only include here things which are likely to change due to Buildroot / Linux +# kernel configuration changes. This excludes for example: +# +# * ./gem5-bench-caches: basically only benchmarks gem5 itself, +# since it makes no syscalls on the main loop (checked with strace). +# * gem5 built time +set -eu +. common +#./build-all +#./bench-boot +sha="$(git log -1 --format="%H")" +benchmark_repo=../linux-kernel-module-cheat-regression +last_dir="$(ls "$benchmark_repo" | grep -E '^[0-9]' | tail -n 1)" +if [ -n "$last_dir" ]; then + seq_id="$(("$(echo "$last_dir" | sed -E 's/_.*//')" + 1))" +else + seq_id=0 +fi +seq_id="$(printf '%0.4d' "$seq_id")" +sha="$(git log -1 --format="%H")" +new_dir="${benchmark_repo}/${seq_id}_${sha}" +mkdir "$new_dir" +cp "$common_bench_boot" "$new_dir" +cd "$benchmark_repo" +git add . +git commit -m "$new_dir" +git push diff --git a/bench-boot b/bench-boot index 296268f..bf14c79 100755 --- a/bench-boot +++ b/bench-boot @@ -1,21 +1,20 @@ #!/usr/bin/env bash set -eu . common -results_file="${out_dir}/bench-boot.txt" caches='--caches --l2cache --l1d_size=1024kB --l1i_size=1024kB --l2_size=1024kB --l3_size=1024kB' bench() ( - common_bench_cmd "./run -a ${1}" "$results_file" + common_bench_cmd "./run -a ${1}" "$common_bench_boot" ) gem5_insts() ( - printf "instructions $(./gem5-stat -a "$1" sim_insts)\n" >> "$results_file" + printf "instructions $(./gem5-stat -a "$1" sim_insts)\n" >> "$common_bench_boot" ) qemu_insts() ( arch="$1" ./qemu-trace2txt -a "$arch" set_common_vars "$arch" - printf "instructions $(wc -l "${qemu_trace_txt_file}" | cut -d' ' -f1)\n" >> "$results_file" + printf "instructions $(wc -l "${qemu_trace_txt_file}" | cut -d' ' -f1)\n" >> "$common_bench_boot" ) -rm -f "${results_file}" +rm -f "${common_bench_boot}" arch=x86_64 bench "$arch -E '/poweroff.out'" diff --git a/common b/common index 939c52f..0a3c53e 100644 --- a/common +++ b/common @@ -41,6 +41,7 @@ set_common_vars() { } root_dir="$(pwd)" out_dir="${root_dir}/out" +common_bench_boot="${out_dir}/bench-boot.txt" data_dir="${root_dir}/data" p9_dir="${data_dir}/9p" readfile_file="${data_dir}/readfile"