哪些文件占用了我进程的大部分 I/O 时间?

Posted

技术标签:

【中文标题】哪些文件占用了我进程的大部分 I/O 时间?【英文标题】:Which files are taking most of my process's I/O time? 【发布时间】:2010-08-10 05:52:21 【问题描述】:

我有一个相当大的 python 程序导致大量磁盘 I/O(top%wa 可以高达 80,iotop 说我的进程是罪魁祸首)。

有几件事可能导致此问题 - 我正在写入多个日志文件,并且我正在将缓存结果保存到多个位置的磁盘,因此我应该将注意力集中在哪里并不是很明显。

是否有 linux 工具或 python 技巧可以让我查看哪个子系统导致最多 I/O 操作?

【问题讨论】:

也许这会有所帮助? wiki.python.org/moin/PythonSpeed/PerformanceTips#ProfilingCode 当你运行分析器时,你学到了什么? 您可以查看 procfs 以鸟瞰程序正在使用的文件:ls -la /proc//fd 【参考方案1】:

您应该看看 SystemTap。它是非常强大的 Linux 系统调用跟踪和分析机制: http://sourceware.org/systemtap/wiki

我确信可以准确跟踪哪个文件描述符负责 IO 负载 - 但从 systemtap 开始会变得复杂。

【讨论】:

以上是关于哪些文件占用了我进程的大部分 I/O 时间?的主要内容,如果未能解决你的问题,请参考以下文章

I/O会一直占用CPU吗?

I/O会一直占用CPU吗?

设备管理(读文件部分)

查看系统的I/O使用iostat命令而使用iotop能够依据I/O统计信息排序,追踪到详细的进程

查看系统的I/O使用iostat命令而使用iotop能够依据I/O统计信息排序,追踪到详细的进程

磁盘I/O高居不下,通过什么来查看占用I/O的进程?