我购买了具有 8 个 vCPU、16G 内存和 500G ssd 卷(由 ceph rbd 支持)的虚拟服务器。然后我用fio来测试服务器的IO性能。为了更好的理解fio结果,在测试的过程中,我也使用了blktrace来捕获block layer IO trace。
顺序写
fio --filename=/dev/vdc --ioengine=libaio --bs=4k --rw=write --size=8G --iodepth=64 --numjobs=8 --direct=1 --runtime=960 - -name=seqwrite --group_reporting
seqwrite 的 fio 输出 seqwrite 的 解析 blktrace 输出
朗读
fio --filename=/dev/vdc --ioengine=libaio --bs=4k --rw=randread --size=8G --iodepth=64 --numjobs=8 --direct=1 --runtime=960 - -name=randread --group_reporting
randread 的 fio 输出 randread 的 解析 blktrace 输出
我想了解的是 seqwrite 和 randread 在块层的区别。
- 为什么 randread 有很大一部分 I2D 而 seqwrite 没有?
- 为什么randread没有Q2M?