2008-08-04 9 views
22

Solaris, HP-UXAIXでプロセスサイズを取得する正しい方法は何ですか? topまたはps -o vszなどを使用する必要がありますか?UNIXでのプロセスサイズ

答えて

17

vsize,rss,rprvtrshrdのような正確な定義は、OSによって異なります。 topコマンドとpsコマンドのマニュアルページには何らかの記述がありますが、そのような記述はすべて簡略化されています(または、長い間絶滅したカーネル実装に基づいています)。
"プロセスサイズ"という概念は、一般的なケースでピン止めするのは大変難しいです。具体的な例の答えは、OSの実際のメモリ管理の実装に大きく依存しており、ほとんどのユーザー(および大部分の開発者)の心に存在するきちんとした「プロセスサイズ」の概念ほど満足できるものではありません。

たとえば、特定の空きメモリ量でこのようなプロセスが一度に実行できる数を正確に示すために、これらの数値(またはそれらの組み合わせはありません)を使用することはできません。しかし、本当に、あなたの最善の賭けは、その終わりからそれに来ることです:あなたはなぜこの番号が欲しいのですか?その情報を考えれば、より有益な答えが得られると思います。

3

はい、あなたはVSZでロックする権利があります。

ps uは、仮想メモリサイズと常駐セットサイズであるVSZとRSSを提供します。 RSSはプロセスに割り当てられている物理メモリの量で、VSZはプロセスの仮想メモリサイズです。複数のプログラムのコピーを実行している場合、VSZ内の多くのメモリがそれらのプロセス間で共有されます。

+3

何に興味がありますが、メモリの消費量であればVSZ番号は無用です。 VSZは、プロセスが仮想メモリ空​​間にどれだけ触れているかをオペレーティングシステムによってマッピングされるべきメモリと見なします。しかし、実際にメモリに触れて使用したかどうかは関係ありません。 VSZは、プロセスがどのようにメモリ割り当てを行うかについての内部的な詳細です。 RSSを実際に使用し始めたメモリページの数を調べてください。 –

5

Solarisでは、pmapコマンドを使用して、プロセスのメモリ使用量に関する詳細情報を取得できます。特に、pmap -x <pid>は、プロセスのメモリのどれくらいが共有されているのか、そしてそのプロセスがどのくらい具体的に使用しているかを示しています。これは、プロセスの "限界的な"メモリ使用量を調べるのに便利です。この手法では、共有ライブラリの重複を避けることができます。

2

私は(rootとして)このようなすべてのプロセスの常駐セットサイズを総括:

ps ax -o rss | awk '{rss += $1;} END { print rss}'