毎秒特定のプロセスのリソース使用量を見つけるために/ procを使用します。リソースには、cputime、ディスク使用量、ネットワーク使用量が含まれます。私は/ proc/pid/statを見ましたが、必要な詳細が得られているかどうかはわかりません。私は3つすべてのリソースの使用を欲し、私は毎秒それらを監視したい。Linuxのプロセスリソース使用量を取得する(CPU、ディスク、ネットワーク)
答えて
プロセスごとにディスクとネットワーク情報を取得する方法はないと思ってください。
グローバルディスクとネットワーク、およびプロセスごとのCPU時間が最適です。
すべては、いくつかの新しいカーネルが/proc/<pid_of_process>/io
ファイルを持っているman proc
に記載します。これはIOの統計情報です。 これはman procには書かれていませんが、自分で数字を調べることができます。
希望します。アレックス 。
私はcentos 5.6を使用しています。かなり古いカーネルです。私はそこにioの統計情報を見つけることはできません! – sethu
getrusage()
は私がネットワークのことは知らないが、CPU、メモリ、ディスクなど
man 2 getrusage
を達成します。
このような問題にアプローチする最良の方法は、同様の監視と報告を行うツールのソースコードを見ることです。 /procを直接使用していることは保証されていませんが、問題を解決するための効率的な方法につながります。 あなたの場合、トップ(1)、アイオップ(8)、ネゴグ(8)が気になります。
SAR
-x特定のプロセスの統計情報を報告することができます。
詳細については、これを参照してください。 http://www.linuxcommand.org/man_pages/sar1.html
例: のsar -u -r -b 1つの-X PID | grep -v Average | grep -v Linux
この手法ではシステムを再起動する必要があり、rootはシステム全体の統計収集を有効にする必要があります。 –
'-x'または' -X'オプションを指定すると、ディスクまたはネットワークの統計情報ではなく、 'minflt/s majflt/s%user%system nswap/s CPU'の統計だけが表示されます。たとえば、ネットワークの統計情報を表示するために '-n DEV'と指定した場合、sarは別々のヘッダを持つ別々の行を与えます。私はRHEL 5.7でそれをテストしました。 – haridsv
checkout glances。
これは、1つの画面上にすべてのCPUディスクとネットワークを持っています。プロセスごとではありませんが、別々の3つのツールを見るよりも優れています。
すべての3つのリソース(CPU、ディスク、ネットワーク)の情報が必要です – sethu
/proc/pid/statは私にCPU時間を与えますが、マシン全体の合計ネットワークとディスクの統計情報のみを収集できます特定のプロセス – sethu
プロセスごとにディスクとネットワークの統計情報を収集する方法はないと思います。主に、ディスクとネットワークのトラフィックがカーネルの仕組みとしてどのように行われるかにかかっています。たとえば、ディスクへの書き込みはカーネルバッファを介して行われるため、実際にディスクにフラッシュされる前に複数のプロセスが同じバッファにアクセスする可能性があります。 readと同じで、複数のプロセスが同じファイルを読み込み、最初のものだけがカーネルバッファへのポインタを取得するだけで実際のディスクアクセスを引き起こします。 – Soren