DirectIO时的IO放大探究
(对读取一个文件时进行io的测试:
现象1中,iostat测试的IOPS为100多,测试程序测试的IOPS为50,约为iostat统计数据的一半。iostat测试出来的IOPS减去测试程序测试的IOPS所得的io个数就是所谓的额外IO。为什么会这样?因为读取一个文件时,会读取文件的数据块和索引块,iostat对读取这两类块的io都会测试到,而测试程序只是会对读取数据块的io进行测试。
现象2中,cat测试的该设备(指的是磁盘)被读的数据量为77292KB,测试程序测试的读取的数据量为40000KB。cat测试的数据量减去测试程序测试的数据量所得的数据量差就是所谓的额外IO。为什么会这样?因为读取一个文件时,会读取文件的数据块和索引块,cat对读取这两类块的io都会测试到,而测试程序只是会对读取数据块的io进行测试。)===================================
至此,我们不仅进行了测试,更进一步从源头上分析了测试结果的原因,形成如下有效结论: