參考資料
http://www.kernel.org/doc/Documentation/sysctl/vm.txt
(註:用free指令可以看目前的記憶體使用狀況)
幾個比較有用的:
(用
cat查值;用
echo > 寫值,例:
echo 2 > /proc/sys/vm/overcommit_memory)
drop_caches:
利用echo寫入,就可以讓linux放掉cache,讓free記憶體變多。
這操作是無害的,不會放掉髒資料(暫存卻還未寫入)。
可以在操作前先做sync寫入髒資料,這樣釋放的記憶體就會比較多。
min_free_kbytes:
設定最少必須保留多少kb的free記憶體。
不要設低於1024,不然很可能會有問題。
但設太高的話,系統就容易OOM(記憶體用光)。
overcommit_memory:
可能的值有0,1,2,預設為0。
0的話系統即使在程式要求梢多於可用記憶體時也會接受,想辦法從其他地方擠出來給你用。
(這就是overcommit)
1的話程式的記憶體要求永遠不會被拒絕。
2的話相對就是保守,超過的要求就會被拒絕。(和overcommit_ratio搭配使用)
overcommit_ratio:
當overcommit_memory被設成2,就會參考這邊的值。
這時使用者程式可用的記憶體就是swap+(實體記憶體*overcommit_ratio%)
vfs_cache_pressure:
系統取回cache的傾向,預設為100。
越低的話系統越不會放掉cache,最小為0,就永遠不放,一下就會OOM了。
反之高則沒有極限的樣子,
http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.7/2.6.7-mm1/broken-out/vfs-shrinkage-tuning.patch
甚至可以設到10萬。
一般使用者沒什麼必要去調這些就是了...
除非是在資源很少的機器上,或是高負載會碰到OOM的情況再來看這邊調整就好。
真的要詳細了解記憶體的話
Understanding the Linux Virtual Memory Manager
http://kernel.org/doc/gorman/
可以直接下載,深度了解linux的記憶體機制。(很硬...)