Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
5.5. 微調虛擬記憶體
通常使用虛擬記憶體的是程序、檔案系統快取、以及 kernel。要妥善使用虛擬記憶體,得依賴多種因素,而這些因素可以由以下參數調整:
swappiness
- 其值為 0 到 100,控制系統 swap(記憶體置換)的程度。值愈高表示效能優先,系統會積極地將非作用中的程序移出實體記憶體。值愈低則儘可能避免 swap,降低回應的延遲時間。預設值為
60
。 min_free_kbytes
- 系統上保留的最低 swap 空間,單位為 KB。用來計算每個低記憶體區域的浮水印值,然後依照大小比例,指定保留記憶體分頁的值。
警告
設定此參數時請小心,過高或過低的值都會造成傷害。將min_free_kbytes
設定得太低,會讓系統無法取回記憶體。這會導致系統無法回應,並透過 OOM-killing 機制,終結多個程序。然而,將這個值設得太高(系統總記憶體的 5-10%)會馬上導致系統記憶體不足。Linux 的設計,是使用所有可用記憶體來快取檔案系統的資料。將min_free_kbytes
值設定得太高,會讓系統花去太多時間取回記憶體。 dirty_ratio
- 百分比數值。當需要變更的資料累積到系統總記憶體的此百分比時,就開始將需要變更資料寫出(透過 pdflush)。預設值為
20
。 dirty_background_ratio
- 百分比數值。當需要變更的資料累積到系統總記憶體的此百分比時,就開始在背景將需要變更資料寫出(透過 pdflush)。預設值為
10
。 drop_caches
- 將這個值設定為
1
、2
、或3
會讓 kernel 放棄多種分頁快取與 slab 快取的組合。- 1
- 系統會無效判定,並釋放所有分頁快取記憶體。
- 2
- 系統會釋放所有沒用到的 slab 快取記憶體。
- 3
- 系統會釋放所有分頁快取與 slab 快取記憶體。
這是非破壞性的操作。因為需要變更的物件不能被釋放,因此建議您在設定此參數之前,先執行sync
。重要
不建議在正式投產的環境中,使用drop_caches
來釋放記憶體。
要在微調時暫時設定這些值,請透過 echo 指令將想用的值傳至 proc 檔案系統中。例如要暫時設定
swappiness
為 50
,請執行:
# echo 50 > /proc/sys/vm/swappiness
要永久設定這個值,請使用
sysctl
指令。欲知更多詳情,請參閱《建置指南》,網址為 https://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/?locale=zh-TW。