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

回覆文章
yehlu
Site Admin
文章: 3244
註冊時間: 2004-04-15 17:20:21
來自: CodeCharge Support Engineer

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

文章 yehlu »

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可以使用下面的指令

代碼: 選擇全部

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

打完收工,感謝收看嚕~
回覆文章

回到「Linux」