Gem5模拟器学习(六)
Checkpoints
检查点相当于gem5模拟系统的快照。通常来说,创建一个全系统模拟需要大量的时间,但为这个模拟系统创建了检查点之后,可以在下次启动时将模拟系统快速回复至检查点状态,从而节省系统启动时间。
一旦创建了checkpoint,gem5会在输出目录中增加一个cpt目录(cpt.TICKNUMBER,其中TICKNUMBER为创建此检查点时的Tick值),该目录存储checkpoint相关信息。
1. 创建检查点
有三种创建检查点的方式:
- 启动模拟器环境后,在模拟器终端执行m5 checkpoint命令,也可以将其包含在运行脚本中。
- 专门有一个伪指令用于创建检查点,例如可以在应用中创建检查点(还不熟悉)
- python配置脚本(fs.py、ruby_fs.py)中通过命令行参数设置检查点。–take-checkpoints选项可以定期储存检查点,–checkpoint-at-end可以在模拟结束创建检查点
2. 恢复检查点
检查点恢复需要在启动系统模拟时设置几个命令行参数
1 | build/X86/gem5.opt -d 指定输出目录 configs/example/fs.py --num-cpus=2 -r 1 --checkpoint-dir=checkpoint目录在指定的输出目录 --restore-with-cpu=O3CPU --cpu-type=O3CPU |
- –checkpoint-dir:用于指定使用的checkpoint的cpt文件夹所在路径
- -r:用于指定使用的checkpoint的序号
- –restore-with-cpu用于指定恢复时CPU的类型
启动系统模拟后,再通过m5term接入模拟系统,然后很快就会进入到命令行了。
m5
在使用m5时首先要用Scons编译
修改镜像文件
在全系统模拟中,运行程序一般比较慢,特别是一些比较大的benchmark,如果在全系统模拟中编译会极慢,因此需要将benchmark在宿主机编译完之后,直接放在镜像文件中,这样就可以开启模拟后直接运行benchmark了。
然而,镜像文件不可以像文件一样直接操作,必须进行磁盘挂载。在 Linux 中,挂载磁盘是将新的磁盘设备连接到文件系统的过程,使得该磁盘可用于存储和访问文件。简单来说,就是将镜像文件挂载到一个文件夹中,再像文件一样直接操作。
首先,创建一个文件夹作为挂载点。在disks文件夹中新建文件夹./mnt
1 | mkdir ./mnt |
然后,使用mount命令挂载镜像文件到指定挂载点。
1 | sudo mount -o loop,offset=1048576 镜像文件 ./mnt |
此时,可以通过df -h命令查看磁盘设备列表,并打开./mnt文件夹可以看到镜像文件的内容。
将测试文件放入挂载点
1 | sudo cp 测试文件 ./mnt |
最后,取消挂载
1 | sudo umount ./mnt |