見つけました。良いモニターこれにより、単一プロセスのさまざまなランタイムデータを記録できます。帯域幅使用量と同じことを行う同等の方法を探しています。理想的には、コマンドは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を必要としませんが、うまく書くのはかなり面倒です。