我有一台服务器(运行 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 利用率,以避免使输出混乱。
阅读手册页以获取更多信息。