2009年12月13日 星期日

Linux kernel Overcommit and OOM

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 意見: