我目前正在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核心上).