參考網站
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指令看到的容量是差不多的
↓ 在執行一些需要大量cache的程式後會發現剩下的記憶體只剩下一點,而實際上處理程序卻沒有用掉那麼多記憶體
↓ 而如果是用htop指令來觀察系統狀況的話會發現memory的bar雖然很長,但是實際上卻只吃掉1GB的記憶體,其實bar的黃色部分是cache佔用的,處理程序要使用時kenel還是會自動將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不見了
打完收工,感謝收看嚕~