getrusageシステムコール:「最大常駐セットサイズ」とは何ですか?

getrusageシステムコール:「最大常駐セットサイズ」とは何ですか?

man getrusage 2説明する

ru_maxrss (since Linux 2.6.32)
              This is the maximum resident set size used (in kilobytes). For RUSAGE_CHILDREN, this is the resident set size of the largest
              child, not the maximum resident set size of the process tree.

それでは、この数字は実際に何を意味しますか?

ベストアンサー1

プロセスの常駐セットサイズは、プロセスに属し、現在のRAM(スワップされていない、または非常駐する物理RAM)に存在(常駐)するメモリの量です。

たとえば、プロセスがメモリブロック(たとえば100 Mb)を割り当てて、それを積極的に使用(読み取り/書き込み)すると、常駐セットサイズは約100 Mb(オーバーヘッド、コードセグメントなどを含む)になります。プロセスが一定期間そのメモリ使用量を停止する(解放しない)場合、オペレーティングシステムはそのメモリブロックを交換して他のプロセス(またはキャッシュ)のためのスペースを解放します。これにより、常駐セットサイズは交換されたコアの数だけ減少します。プロセスが起きてメモリを再利用し始めると、カーネルはスワップ領域からデータを再ロードし、常駐セットサイズは再び増加します。

ru_maxrssフィールドは、常駐セットstruct rusageサイズの「ハイウォーターマーク」です。これは、このプロセスの最大RAM使用量(使用中)を示しますRUSAGE_SELF

プロセスの常駐セットサイズを制限することで、単一のアプリケーションがシステム内のすべてのRAMを「使用」し、他のアプリケーションを強制的に交換(またはメモリ不足のために完全に障害)するのを防ぎます。

おすすめ記事