Solaris, HP-UX
とAIX
でプロセスサイズを取得する正しい方法は何ですか? top
またはps -o vsz
などを使用する必要がありますか?UNIXでのプロセスサイズ
答えて
vsize
,rss
,rprvt
、rshrd
のような正確な定義は、OSによって異なります。 top
コマンドとps
コマンドのマニュアルページには何らかの記述がありますが、そのような記述はすべて簡略化されています(または、長い間絶滅したカーネル実装に基づいています)。
"プロセスサイズ"という概念は、一般的なケースでピン止めするのは大変難しいです。具体的な例の答えは、OSの実際のメモリ管理の実装に大きく依存しており、ほとんどのユーザー(および大部分の開発者)の心に存在するきちんとした「プロセスサイズ」の概念ほど満足できるものではありません。
たとえば、特定の空きメモリ量でこのようなプロセスが一度に実行できる数を正確に示すために、これらの数値(またはそれらの組み合わせはありません)を使用することはできません。しかし、本当に、あなたの最善の賭けは、その終わりからそれに来ることです:あなたはなぜこの番号が欲しいのですか?その情報を考えれば、より有益な答えが得られると思います。
はい、あなたはVSZでロックする権利があります。
ps u
は、仮想メモリサイズと常駐セットサイズであるVSZとRSSを提供します。 RSSはプロセスに割り当てられている物理メモリの量で、VSZはプロセスの仮想メモリサイズです。複数のプログラムのコピーを実行している場合、VSZ内の多くのメモリがそれらのプロセス間で共有されます。
Solarisでは、pmap
コマンドを使用して、プロセスのメモリ使用量に関する詳細情報を取得できます。特に、pmap -x <pid>
は、プロセスのメモリのどれくらいが共有されているのか、そしてそのプロセスがどのくらい具体的に使用しているかを示しています。これは、プロセスの "限界的な"メモリ使用量を調べるのに便利です。この手法では、共有ライブラリの重複を避けることができます。
私は(rootとして)このようなすべてのプロセスの常駐セットサイズを総括:
ps ax -o rss | awk '{rss += $1;} END { print rss}'
- 1. プロセスサイズの決定方法は?
- 2. は、ウェブクラッカーは、UNIXではUNIXサーバ
- 3. Unix/LinuxでDebugBreak?
- 4. UNIX
- 5. UNIXでのexeclの動作
- 6. UnixでのODBCエントリのテスト
- 7. UNIXでのコンパイラの問題
- 8. UnixでのフリーC#コンパイラ
- 9. 当社のUNIXサーバで
- 10. UNIX環境下でのネットワーキングプログラミングスキル
- 11. マルチスレッド - Unixでの同期
- 12. Linux/UnixのwxCriticalSection
- 13. UnixのC++タイマー
- 14. Unixの権限
- 15. freeBSD unixのfork
- 16. msysgitのUnixパスワード
- 17. ElixirのUnixドメインソケット
- 18. UNIXシステムコールのリスティング?
- 19. Unixの `PHP
- 20. UNIXヘキサダンプのエンディアン
- 21. IsBadReadPtr Unixのアナログ
- 22. UNIXファイル
- 23. はUNIX
- 24. UNIXプログラミング
- 25. UNIXシステムコールモニタ
- 26. UNIXシェルグロブ
- 27. UNIXエクスポートコマンド
- 28. のMySQL&Unixのタイムスタンプクエリ
- 29. gdbでUnixパイプをデバッグ
- 30. sqlite3でunixタイムスタンプを読む
何に興味がありますが、メモリの消費量であればVSZ番号は無用です。 VSZは、プロセスが仮想メモリ空間にどれだけ触れているかをオペレーティングシステムによってマッピングされるべきメモリと見なします。しかし、実際にメモリに触れて使用したかどうかは関係ありません。 VSZは、プロセスがどのようにメモリ割り当てを行うかについての内部的な詳細です。 RSSを実際に使用し始めたメモリページの数を調べてください。 –