1

我最近一直在使用 blktrace/blkparse 并且有几个问题,如果有人可以帮助我,我将不胜感激:

1) blkparse 输出中的块数值以扇区(512 字节)表示。这个对吗?这是否仍然适用于没有 512 字节扇区的 SSD?

2) 即使我运行的工作负载提交的数据大于 1MB 块(使用 libaio),这个块数值也不会超过 2048 (1MB)。可以提交给 Linux 块层的块大小是否有限制,以及块层是否会自动将较大的块分成较小的块?有人可以指出我完成此操作的内核代码路径吗?

首先十分感谢。

泰尔科

4

1 回答 1

0

Blktrace 从 Linux 内核获取其数据,该内核认为扇区长度为 512 字节。所以我认为,无论设备物理扇区大小如何,blktrace 都会显示 512 字节扇区中的偏移量和大小。

您可以使用 dd 进行测试以验证发生了什么并使用 btrace 记录磁盘访问。例如,

dd if=/dev/something of=/dev/null bs=512 count=1 skip=512

对于第二个问题,块层发生了很多事情:I/O 请求被缓冲、合并、调度。因此,如果内核使用与应用程序中指定的块大小不同的块大小进行磁盘访问,请不要感到惊讶。

于 2013-08-24T14:44:26.350 回答