Ceph make check 在内存盘中

loic

在从 Ceph 源代码运行测试时,磁盘会被密集使用,可以使用内存盘来减少延迟。必须重新启动内核才能设置 内存盘最大大小 为 16GB。例如在 Ubuntu 14.04 中,在 /etc/default/grub (模块名称可能是 rbbrd,具体取决于系统)。

GRUB_CMDLINE_LINUX="brd.rd_size=16777216" # 16GB,单位为KB

然后必须使用以下命令更新 grub 配置

sudo update-grub

重启后,内存盘将格式化为 ext4 文件系统并挂载

$ cat /sys/module/brd/parameters/rd_size 16777216 $ sudo mkfs -t ext4 /dev/ram1 $ sudo mount /dev/ram1 /srv $ df -h /srv 文件系统 大小 已用 可用 使用率 挂载点 /dev/ram1 16G 44M 15G 1% /srv $ free -g 总计 已用 剩余 分享 缓冲/缓存 内存: 31 0 31 0 0 0 -/+ 缓冲/缓存: 0 31

克隆 ceph、编译和运行测试现在应该不到 15 分钟,使用

$ git clone https://github.com/ceph/ceph $ cd ceph $ ./run-make-check.sh

当卸载内存盘时,内存盘中使用的一些内存仍然在使用中

$ free -g 总计 已用 剩余 分享 缓冲/缓存 内存: 31 27 4 0 0 17 -/+ 缓冲/缓存: 9 22 $ sudo umount /srv $ free -g 总计 已用 剩余 分享 缓冲/缓存 内存: 31 18 13 0 0 8 -/+ 缓冲/缓存: 9 22

可以使用以下命令刷新它

$ sudo blockdev --flushbufs /dev/ram1 $ free -g 总计 已用 剩余 分享 缓冲/缓存 内存: 31 9 22 0 0 8 -/+ 缓冲/缓存: 0 31

使用 ram 文件系统

mount -t tmpfs -o size=2G tmpfs /somewhere

不是一个可行的选择,因为 make check 只支持 btrfs、xfs 和 ext4 文件系统,并且会失败。 eatmydata 在 Ubuntu 14.04 上对 make check 无效。非常感谢 Cyril Bouthors 提供的帮助,以研究最佳解决方案。