我知道如何修改映像,重新启动并重新运行它,但这会使我的实验非常缓慢,因为启动需要几分钟。
有没有一种方法可以快速切换:
启动后正在运行?
这并非易事,因为Linux内核了解:
所以我不能只在检查点之后切换它们。
此问题的灵感源于:https://www.mail-archive.com/gem5-users@gem5.org/msg16959.html
答案 0 :(得分:0)
这里是a fully automated setup that can help you to do it。
基本工作流程如下:
从传递给Linux内核的init可执行文件运行基准测试
使用不同的参数运行单个基准测试而无需 重新启动,请在您的init脚本中执行:
m5 checkpoint
m5 readfile | sh
并在主机文件系统文件上设置m5 readfile
的内容,然后使用以下方法恢复检查点:
echo 'm5 resetstats && ./run-benchmark && m5 dumpstats' > path/to/script
build/ARM/gem5.opt configs/example/fs.py --script path/to/script
这是“ configs / boot / hack_back_ckpt.rcS”,但是我认为 脚本过于复杂。
要修改可执行文件而不必重新启动,请附加第二个 磁盘映像并在检查点还原后装入: How to attach multiple disk images in a simulation with gem5 fs.py?
另一种可能是9P,但目前无法正常工作:http://gem5.org/WA-gem5
仅只计算基准指令,请执行以下操作:
m5 resetstats
./run-benchmark
m5 dumpstats
如果这还不够精确,请使用m5ops魔术指令修改基准测试的来源,该指令从基准测试内执行resetstats和dumpstats,如:How to count the number of CPU clock cycles between the start and end of a benchmark in gem5?
为使首次引导更快,您可以使用简单的CPU模型(例如默认的AtomicSimpleCPU)引导,然后在恢复检查点后切换到更详细,更慢的模型:How to switch CPU models in gem5 after restoring a checkpoint and then observe the difference?