Gem5模拟器学习(六)

Checkpoints

官网介绍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
2
3
build/X86/gem5.opt -d 指定输出目录 configs/example/fs.py --num-cpus=2 -r 1 --checkpoint-dir=checkpoint目录在指定的输出目录 --restore-with-cpu=O3CPU --cpu-type=O3CPU

build/X86/gem5.opt configs/example/fs.py --num-cpus=2 -r 1 --checkpoint-dir=m5out
  • –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