如何确定进程是否受CPU,内存或磁盘限制?


42

如何确定进程是否绑定到CPU,内存或磁盘?


如果使用的是gnome GUI,则可以将“系统监视器”小程序添加到面板中。在设置中,您可以将丢失的周期设置为IO-Wait以显示为白色,并设置要显示的内存,CPU和磁盘读/写图。我通常会更改默认图形颜色,以使其更容易区分用户/ OS内存和磁盘读/写。这不是一个真正的解决方案,但是将答案中提到的所有工具与之并列很方便。
杰里米

1
@ luis-alvarado我不同意这个问题没有用,尽管我认为这在StackOverflow之类的方法上可能更合适。我来这里寻求解决方案。
skeggse 2014年

所提问题的问题在于它没有考虑执行环境。哪种方法最有效地发现作业/进程的主机组件瓶颈与作业的运行时,执行环境,主机OS,硬件等紧密相关,并且每个组件都可以使用哪些工具来对其进行检查。有些运行时(例如,Erlang运行时或IBM的JVM)为此提供了深入的工具,而不是整个环境,而其他运行时则完全缺少工具,使您无法根据htop / iotop / etc进行有根据的猜测。可以告诉你。
zxq9

Answers:


19

那需要一些伏都教徒。这取决于。例:

  • 如果有足够的内存,磁盘似乎不太忙,则可能是 CPU限制的。查看CPU使用率,如果它接近100%,则表示CPU受限。如果不是这样,那么实现中就会存在人为的瓶颈。例如,在双核CPU上,单线程进程的CPU使用率不会超过50%。

  • 如果CPU和内存可用,但磁盘非常繁忙,或者IO延迟似乎很高,则可能是其IO受限。查看是否添加更多磁盘(RAID?)是否有帮助。

  • 以上都不是?检查可用的内存。

  • 足够的内存?该过程本身可能存在人为的瓶颈,即有人忘记了睡眠(1)?Naah通常不那么容易。;)

在大多数公司中,有一个针对性能敏感产品的性能工程师组成整个实验室的原因!

使用sar,vmstat,iostat,oprofile,lockstat,dtrace,产品特定的性能监视工具等工具来调试性能问题。


2
是否有将所有这些联系在一起的工具?
ssanj

通常没有,但是如果dtrace在您的系统上可用(Solaris / FreeBSD / Mac OS X?),则仅通过使用dtrace就可以达到目标。
Sudhanshu

我只是记得在Linux上有Systemtap(类似于dtrace),只是我不确定该工具是否成熟。
Sudhanshu

vmstat非常有用。
詹姆斯


9

htop是一种可用于实时检查许多进程统计信息(内存,cpu使用情况,I / O等)的工具。它不会替代Sudhanshu命名的更专业的工具,但可能是一个好的开始。


4

与提到的其他工具一样,运行ps l PID,插入相关的进程ID或查看top或htop中的STATE和WCHAN列。

如果它处于D(用于磁盘)状态,则表示正在执行文件IO。这可能是因为它正在读取大量文件,或者因为它正在使用大量内存并进行交换。WCHAN列将告诉您它里面包含什么内核函数。为他们谷歌搜索或在这里询问可能会给您一些指示,它们表示什么意思。

如果它处于R(运行)状态,则说明它正在用户空间中使用CPU,换句话说,它此时已受CPU限制。

如果它处于S(休眠)状态,则位于可中断的系统调用中,这可能意味着它实际上正在休眠,或者正在执行诸如等待网络流量或锁定之类的操作。同样,查看特定的wchan会告诉您更多信息。

另请参见流程的“等待通道”是什么?


2

运行top并查看cpu用法行。较高的用户%表示它受CPU限制。高等待百分比表示它受IO限制。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.