2012-01-13 12 views
3

Linuxプロセスによって読み書きされた合計バイト数を出力したいとします。例えば、私はLinuxプロセスとその子プロセスによって読み書きされた合計バイト数

gcc -c a.c 

を実行して、合計のバイトはその子、Linuxカーネルからの要求とどのように多くのバイトを、彼らはカーネルに送ら含め、GCCをしたどのように多く見たいのですが。この問題への

不完全な解決策は以下のとおりです。

  • フィールドrchar/proc/PID/iowcharはこれまでに、読み取り/書き込まれたバイト数を示しています。子プロセスを考慮していません。プロセスが終了するとすぐに失われます。

  • 例えばstraceなどのツールは、プロセスのシステムコールと(例えば:readwriteシステムコール)、その子を印刷するために使用することができ、読み出し/書き込みバイト数を集約することができません。

Linuxプロセスとその子プロセスによって読み書きされた合計バイト数をプリントするにはどうすればよいですか?

+0

なぜ、あなたは2つの子プロセス間のパイプ内のバイト数をどのように数えますか? –

+0

@BasileStarynkevitch 2つの子プロセス間のパイプ経由で送信されるNバイトは、Nバイトの書き込み、Nバイトの読み取りとしてカウントされます。 –

答えて

10

少しawk、straceはあなたが望むものです。

strace -e trace=read,write -o ls.log ls 

は、読み書きシステムコールのログを提供します。今、あなたは、このログを取ると、あなたが行の先頭でのみ読み取りを一致させるためにはgrepを変更することがありますwan'tこの

cat ls.log | grep read | awk 'BEGIN {FS="="}{ sum += $2} END {print sum}' 

のように最後の列を合計することができます。

+0

'strace'アプローチはmmap'edファイルの統計情報を見逃しませんか? –

+0

私に奇妙な値を与えるhttp://unix.stackexchange.com/questions/291156/why-rsync-does-not-do-delta-transfer –

+0

を確認してください。エラーやそれに類するものがある場合、どうすればこの問題を解決できますか? 'O_NONBLOCK'がセットされ、readがブロックされるなど)、' read() 'は-1を返します。 – 12431234123412341234123

1

あなたはiotopを見ることができます。これは、各プロセスのディスク消費量をリアルタイムで表示することができるトップライクなツールです。

EDIT:

ます。また、Linuxボックスを監視するための非常に強力に見えるsysstatを確認することができます。ドキュメントによると:

  1. 入力/出力と転送速度統計(グローバル、デバイスごとに、パーティションごとに、ネットワークファイルシステムごとおよびLinuxあたりのタスク/:

    異なるメトリックの膨大な数を監視することができますPID)。

  2. 仮想化アーキテクチャのサポートを含むCPU統計情報(グローバル、CPUごと、およびLinuxタスク/ PID)。
  3. メモリ、hugeページおよびスワップ領域の使用状況の統計。
  4. 仮想メモリ、ページング、および障害の統計情報。
  5. タスク単位(PID単位)のメモリとページフォルトの統計情報。
  6. タスクおよびそのすべての子のグローバルCPUおよびページフォールト統計。
  7. プロセス作成アクティビティ。
  8. 割り込み統計情報(グローバル、CPUごと、割り込みごと、潜在的なAPIC割り込み要因、ハードウェアおよびソフトウェア割り込みを含む)。
  9. 広範なネットワーク統計:ネットワークデバイスからの の障害を含むネットワークインターフェイスアクティビティ(パケット数と1秒あたりの送受信されたkB数など)。 IP、TCP、 のネットワークトラフィック統計情報SNMPv2標準に基づくICMPおよびUDPプロトコル。 IPv6関連のプロトコルのサポート。
  10. NFSサーバーとクライアントのアクティビティ。
  11. ソケット統計。
  12. 実行キューおよびシステム負荷統計。
  13. カーネルの内部テーブルの利用統計。
  14. システムおよびLinuxのタスク切り替えアクティビティ。
  15. スワッピング統計。
  16. TTYデバイスのアクティビティ。
  17. 電源管理の統計情報(瞬間的および平均CPUクロック周波数、ファン速度、デバイス温度、電圧入力、USB デバイスがシステムに接続されています)。

そして、ここで、あなたは、sar(sysstatのパッケージのメインコマンド)のsome examples of usageれています。

+0

iotopは、ディスクから読み込まれた、またはディスクに書き込まれたデータのサイズを示しています。私はこれが有用な情報だと思っていますが、私の質問はカーネルから要求されたバイト数に関係します。これには決してディスクにヒットしないデータが含まれています。 –

+0

@Atom:ああ、申し訳ありませんが、**すべての** **ディスクI/Oだけでなく、カーネルと交換されたバイト数を数えたかったという事実に気づいていませんでした。 –

+1

@Atom:ほぼすべてを監視できるツールです。 –

関連する問題