Linux メモリ管理における RSS と VSZ とは何ですか? 質問する

Linux メモリ管理における RSS と VSZ とは何ですか? 質問する

Linux メモリ管理における RSS と VSZ とは何ですか? マルチスレッド環境では、これら両方をどのように管理および追跡できますか?

ベストアンサー1

RSS は Resident Set Size の略で、プロセスに割り当てられているメモリの量と RAM 内にあるメモリの量を示すために使用されます。スワップ アウトされたメモリは含まれません。共有ライブラリのページが実際にメモリ内にある限り、共有ライブラリのメモリが含まれます。すべてのスタック メモリとヒープ メモリが含まれます。

VSZ は仮想メモリ サイズです。スワップアウトされたメモリ、割り当てられているが使用されていないメモリ、共有ライブラリからのメモリなど、プロセスがアクセスできるすべてのメモリが含まれます。

したがって、プロセス A に 500K のバイナリがあり、2500K の共有ライブラリにリンクされていて、200K のスタック/ヒープ割り当てがあり、そのうち 100K が実際にメモリ内にあり (残りはスワップまたは未使用)、実際にロードされているのは共有ライブラリの 1000K と独自のバイナリの 400K のみである場合、次のようになります。

RSS: 400K + 1000K + 100K = 1500K
VSZ: 500K + 2500K + 200K = 3200K

メモリの一部は共有されており、多くのプロセスがそれを使用する可能性があるため、すべての RSS 値を合計すると、システムの容量よりも多くのスペースが簡単に確保されてしまう可能性があります。

割り当てられたメモリは、プログラムによって実際に使用されるまで RSS に含まれない場合もあります。したがって、プログラムが最初に大量のメモリを割り当て、時間の経過とともにそれを使用すると、RSS が増加し、VSZ が同じままになる可能性があります。

PSS (比例セット サイズ) もあります。これは、現在のプロセスによって使用されている割合として共有メモリを追跡する新しい測定方法です。したがって、以前から同じ共有ライブラリを使用しているプロセスが 2 つある場合は次のようになります。

PSS: 400K + (1000K/2) + 100K = 400K + 500K + 100K = 1000K

すべてのスレッドは同じアドレス空間を共有するため、各スレッドの RSS、VSZ、PSS はプロセス内の他のすべてのスレッドと同一です。Linux/Unix でこの情報を表示するには、ps または top を使用します。

これ以外にも多くのことがあります。詳細については、次の参考資料を参照してください。

以下も参照:

おすすめ記事