來源: http://blog.yesican.tw/?p=912
幾天突然發現記憶體完全被吃光,連swap也一樣,硬碟也發出存取的聲音,查出原因是rtorrent非常耗記憶體,雖然抓檔速度超快,但是關掉後也沒將記憶體釋放,對整個系統還是有那麼一點影響,所以還是先採取手動釋放記憶體,經過釋放記憶體後,整個系統感覺也較順了。


image

我使用的coLinux的核心版本為2.6.22.18,而Linux 在Kernels 2.6.16以後的版本對vm做了很大的調整,可透過/proc/sys/vm/drop_caches這個檔案來釋放記憶體。
1.釋放Linux記憶體(kernels 2.6.16以後的版本):

root@yesican:~# echo 1 > /proc/sys/vm/drop_caches

釋放dentries、inodes所用的 cache memory。

root@yesican:~# echo 2 > /proc/sys/vm/drop_caches

釋放pagecache、dentry、inode 所用的 cache memory。

root@yesican:~# echo 3 > /proc/sys/vm/drop_caches

完全釋放cache memory,必須先執行sync,避免錯誤。

root@yesican:~# sync

在釋放記憶體後再將/proc/sys/vm/drop_caches的值設為0。

root@yesican:~# echo 0 > /proc/sys/vm/drop_caches

2.釋放Linux swap 記憶體:(此例swap在/dev/cobd1)

root@yesican:~# swapoff /dev/cobd1;swapon /dev/cobd1

釋放記憶體後:
image

3.一些觀察記憶體狀況的常用指令:

root@yesican:~# free

root@yesican:~# vmstat

root@yesican:~# ps -aux

root@yesican:~# top

root@yesican:~# watch cat /proc/meminfo

參考資料:Drop Caches


huenlil 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • 訪客
  • 你的參考資料也寫了
    This is a non-destructive operation and will only free things that are completely unused. Dirty objects will continue to be in use until written out to disk and are not freeable. If you run "sync" first to flush them out to disk, these drop operations will tend to free more memory.

    不需要先做sync也行
    這指令是完全無害的,髒資料不會被丟掉
    只是先做sync的話可以多放一點罷了

    最後再把它設為0更是沒有必要的
    它並不真正是個檔案,裡面的數字沒有意義
  • you are right,
    thanks

    huenlil 於 2013/04/30 10:54 回覆

【 X 關閉 】

【PIXNET 痞客邦】國外旅遊調查
您是我們挑選到的讀者!

填完問卷將有機會獲得心動好禮哦(注意:關閉此視窗將不再出現)

立即填寫取消