Linux
vm.overcommit_ratio 的剩餘記憶體去哪了?
vm.overcommit_memory
如果我通過設置來禁用記憶體過度使用2
,預設情況下系統將允許分配記憶體到交換的維度 + 50% 的物理記憶體,如此處所述。我可以通過修改
vm.overcommit_ratio
參數來改變比率。假設我將其設置為 80%,因此可以使用 80% 的物理記憶體。我的問題是:
- 系統將如何處理剩餘的 20%?
- 為什麼首先需要這個參數?
- 為什麼我不應該總是將其設置為 100%?
系統將如何處理剩餘的 20%?
核心會將剩餘的物理記憶體用於自己的目的(內部結構、表、緩衝區、記憶體等)。記憶體過度使用設置處理使用者態應用程序虛擬記憶體保留,核心不使用虛擬記憶體而是物理記憶體。
為什麼首先需要這個參數?
該
overcommit_ratio
參數是一種實現選擇,旨在防止應用程序保留比將來合理可用的更多的虛擬記憶體,即當它們實際訪問記憶體時(或至少嘗試訪問)。Linux 核心開發人員認為設置
overcommit_ratio
為 50% 是一個合理的預設值。它假定核心永遠不需要使用超過 50% 的物理 RAM。您的里程可能會有所不同,這是可調參數的原因。為什麼我不應該總是將其設置為 100%?
將其設置為 100%(或任何“太高”的值)並不能可靠地禁用過度使用,因為您不能假設核心將使用 0%(或太少)的 RAM。
它不會阻止應用程序崩潰,因為核心可能會搶占它所需的所有物理記憶體。