単一プロセスの帯域幅使用量を監視するためのツールはありますか?

単一プロセスの帯域幅使用量を監視するためのツールはありますか?

見つけました。良いモニターこれにより、単一プロセスのさまざまなランタイムデータを記録できます。帯域幅使用量と同じことを行う同等の方法を探しています。理想的には、コマンドはbwmon --pid 1 --log init.log次のようになります。管理者権限なしで実行できますか?

ベストアンサー1

使用されている一般的なI / O帯域幅に満足している場合(またはプログラムがほぼ排他的にネットワークI / Oを実行している場合)、ファイルを表示できます/proc/<pid>/io。あなたはフィールドrcharが欲しいですwchar。合計はストレージ階層への読み取りと書き込みを表すため、read_bytes合計を引く必要があるかもしれません。write_bytesセクション3.3を参照してください。http://www.kernel.org/doc/Documentation/filesystems/proc.txt

さらにソリューションが必要な場合は、lsofこのスクリプトを使用して作成できますstrace。しかし、すべての特別なケースを正しく処理するのは難しいでしょう。基本的なアイデアは、および呼び出しの出力をstrace -p <pid>解析することです(read()write()send()recv()ノート受信するシステムコールがいくつかあります。まだすべて追跡していません。負の値は削除され、エラーを示します。lsof -p <pid>どのファイル記述子がTCP / UDPソケットであるかを確認し、各fdの数を合計するために使用されます。このポリシーは確認されているプロセスを所有している限り、rootを必要としませんが、うまく書くのはかなり面倒です。

おすすめ記事