釋放與清除 Linux記憶體中的Cache Memory
發表於 : 2011-03-02 11:47:50
http://gwokae.mewggle.com/wordpress/ind ... chives/544
在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可以使用下面的指令
3 是指釋放pagecache、dentries與inodes,也就是釋放所有的cache,其他也可以下:
#釋放pagecache
#釋放dentries與inodes
↓ 下過指令後,就可以在htop中就可以觀察到黃色部分的cache不見了
linux_htop
打完收工,感謝收看嚕~
在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
#釋放pagecache
代碼: 選擇全部
echo 1 > /proc/sys/vm/drop_caches
代碼: 選擇全部
echo 2 > /proc/sys/vm/drop_caches
linux_htop
打完收工,感謝收看嚕~