Introduction
本文介紹 Linux Kernel Overcommit 與 OOM(Out Of Memory) 管理機制。
HighLights
本文討論下列項目:
- Overcommit 與 OOM 簡介
- Kernel's Overcommit Behavior
Overcommit 與 OOM
資源有限,實際記憶體就那麼多,當想使用比實際記憶體還大的空間時,稱之為過量使用 (Overcommit),過量使用伴隨而來的就是所謂 OOM (Out Of Memory) - 記憶體耗盡現象。
Kernel's Overcommit Behavior
Linux 提供三種 Overcommit 處理模式,管理者可以設定 /proc/sys/vm/overcommit_memory 這個檔案內的數值以改變 Overcommit 模式:
- 0: 使用預設的 Overcommit 機制,當記憶體 Overcommit 時,Kernel 會挑選一個最不重要且又佔用很多記憶體的 Process 並使用 OOM Killer 終止它。
- 1: 永遠允許 Overcommit
- 2: 不允許 Overcommit。當使用這個模式時,全部可配置的記憶體(Total commit) 不可超過 swap + RAM * overcommit_ratio。
舉個例子: 系統上有 256MB RAM 及 256MB swap,假設想限制的 Overcommit 目標為 384MB,256MB + 50% * 256MB = 384MB,故應將 overcommit_ration 設為 50:
也可以使用 sysctl 指令來設定 overcommit_memory 及 overcommit_ratio,例如:
/proc/sys/vm/overcmmit_ratio 預設為 50。
0 意見:
張貼留言