Linux

swappiness 是絕對的還是相對於記憶體大小的?

  • August 24, 2017

保留在物理記憶體中的虛擬記憶體量是否取決於物理記憶體大小?

假設我的交換參數為 60,我的 8GB 中的 4GB 填充了應用程序數據,另外 4GB 填充了文件記憶體。

在具有相同交換參數但只有 4GB 物理記憶體的相同工作負載下,所有 4GB 是否會被應用程序數據填充或更少?

它是成比例的,根本不基於記憶體大小。程式碼在mm/vmscan.c. 在檢查了一些病態條件後,例如完全沒有交換空間(然後只有文件支持的頁面將被掃描作為被逐出記憶體的候選者),幾乎沒有記憶體(文件支持的記憶體和匿名記憶體將被同等掃描),或者頁面記憶體變得非常大並且充滿了非活動頁面(只會掃描文件支持的頁面),我們點擊這個:

/*
* With swappiness at 100, anonymous and file have the same priority.
* This scanning priority is essentially the inverse of IO cost.
*/
anon_prio = swappiness;
file_prio = 200 - anon_prio;

根據記憶體掃描器最近在釋放每種類型的記憶體方面取得的成功,這些優先級得到進一步調整。然後按比例掃描每種類型的記憶體,將最近未使用的頁面逐出。

歸根結底,這一切都取決於工作量。swappiness 值告訴系統為嘗試換出匿名記憶體分配什麼優先級,但記憶體訪問模式將決定實際發生的情況。

引用自:https://unix.stackexchange.com/questions/386538