LinuxのユーザーモードでプロセスがネットワークI / O集約的であることを確認する方法は?

LinuxのユーザーモードでプロセスがネットワークI / O集約的であることを確認する方法は?

私は現在、特定のプロセスがネットワークI / O集約的かどうかを実行時に決定する必要があるプログラムをLinuxで作成しています。iotop次のツールをいくつか試しましたが、iftopどちらも特定のプロセスを監視できません。それでは、プロセスがネットワークI / O集約的かどうかをユーザーレベルで確認する方法はありますか?どんな助けでも大変感謝します!

答え1

待機チャンネルとは、特定の周波数で確認できます。経験する平均待機チャネルは、プロセスに費やされた時間を表します。

例:通常のnet-ioバインディングプロセスでUbuntuイメージをダウンロードします。

$ 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これはほとんど常にそうであるため、おそらくネットワークIOバインディングを使用するプロセスです。エポールネットワークioの場合。

これとは対照的に、次の一般的なCPU集約型プロセスの場合:

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

待機チャネルが必要-(=なし= CPUコアにあります)ほぼ常に。

関連情報