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

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

如何知道某个进程是否绑定到 CPU、内存或磁盘?

答案1

这需要一些专业技能。视情况而定。例如:

  • 如果有足够的内存,并且磁盘似乎不太忙,那么或许CPU 受限。查看 CPU 使用率,如果接近 100%,则为 CPU 受限。如果不是,则实施过程中存在人为瓶颈。例如,在双核 CPU 上,单线程进程的 CPU 使用率不会超过 50%。

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

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

  • 内存够用吗?进程本身可能存在人为瓶颈,例如,有人忘记删除 sleep(1) 了?不,通常没那么容易。 ;)

在大多数处理性能敏感型产品的公司中,我们为性能工程师配备了一整套实验室,这是有原因的!

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

答案2

检查一下iotop,可能会有用

答案3

可以实时检查大量进程统计信息(内存、CPU 使用率、I/O 等)的工具是顶部。它并不能取代 Sudhanshu 所提到的更专业的工具,但可能是一个很好的开始。

答案4

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

相关内容