如何在Linux中以用户模式判断进程是否为网络I / O密集型?

我目前正在Linux中编写一个程序,需要在运行时判断特定进程是否是网络I / O密集型.我尝试了一些工具,如iotop和iftop,但它们都不能监视特定的进程.那么,有没有什么方法可以判断进程是否是用户级别的网络I / O密集型?任何帮助将不胜感激!

解决方法:

您可以检查其等待频道的频率.
您遇到的平均等待频道应该表明在此过程中花费的时间.

例如:下载Ubuntu映像作为典型的net-io绑定过程:

$url='http://mirror.dkm.cz/ubuntu-releases/16.04/ubuntu-16.04-desktop-amd64.iso'
$wget "$url" & pid=$!

当你这样做时:

$ps h -p $pid  -o wchan

你应该一直得到poll_schedule_timeout,因为这是一个net-io-bound进程,可能会使用epoll进行net io.

与典型的CPU绑定流程相反,例如:

$( while :; do :; done )& pid=$!

你应该在任何时候都得到一个等待通道 – (= none =它在CPU核心上).

上一篇:如何持续监控Linux中的进程创建?


下一篇:linux – 如何知道最近更新的文件