我最近一直在使用blktrace / blkparse并有几个问题,如果有人可以帮助我,我将不胜感激:
1)blkparse输出中的块数值以扇区(512字节)表示。它是否正确?这仍然适用于没有512字节扇区的SSD吗?
2)即使我运行的工作负载提交的数据大于1MB块(使用libaio),此块数值也不会高于2048(1MB)。可以提交到Linux块层的块大小是否有限制,如果块层自动将较大的块拆分为较小的块?有人可以指向内核代码路径吗?
非常感谢。
Terko
答案 0 :(得分:0)
Blktrace从Linux内核获取数据,该内核将扇区视为512 bytes long。所以我认为,无论设备物理扇区大小如何,blktrace都会在512字节扇区中显示偏移量和大小。
您可以使用dd进行测试以验证发生了什么并使用btrace记录磁盘访问。例如,
dd if=/dev/something of=/dev/null bs=512 count=1 skip=512
对于第二个问题,块层中发生了很多事情:I / O请求被缓冲,合并,调度。因此,如果内核使用与应用程序中指定的块大小不同的块大小进行磁盘访问,请不要感到惊讶。