it-swarm.cn

如何确定进程是CPU,内存还是磁盘?

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

41
ssanj

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

  • 如果有足够的内存和磁盘似乎不太忙,它可能 CPU绑定。查看CPU使用情况,如果它接近100%则是CPU限制。如果它不是实施中的人为瓶颈。例如。在双核CPU上,单线程进程不会超过50%的CPU使用率。

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

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

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

在大多数处理性能敏感产品的公司中,我们有一个完整的性能工程师实验室!

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

16
Sudhanshu

检查出iotop,可能很有用

11
ithkuil

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

9
JanC

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

如果它在D(用于磁盘)状态,那么它正在执行文件IO。这可能是因为它要么读取大量文件,要么是因为它使用了大量内存和交换。 WCHAN列将告诉你它内部的内核功能;谷歌搜索他们或在这里询问可能会给你一些指示他们的意思。

如果它处于R(运行)状态,它在用户空间中使用CPU,换句话说就是它在那时的CPU绑定。

如果它处于S(睡眠)状态,它就在一个可中断的系统调用中,这可能意味着它实际上处于休眠状态,或者正在做类似于等待网络流量或锁定的事情。再看一下,具体的wchan会告诉你更多。

另见 过程的“等待通道”是什么?

4
poolie

运行top并查看cpu用法行。高用户%表示它是cpu绑定的。高等待%表示它是IO绑定。

2
psusi