blktrace 只能跟踪一个特定的进程吗?

Posted

技术标签:

【中文标题】blktrace 只能跟踪一个特定的进程吗?【英文标题】:Can blktrace only trace one specific process? 【发布时间】:2012-05-28 06:56:57 【问题描述】:

现在 blktrace 将所有 io 活动转储出去,这需要花费大量时间使用 blkparse 来解析它。但是我们只对一个特定的过程感兴趣。有什么方法可以将 blktrace 配置为仅跟踪该进程?

谢谢, 杰夫

【问题讨论】:

【参考方案1】:

不,blktrace 在设备上工作,因为它是一个 i/o 性能工具,而不是一个进程。我猜你必须配置一个进程来使用一个特定的块设备,但如果你可以的话,没有其他进程可以做类似的事情。

【讨论】:

谢谢,但我已经这样做了。有很多系统事件消息(例如 cfq)使得解析 44M blktrace 转储文件需要 12 分钟。正常吗?有没有办法优化它?谢谢! 我正在使用“blktrace -d /dev/sda -o - | blkparse -i -”。当我杀死 blktrace 时,blkparse 需要很长时间(解析 44M 需要 12 分钟)才能完成...... -过滤器掩码是我所知道的唯一方法,它会限制跟踪的事件类型,您可以使用它来查看是否可以获得您想要的正确的,而不是其他的。我自己还没有真正玩过这些。手册页有过滤器掩码的详细说明。【参考方案2】:

使用 blkparse 的“-o”选项来避免将数据输出到标准输出。这减少了 blkparse 所需的时间。我能够在 30 秒内解析 72MB。

【讨论】:

以上是关于blktrace 只能跟踪一个特定的进程吗?的主要内容,如果未能解决你的问题,请参考以下文章

不同的是在分析 blktrace 时队列深度、磁盘偏移量、iops、吞吐量的数据

利用blktrace分析磁盘I/O

利用blktrace分析磁盘I/O

通过blktrace, debugfs分析磁盘IO

如何让 blktrace 工具显示 D 发出的动作

Firebase 动态链接可以用于通用应用邀请和特定页面邀请以跟踪推荐吗?