多くの人がこれが何をするかについて主観的な説明を投稿しているのを見てきました。これがうまくいけば、より完全な答えです。
2.6.28 以降の分割 LRU では、Linux swappiness は、両方の LRU で構築された圧力を決定するために計算される割合を任意に変更するために使用される乗数です。
したがって、たとえば、空きメモリが残っていないシステムでは、既存のメモリの値は、「アクティブ」としてリストされているメモリの量の割合と、ページがアクティブに昇格された後にページが昇格される頻度の割合に基づいて測定されます。非活動リストに入る。
アクティブなページと非アクティブなページの間で多くのページの昇格/降格を行う LRU はよく使用されます。
通常、ファイルにバックアップされたストレージは、メモリが不足している場合に削除する方が安価で安全であり、自動的に 200 の修飾子が与えられます (これにより、ファイルにバックアップされたメモリは、これを乗算すると、スワップにバックアップされたメモリ (値が 0) よりも 200 倍価値がなくなります)。分数。
swappiness が行うことは、指定した swappiness 値 (デフォルトは 60) をファイル メモリに差し引き、乗数として与えた swappiness 値を anon メモリに追加することで、この値を変更することです。したがって、デフォルトの swappiness では、匿名メモリはファイル メモリの 80 倍の価値があります (ファイルの場合は 200-60、anon の場合は 0+60)。したがって、すべてのメモリを使い果たした典型的な Linux システムでは、ページ キャッシュを優先して匿名メモリをスワップ アウトするには、ページ キャッシュが匿名メモリの 80 倍アクティブである必要があります。
swappiness を 100 に設定すると、anon に 100 の修飾子が与えられ、ファイル メモリに 100 (200 - 100) の修飾子が与えられ、両方の LRU が等しく重み付けされます。したがって、anon メモリがページ キャッシュほどアクティブでない場合にページ キャッシュが必要なファイル負荷の高いシステムでは、追加のページ キャッシュ用のスペースを確保するために anon メモリがディスクにスワップされます。