CEPHFS集群部署在vmware虚拟机中,虚拟机内存配置为4G 使用 FIO 进行测试
顺序如下: fio -name=task1 -filename=/mnt/testcephfs/fio-test-1 -rw=randwrite -ioengine=sync -size=1G -bs=4M -iodepth=1 -direct=0 -numjobs=1 请看图1
然后我将虚拟机内存调整为8G 顺序如下: fio -name=task1 -filename=/mnt/testcephfs/fio-test-1 -rw=randwrite -ioengine=sync -size=1G -bs=4M -iodepth=1 -direct=0 -numjobs=1 请看图2
问题是:为什么我增加虚拟机内存并执行相同的 fiO 命令和 bW 增加?
您的 fio 作业意味着 I/O 被允许在 page cache 中暂存,并且控制权返回到 fio 以进行下一个 I/O,即使它尚未发送到后端。这种解耦通常有助于提高性能(例如,因为批处理得到了改进),但这意味着在基准测试期间必须小心(因为不清楚您基准测试的内容)。
如果页面缓存已“满”,则在有空间接受下一个 I/O 之前,控制权无法返回给 fio。何时开始刷新分阶段 I/O 的阈值通常与填充度相关(但这不是唯一的标准)。因此:
TLDR;您会看到缓存的干扰,并且由于您执行的 I/O 量太少,因此可能会严重扭曲您的数字。您是否考虑过设置
end_fsync=1
或执行比您的记忆更多的 I/O?