mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-13 20:12:26 +00:00
Was completely broken due to confusion between --gem5-readfile and a common variable with the same name which referred to the file path... OMG. Conclusion: no one has ever used this tutorial! Improve ./gem5.sh documentation. Also fix ./gem5-bench-dhrystone.
27 lines
1.1 KiB
Bash
Executable File
27 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# https://cirosantilli.com/linux-kernel-module-cheat#gem5-run-benchmark
|
|
|
|
set -eu
|
|
root_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)"
|
|
outfile="${root_dir}/out/gem5-bench-dhrystone.txt"
|
|
arch=aarch64
|
|
cmd="./run --arch '$arch' --emulator gem5 --eval-after './gem5.sh'"
|
|
|
|
# These cache sizes roughly match the ARM Cortex A75
|
|
# https://en.wikipedia.org/wiki/ARM_Cortex-A75
|
|
restore='--gem5-restore 1 -- --cpu-type=HPI --restore-with-cpu=HPI --caches --l2cache --l1d_size=64kB --l1i_size=64kB --l2_size=256kB'
|
|
|
|
# Generate a checkpoint after Linux boots, using the faster and less detailed CPU.
|
|
# The boot takes a while, be patient young Padawan.
|
|
eval "$cmd"
|
|
|
|
printf 'n cycles\n' > "$outfile"
|
|
for n in 1000 10000 100000; do
|
|
# Restore the most recent checkpoint taken with the more detailed and slower HPI CPU,
|
|
# and run the benchmark with different parameters. We skip the boot completely, saving time!
|
|
eval "${cmd} --gem5-readfile 'm5 resetstats;dhrystone ${n};m5 dumpstats' ${restore}" &>/dev/null
|
|
printf "${n} " >> "$outfile"
|
|
./gem5-stat --arch "$arch" | head -n 1 >> "$outfile"
|
|
done
|