カーネルは、スワップするためにコミットするページをどのように決定しますか?

カーネルは、スワップするためにコミットするページをどのように決定しますか?

RAM 使用量が「swapiness」で作成されたレベルより高い場合、カーネルは SWAP を使用します。わかりましたが、カーネルはどのようにプログラムを「注文」しますか? RAMは「先着順」方式ですか?それともSWAPの最大のプログラムですか? RAMで最も一般的に使用されるプログラムは何ですか?

RAMがいっぱいになっているか、またはほとんどいっぱいになったときにカーネルがRAMまたはSWAPをどのように決定するかを知りたいです。

答え1

カーネルメモリ管理は、メモリを構成するために「プログラム」という概念を使用せずにページを使用します。カーネルは、「最も最近使用されたもの」に基づいて決定します(これは変更された可能性がありますが、私が見つけることができる最新の参考資料には、次のようなものがあります。)、カーネルがメモリ不足に直面しているとき(スワップを介してアクセスしにくいページを交換して、より頻繁にアクセスするページや新しいページ(またはディスクキャッシュではない理由)のためのスペースを解放します。

したがって、あなたの家のどれも正確ではありません。プログラムをスワップするように命令する代わりに、カーネルはスワップに割り当てるメモリの部分を統計的に選択します。方式はLRUです。プログラムがコミットした匿名またはプライベートメモリのサイズは、カーネルがコミットするページを選択する方法には影響しません。

を使用して、カーネルがスワップに割り当てたキロバイト(またはページ)の数を確認できますsmem -s swap -t -k -n

関連情報