如何获得具有实际输入值的磁盘 IO 跟踪?

How can I get the disk IO trace with actual input values?

我想从磁盘 IO 生成一些跟踪文件,但问题是我需要实际输入数据以及时间戳、逻辑地址和访问块大小等。

我一直在尝试通过在 ubuntu VirtualBox 环境,但似乎无法正常工作。

blkparse 中有一个选项用于设置输出格式以显示数据包数据,-f "%P",但它不打印任何内容。

下面是我使用的命令:

$> sudo blktrace -a issue -d /dev/sda -o - | blkparse -i - -o ./temp/blktrace.sda.iozone -f "%-12C\t\t%p\t%d\t%S:%n:%N\t\t%P\n"
$> iozone -w -e -s 16M -f ./mnt/iozone.dummy -i 0

打印格式为“%-12C\t\t%p\t%d\t%S:%n:%N\t\t%P\n”,所有其他的都打印的很好,但是“%P”根本就没有打印出来。

有大神知道为什么数据包显示不出来吗? 或者有人知道其他方法来获取具有实际输入值的磁盘 IO 数据包数据吗?

据我所知,blktrace 并未捕获实际数据。它只是捕获元数据。捕获真实数据的一种方法是编写您自己的内核模块。 FIU.edu 的一些学生在这篇论文中这样做了: "I/O deduplication: Utilizing content similarity to ..."

我也会在 linux-btrace 邮件列表中问这个问题: http://vger.kernel.org/majordomo-info.html