如何获取 Unix 中进程的 I/O 使用情况?

如何获取 Unix 中进程的 I/O 使用情况?

可能重复:
Linux:是否有类似于“top”的 I/O?

我正在尝试在 Linux 机器上执行一些 CPU 密集型操作,并且显示负载非常高。

我想弄清楚这个负载是由于 I/O 还是 CPU 使用率造成的。如何获取进程的 I/O 使用率百分比?

答案1

尝试使用名为“iotop”的程序。它显示本地磁盘驱动器的使用情况,其方式与显示 CPU 使用情况的“top”类似。对于网络流量,有一个名为“iftop”的工具。

此外,如果您不确定负载高的原因,请查看“顶部”视图上的“IO 等待”列。如果 CPU 时间主要用于“用户”或“系统”工作,那么 CPU 就是瓶颈,如果是“IO 等待”,那么就是磁盘。同样值得一看的是交换数字 - 如果物理内存的可用空间不足 5% 和/或使用了大量交换文件,则物理内存可能会限制您的使用。

例如:

top - 17:18:37 up 1 day,  5:20, 19 users,  load average: 0.18, 0.26, 0.35
Tasks: 249 total,   2 running, 246 sleeping,   0 stopped,   1 zombie
Cpu(s):  8.5%us,  2.1%sy,  0.3%ni, 85.4%id,  3.7%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   8183668k total,  8082464k used,   101204k free,    11148k buffers
Swap: 11847900k total,   248528k used, 11599372k free,  3361444k cached

“us”代表用户空间代码,“sy”代表系统,“id”代表空闲,“wa”代表 IO 等待。

答案2

答案3

首先,您可以运行top并查看显示屏第三行中的总 CPU 使用率。如果第一行中的平均负载较高,但第三行中的 CPU 使用率较低,则问题出在 I/O 使用率上。要从那里更具体地缩小范围,您可以使用iotop,就像 Zds 建议的那样。

相关内容