釋放與清除 Linux記憶體中的Cache Memory

參考網站
http://www.ubuntu-unleashed.com/2008/04/free-up-cache-memory-in-linux.html
http://www.linuxinsight.com/proc_sys_vm_drop_caches.html
http://blog.linux.org.tw/~jserv/archives/002039.html
http://phorum.study-area.org/index.php?topic=39976.0;wap2

在Linux Kernel 2.6.16後對於Linux的VM(Virtual Memory)進行了調整,因此會在top等指令發現雖然process所使用的記憶體不多,但是透過free來觀察卻發現只剩下一點點的剩餘記憶體。

但是關閉一些程式卻發現total的free memory並沒有被釋放,造成系統剩餘記憶體總是不夠的感覺,而全部processes佔用的記憶體好像也沒有實際上看到的那麼多,這其實是cache占用了memory中的空間。而且但是根據小州老師(kenduest,是我的啟蒙恩師呢~泣~)表示,雖然記憶體剩餘空間看起來沒有被釋放,但是process實際需要使用時kernel仍會自動從memory釋放cache給process使用,所以使用者不必擔心。

↓ 使用top指令看到的剩餘記憶體,與free指令看到的容量是差不多的
linux_top

↓ 在執行一些需要大量cache的程式後會發現剩下的記憶體只剩下一點,而實際上處理程序卻沒有用掉那麼多記憶體
linux_top_cache

↓ 而如果是用htop指令來觀察系統狀況的話會發現memory的bar雖然很長,但是實際上卻只吃掉1GB的記憶體,其實bar的黃色部分是cache佔用的,處理程序要使用時kenel還是會自動將cache釋放給處理程序使用。
linux_htop_cache

要強制手動釋放或清除Linux中的Cache Memory可以使用下面的指令

echo 3 > /proc/sys/vm/drop_caches

3 是指釋放pagecache、dentries與inodes,也就是釋放所有的cache,其他也可以下:

#釋放pagecache
echo 1 > /proc/sys/vm/drop_caches

#釋放dentries與inodes
echo 2 > /proc/sys/vm/drop_caches

↓ 下過指令後,就可以在htop中就可以觀察到黃色部分的cache不見了
linux_htop

打完收工,感謝收看嚕~

2 Replies to “釋放與清除 Linux記憶體中的Cache Memory”

Comments are closed.