mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-26 03:31:36 +01:00
readfile moved into run dir to allow multiple parallel runs
Set with --gem5-readefile helper
This commit is contained in:
21
README.adoc
21
README.adoc
@@ -7088,10 +7088,13 @@ time \
|
|||||||
gem5 full system:
|
gem5 full system:
|
||||||
|
|
||||||
....
|
....
|
||||||
printf 'm5 exit' > data/readfile
|
time \
|
||||||
./run --arch arm --gem5 --eval-busybox '/gem5.sh'
|
./run \
|
||||||
printf 'dhrystone 100000' > data/readfile
|
--arch arm \
|
||||||
time ./run --arch arm --gem5-restore 1 --gem5
|
--eval-busybox '/gem5.sh' \
|
||||||
|
--gem5
|
||||||
|
--gem5-readfile 'dhrystone 100000' \
|
||||||
|
;
|
||||||
....
|
....
|
||||||
|
|
||||||
QEMU user mode:
|
QEMU user mode:
|
||||||
@@ -7645,25 +7648,21 @@ restore='-l 1 -- --cpu-type=HPI --restore-with-cpu=HPI --caches --l2cache --l1d_
|
|||||||
|
|
||||||
# Generate a checkpoint after Linux boots, using the faster and less detailed CPU.
|
# Generate a checkpoint after Linux boots, using the faster and less detailed CPU.
|
||||||
# The boot takes a while, be patient young Padawan.
|
# The boot takes a while, be patient young Padawan.
|
||||||
printf '' > data/readfile
|
|
||||||
eval "$cmd"
|
eval "$cmd"
|
||||||
|
|
||||||
# Restore the most recent checkpoint taken with the more detailed and slower HPI CPU,
|
# Restore the most recent checkpoint taken with the more detailed and slower HPI CPU,
|
||||||
# and run the benchmark with parameter 1.000. We skip the boot completely, saving time!
|
# and run the benchmark with parameter 1.000. We skip the boot completely, saving time!
|
||||||
printf 'dhrystone 1000' > data/readfile
|
eval "${cmd} --gem5-readfile 'dhrystone 1000' ${restore}"
|
||||||
eval "${cmd} ${restore}"
|
|
||||||
./gem5-stat -a "$arch"
|
./gem5-stat -a "$arch"
|
||||||
|
|
||||||
# Now run again with another parameter 10.000.
|
# Now run again with another parameter 10.000.
|
||||||
# This one should take more cycles!
|
# This one should take more cycles!
|
||||||
printf 'dhrystone 10000' > data/readfile
|
eval "${cmd} --gem5-readfile 'dhrystone 10000' ${restore}"
|
||||||
eval "${cmd} ${restore}"
|
|
||||||
./gem5-stat -a "$arch"
|
./gem5-stat -a "$arch"
|
||||||
|
|
||||||
# Get an interactive shell at the end of the restore
|
# Get an interactive shell at the end of the restore
|
||||||
# if you need to debug something more interactively.
|
# if you need to debug something more interactively.
|
||||||
printf 'sh' > data/readfile
|
eval "${cmd} --gem5-readfile 'sh' ${restore}"
|
||||||
eval "${cmd} ${restore}"
|
|
||||||
....
|
....
|
||||||
|
|
||||||
The `gem5-stats` commands output the approximate number of CPU cycles it took Dhrystone to run.
|
The `gem5-stats` commands output the approximate number of CPU cycles it took Dhrystone to run.
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ root_dir = os.path.dirname(os.path.abspath(__file__))
|
|||||||
data_dir = os.path.join(root_dir, 'data')
|
data_dir = os.path.join(root_dir, 'data')
|
||||||
p9_dir = os.path.join(data_dir, '9p')
|
p9_dir = os.path.join(data_dir, '9p')
|
||||||
gem5_non_default_src_root_dir = os.path.join(data_dir, 'gem5')
|
gem5_non_default_src_root_dir = os.path.join(data_dir, 'gem5')
|
||||||
gem5_readfile_file = os.path.join(data_dir, 'readfile')
|
|
||||||
out_dir = os.path.join(root_dir, 'out')
|
out_dir = os.path.join(root_dir, 'out')
|
||||||
bench_boot = os.path.join(out_dir, 'bench-boot.txt')
|
bench_boot = os.path.join(out_dir, 'bench-boot.txt')
|
||||||
common_dir = os.path.join(out_dir, 'common')
|
common_dir = os.path.join(out_dir, 'common')
|
||||||
@@ -346,6 +345,7 @@ def setup(parser, **extra_args):
|
|||||||
this.m5out_dir = os.path.join(this.gem5_run_dir, 'm5out')
|
this.m5out_dir = os.path.join(this.gem5_run_dir, 'm5out')
|
||||||
this.stats_file = os.path.join(this.m5out_dir, 'stats.txt')
|
this.stats_file = os.path.join(this.m5out_dir, 'stats.txt')
|
||||||
this.trace_txt_file = os.path.join(this.m5out_dir, 'trace.txt')
|
this.trace_txt_file = os.path.join(this.m5out_dir, 'trace.txt')
|
||||||
|
this.gem5_readfile = os.path.join(this.gem5_run_dir, 'readfile')
|
||||||
this.gem5_termout_file = os.path.join(this.gem5_run_dir, 'termout.txt')
|
this.gem5_termout_file = os.path.join(this.gem5_run_dir, 'termout.txt')
|
||||||
this.qemu_run_dir = os.path.join(this.out_arch_dir, 'qemu', str(args.run_id))
|
this.qemu_run_dir = os.path.join(this.out_arch_dir, 'qemu', str(args.run_id))
|
||||||
this.qemu_trace_basename = 'trace.bin'
|
this.qemu_trace_basename = 'trace.bin'
|
||||||
@@ -370,7 +370,7 @@ def setup(parser, **extra_args):
|
|||||||
this.executable = this.qemu_executable
|
this.executable = this.qemu_executable
|
||||||
this.run_dir = this.qemu_run_dir
|
this.run_dir = this.qemu_run_dir
|
||||||
this.termout_file = this.qemu_termout_file
|
this.termout_file = this.qemu_termout_file
|
||||||
this.gem5_config_dir = os.path.join(this.gem5_src_dir, 'config')
|
this.gem5_config_dir = os.path.join(this.gem5_src_dir, 'configs')
|
||||||
this.gem5_se_file = os.path.join(this.gem5_config_dir, 'example', 'se.py')
|
this.gem5_se_file = os.path.join(this.gem5_config_dir, 'example', 'se.py')
|
||||||
this.gem5_fs_file = os.path.join(this.gem5_config_dir, 'example', 'fs.py')
|
this.gem5_fs_file = os.path.join(this.gem5_config_dir, 'example', 'fs.py')
|
||||||
this.run_cmd_file = os.path.join(this.run_dir, 'run.sh')
|
this.run_cmd_file = os.path.join(this.run_dir, 'run.sh')
|
||||||
|
|||||||
9
run
9
run
@@ -16,6 +16,7 @@ defaults = {
|
|||||||
'extra_emulator_args': [],
|
'extra_emulator_args': [],
|
||||||
'gem5_biglittle': False,
|
'gem5_biglittle': False,
|
||||||
'gem5_exe_args': '',
|
'gem5_exe_args': '',
|
||||||
|
'gem5_readfile': '',
|
||||||
'gem5_restore': None,
|
'gem5_restore': None,
|
||||||
'graphic': False,
|
'graphic': False,
|
||||||
'initramfs': False,
|
'initramfs': False,
|
||||||
@@ -94,6 +95,8 @@ def main(args, extra_args=None):
|
|||||||
trace_type = args.trace
|
trace_type = args.trace
|
||||||
|
|
||||||
if args.gem5:
|
if args.gem5:
|
||||||
|
with open(common.gem5_readfile, 'w') as readfile:
|
||||||
|
readfile.write(args.gem5_readfile)
|
||||||
memory = '{}B'.format(args.memory)
|
memory = '{}B'.format(args.memory)
|
||||||
gem5_exe_args = shlex.split(args.gem5_exe_args)
|
gem5_exe_args = shlex.split(args.gem5_exe_args)
|
||||||
if do_trace:
|
if do_trace:
|
||||||
@@ -135,7 +138,7 @@ def main(args, extra_args=None):
|
|||||||
'--kernel', common.vmlinux,
|
'--kernel', common.vmlinux,
|
||||||
'--mem-size', memory,
|
'--mem-size', memory,
|
||||||
'--num-cpus', str(args.cpus),
|
'--num-cpus', str(args.cpus),
|
||||||
'--script', common.gem5_readfile_file,
|
'--script', common.gem5_readfile,
|
||||||
]
|
]
|
||||||
if args.arch == 'x86_64':
|
if args.arch == 'x86_64':
|
||||||
if args.kvm:
|
if args.kvm:
|
||||||
@@ -350,6 +353,10 @@ gem.op5 --debug-flags=Exec fs.py --cpu-type=HPI --caches
|
|||||||
'--gem5-biglittle', default=defaults['gem5_biglittle'], action='store_true',
|
'--gem5-biglittle', default=defaults['gem5_biglittle'], action='store_true',
|
||||||
help='Use fs_bigLITTLE.py instead of fs.py'
|
help='Use fs_bigLITTLE.py instead of fs.py'
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'--gem5-readfile', default=defaults['gem5_readfile'],
|
||||||
|
help='Set the contents of m5 readfile to this string.'
|
||||||
|
)
|
||||||
init_group.add_argument(
|
init_group.add_argument(
|
||||||
'-I', '--initramfs', default=defaults['initramfs'], action='store_true',
|
'-I', '--initramfs', default=defaults['initramfs'], action='store_true',
|
||||||
help='Use initramfs instead of a root filesystem'
|
help='Use initramfs instead of a root filesystem'
|
||||||
|
|||||||
Reference in New Issue
Block a user