2011-07-08 12 views
16

毎秒特定のプロセスのリソース使用量を見つけるために/ procを使用します。リソースには、cputime、ディスク使用量、ネットワーク使用量が含まれます。私は/ proc/pid/statを見ましたが、必要な詳細が得られているかどうかはわかりません。私は3つすべてのリソースの使用を欲し、私は毎秒それらを監視したい。Linuxのプロセスリソース使用量を取得する(CPU、ディスク、ネットワーク)

+1

すべての3つのリソース(CPU、ディスク、ネットワーク)の情報が必要です – sethu

+0

/proc/pid/statは私にCPU時間を与えますが、マシン全体の合計ネットワークとディスクの統計情報のみを収集できます特定のプロセス – sethu

+0

プロセスごとにディスクとネットワークの統計情報を収集する方法はないと思います。主に、ディスクとネットワークのトラフィックがカーネルの仕組みとしてどのように行われるかにかかっています。たとえば、ディスクへの書き込みはカーネルバッファを介して行われるため、実際にディスクにフラッシュされる前に複数のプロセスが同じバッファにアクセスする可能性があります。 readと同じで、複数のプロセスが同じファイルを読み込み、最初のものだけがカーネルバッファへのポインタを取得するだけで実際のディスクアクセスを引き起こします。 – Soren

答えて

0

プロセスごとにディスクとネットワーク情報を取得する方法はないと思ってください。

グローバルディスクとネットワーク、およびプロセスごとのCPU時間が最適です。

すべては、いくつかの新しいカーネルが/proc/<pid_of_process>/ioファイルを持っているman proc

+0

いくつかのIO情報を追跡することができます(例として 'iotop'ユーティリティを参照してください)。ただし、すべてのカーネルで利用できるわけではありません。 – duskwuff

+0

iotopには新しいバージョンのカーネルが必要です.Iはiotとネットワークの統計情報を見ましたが、新しいバージョンのカーネルを再コンパイルする必要があります。私は最後の手段としてそれを持っていました。 – sethu

4

に記載します。これはIOの統計情報です。 これはman procには書かれていませんが、自分で数字を調べることができます。

希望します。アレックス 。

+0

私はcentos 5.6を使用しています。かなり古いカーネルです。私はそこにioの統計情報を見つけることはできません! – sethu

1

getrusage()は私がネットワークのことは知らないが、CPU、メモリ、ディスクなど

man 2 getrusage

を達成します。

0

このような問題にアプローチする最良の方法は、同様の監視と報告を行うツールのソースコードを見ることです。 /procを直接使用していることは保証されていませんが、問題を解決するための効率的な方法につながります。 あなたの場合、トップ(1)、アイオップ(8)、ネゴグ(8)が気になります。

0

SAR

-x特定のプロセスの統計情報を報告することができます。

詳細については、これを参照してください。 http://www.linuxcommand.org/man_pages/sar1.html

例: のsar -u -r -b 1つの-X PID | grep -v Average | grep -v Linux

+0

この手法ではシステムを再起動する必要があり、rootはシステム全体の統計収集を有効にする必要があります。 –

+0

'-x'または' -X'オプションを指定すると、ディスクまたはネットワークの統計情報ではなく、 'minflt/s majflt/s%user%system nswap/s CPU'の統計だけが表示されます。たとえば、ネットワークの統計情報を表示するために '-n DEV'と指定した場合、sarは別々のヘッダを持つ別々の行を与えます。私はRHEL 5.7でそれをテストしました。 – haridsv

0

checkout glances。

これは、1つの画面上にすべてのCPUディスクとネットワークを持っています。プロセスごとではありませんが、別々の3つのツールを見るよりも優れています。