1. 程式人生 > >Linux下清理Cache方法

Linux下清理Cache方法


頻繁的檔案訪問會導致系統的Cache使用量大增
$ free -m
             total       used       free     shared    buffers     cached
Mem:          3955       3926         28          0         55       3459
-/+ buffers/cache:        411       3544
Swap:         5726          0       5726
free記憶體減少到幾十兆,系統執行緩慢

執行sync將dirty的內容寫回硬碟
$sync

通過修改proc系統的drop_caches清理free的cache
$echo 3 > /proc/sys/vm/drop_caches

drop_caches的詳細文件如下:

Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.

To free pagecache:

    * echo 1 > /proc/sys/vm/drop_caches

To free dentries and inodes:

    * echo 2 > /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes:

    * echo 3 > /proc/sys/vm/drop_caches

As this is a non-destructive operation, and dirty objects are not freeable, the user should run "sync" first in order to make sure all cached objects are freed.

This tunable was added in 2.6.16.

修改/etc/sysctl.conf 新增如下選項後就不會記憶體持續增加
 
vm.dirty_ratio = 1
 
vm.dirty_background_ratio=1
 
vm.dirty_writeback_centisecs=2
 
vm.dirty_expire_centisecs=3
 
vm.drop_caches=3
 
vm.swappiness =100
 
vm.vfs_cache_pressure=163
 
vm.overcommit_memory=2
 
vm.lowmem_reserve_ratio=32 32 8
 
kern.maxvnodes=3
上面的設定比較粗暴,使cache的作用基本無法發揮。需要根據機器的狀況進行適當的調節尋找最佳的折衷。