当前位置: 首页>>技术教程>>正文


如何确定进程是CPU,内存还是Disk-bound?

,

问题描述

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

最佳解决方法

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

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

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

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

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

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

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

次佳解决方法

看看iotop,可以用

第三种解决方法

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

第四种方法

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

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

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

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

另请参见什么是“Waiting Channel”的流程?

第五种方法

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2256.html,未经允许,请勿转载。