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
將這個值設定為 12、或 3 會讓 kernel 放棄多種分頁快取與 slab 快取的組合。
1
系統會無效判定,並釋放所有分頁快取記憶體。
2
系統會釋放所有沒用到的 slab 快取記憶體。
3
系統會釋放所有分頁快取與 slab 快取記憶體。
這是非破壞性的操作。因為需要變更的物件不能被釋放,因此建議您在設定此參數之前,先執行 sync

重要

不建議在正式投產的環境中,使用 drop_caches 來釋放記憶體。
要在微調時暫時設定這些值,請透過 echo 指令將想用的值傳至 proc 檔案系統中。例如要暫時設定 swappiness50,請執行:
# echo 50 > /proc/sys/vm/swappiness
要永久設定這個值,請使用 sysctl 指令。欲知更多詳情,請參閱《建置指南》,網址為 https://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/?locale=zh-TW