如何获取正在执行磁盘 IO 的程序列表?

如何获取正在执行磁盘 IO 的程序列表?

我有一台服务器(运行 CentOS 5),我需要找出哪些程序(MySQL、Apache 等)执行的磁盘 I/O 最多?有没有命令可以让我计算一段时间内的平均值?

答案1

iotop 之类的工具会有所帮助,有多个版本,请查看一个,也可以谷歌一下其他的。

答案2

您可以尝试安装 sysstat 包并使用 SAR 和 iostat。如果您需要,它们可以在一段时间内提供更好的可见性。

编辑:忘记链接了...http://www.princeton.edu/~unix/Solaris/troubleshoot/diskio.html

答案3

虽然 sysstat 适用于 CentOS,但是您想要的特定软件包并未随 CentOS 5 附带。

你需要做的是从主页下载 sysstat这里. 配置并编译它。最新版本附带一个名为PID统计。此程序将满足您的需求。它的工作原理与其他 *stat 实用程序(如 iostat、mpstat 和 vmstat)非常相似。注意传递-d旗帜。

不应该安装此版本,其二进制文件与它创建的文件不兼容。只需复制它编译的 pidstat 程序并将其粘贴到在/usr/本地/bin反而。

pidstat -d 1 3
Linux 2.6.35.11-83.fc14.x86_64 (home.localdomain)   04/09/2011  _x86_64_(2 CPU)

07:39:40 PM       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command

07:39:41 PM       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
07:39:42 PM       888      0.00      4.00      0.00  jbd2/dm-2-8

07:39:42 PM       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command

Average:          PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
Average:          888      0.00      1.32      0.00  jbd2/dm-2-8

输出应该非常清晰易懂。

请注意,您需要运行 CentOS 5.4 以上版本的内核。坦白说,如果您不更新,出于许多安全原因,您需要更新,而且 CentOS 5.6 是最近才发布的。

答案4

为了监控 IO 输出活动,您可以尝试使用 iostat,例如基本用法是:

iostat -x [-d]

-x 选项显示扩展统计信息。您肯定需要它。-d 是可选的。它消除了 CPU 利用率,以避免使输出混乱。

阅读手册页以获取更多信息。

相关内容