Skip to content

Commit

Permalink
do-release: sketch + a bunch of fixes from bench-all
Browse files Browse the repository at this point in the history
qemu: monitor command from guest
  • Loading branch information
cirosantilli committed Aug 9, 2018
1 parent 380000c commit f5a997b
Show file tree
Hide file tree
Showing 7 changed files with 48 additions and 18 deletions.
19 changes: 19 additions & 0 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6899,6 +6899,10 @@ Getting everything to work required careful choice of QEMU command line options:
* https://stackoverflow.com/questions/49716931/how-to-run-qemu-with-nographic-and-monitor-but-still-be-able-to-send-ctrlc-to/49751144#49751144
* https://unix.stackexchange.com/questions/167165/how-to-pass-ctrl-c-to-the-guest-when-running-qemu-with-nographic/436321#436321

==== QEMU monitor from guest

Peter Maydell said potentially not possible nicely as of August 2018: https://stackoverflow.com/questions/51747744/how-to-run-a-qemu-monitor-command-from-inside-the-guest/51764110#51764110

=== Debug the emulator

When you start hacking QEMU or gem5, it is useful to see what is going on inside the emulator themselves.
Expand Down Expand Up @@ -8855,6 +8859,9 @@ All benchmarks were run on the <<p51>> machine, unless stated otherwise.
Run all benchmarks and upload the results:

....
cd ..
git clone https://github.com/cirosantilli/linux-kernel-module-cheat-regression
cd -
./bench-all -A
....

Expand Down Expand Up @@ -9391,6 +9398,18 @@ This can be used to check the determinism of:
* <<norandmaps>>
* <<qemu-record-and-replay>>

==== Releases

This is not yet super stable, but one day maybe:

....
./do-release
....

Source: link:do-release[].

This should in particular enable <<prebuilt>>.

=== About

This project is for people who want to learn and modify low level system components:
Expand Down
13 changes: 4 additions & 9 deletions bench-all
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
#!/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.
. "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/common"
set -x
bench_build=false
Expand Down Expand Up @@ -44,7 +42,6 @@ shift "$(($OPTIND - 1))"
comment="${1:-}"

# Create output directory.
sha="$(git log -1 --format="%H")"
benchmark_repo="${common_root_dir}/../linux-kernel-module-cheat-regression"
mkdir -p "$benchmark_repo"
last_dir="$(ls "$benchmark_repo" | grep -E '^[0-9]' | tail -n 1)"
Expand All @@ -54,8 +51,7 @@ else
seq_id=0
fi
seq_id="$(printf '%0.4d' "$seq_id")"
sha="$(git log -1 --format="%H")"
dir_basename="${seq_id}_${sha}"
dir_basename="${seq_id}_${common_sha}"
new_dir="${benchmark_repo}/${dir_basename}"
mkdir "$new_dir"

Expand All @@ -64,7 +60,7 @@ if "$bench_build"; then
common_suffix=bench
common_setup
rm -rf "$common_out_arch_dir"
./build -a "$common_arch" -B 'BR2_CCACHE=n' -s "$suffix"
./build -a "$common_arch" -B 'BR2_CCACHE=n' -s "$common_suffix"
cp "${common_build_dir}/build-time.log" "${new_dir}/build-time-${common_arch}.log"
rm -rf "$common_out_arch_dir"
fi
Expand All @@ -90,16 +86,15 @@ if "$bench_gem5_build"; then
arches='x86_64 arm'
for common_arch in $arches; do
common_setup
cd "${common_root_dir}/gem5/gem5"
cd "${common_gem5_src_dir}"
git clean -xdf
cd "${common_root_dir}/gem5"
results_file="${common_gem5_out_dir}/bench-build.txt"
gem5_outdir="${common_out_dir}/bench_build"
rm -fr "$results_file" "${gem5_outdir}"
# TODO understand better: --foreground required otherwise we cannot
# kill the build with Ctrl+C if something goes wrong, can be minimized to:
# bash -c "eval 'timeout 5 sleep 3'"
common_bench_cmd "timeout --foreground 900 ./build -a '$common_arch' -o '${gem5_outdir}'" "$results_file"
common_bench_cmd "timeout --foreground 900 ../build -a '$common_arch' -o '${gem5_outdir}'" "$results_file"
cp "$results_file" "${new_dir}/gem5-bench-build-${common_arch}.txt"
cd "${common_root_dir}/gem5/gem5"
git clean -xdf
Expand Down
2 changes: 1 addition & 1 deletion build
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ kernel_config_fragments=
post_script_args=
qemu_sdl='--enable-sdl --with-sdlabi=2.0'
v=0
while getopts 'a:B:b:C:c:fGgj:hIiK:kL:lM:p:Q:qSst::v' OPT; do
while getopts 'a:B:b:C:c:fGgj:hIiK:kL:lM:p:Q:qSs:t:v' OPT; do
case "$OPT" in
a)
common_arch="$OPTARG"
Expand Down
3 changes: 2 additions & 1 deletion common
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ common_setup() {
common_buildroot_dir="${common_root_dir}/buildroot"
common_arch_dir="$common_arch"
if [ -n "$common_suffix" ]; then
common_arch_dir="${arch_dir}-${common_suffix}"
common_arch_dir="${common_arch_dir}-${common_suffix}"
fi
common_out_arch_dir="${common_out_dir}/${common_arch_dir}"
common_buildroot_out_dir="${common_out_arch_dir}/buildroot"
Expand Down Expand Up @@ -146,6 +146,7 @@ common_gem5_worktree=
common_linux_variant=default
common_qemu_variant=default
common_run_id=0
common_sha="$(git log -1 --format="%H")"
common_suffix=

f="${common_data_dir}/config"
Expand Down
16 changes: 16 additions & 0 deletions do-release
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/usr/bin/env bash
. "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/common"
common_setup
./build-all
./zip-img
tag="sha-${common_sha}"
upload_basename="images-${common_sha}.zip"
git tag "$tag"
git push --tags
#curl "https://api.github.com/repos/cirosantilli/linux-kernel-module-cheat/releases/tags/${tag}/assets?access_token=$(cat data/access_token)&tag_name=${upload_basename}" \
# --header 'Content-Type: application/zip' \
# --upload-file "${common_out_dir}/${upload_basename}" \
# -H 'Accept: application/vnd.github.v3+json' \
# -X POST \
#;
./bench-all -u
2 changes: 0 additions & 2 deletions run
Original file line number Diff line number Diff line change
Expand Up @@ -364,7 +364,6 @@ ${qemu_common} \
-append '${root} ${extra_append}' \\
-cpu cortex-a57 \\
${virtio_gpu_pci} \
-kernel '${common_images_dir}/Image' \\
${extra_flags} \
"
;;
Expand All @@ -380,7 +379,6 @@ ${qemu_common} \
-M malta \\
-append '${root} ${extra_append}' \\
-cpu I6400 \\
-kernel '${common_vmlinux}' \\
${extra_flags} \
"
;;
Expand Down
11 changes: 6 additions & 5 deletions zip-img
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
#!/usr/bin/env bash
set -eu
outfile="out/out.zip"
. "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/common"
common_setup
outfile="${common_out_dir}/lkmc-${common_sha}.zip"
rm -f "$outfile"
for arch in x86_64 arm aarch64; do
img_dir="out/${arch}/buildroot/images"
rm -f "${img_dir}/rootfs.ext2"
zip -r "$outfile" "${img_dir}"
common_setup
rm -f "${common_images_dir}/rootfs.ext2"
zip -r "$outfile" "$common_images_dir"
done

0 comments on commit f5a997b

Please sign in to comment.