Linux下清理内存和Cache方法 /proc/sys/vm/drop_caches
yuanwei@ubuntu:/proc/sys/vm$ ls
admin_reserve_kbytes legacy_va_layout oom_dump_tasks
block_dump lowmem_reserve_ratio oom_kill_allocating_task
compact_memory max_map_count overcommit_memory
dirty_background_bytes memory_failure_early_kill overcommit_ratio
dirty_background_ratio memory_failure_recovery page-cluster
dirty_bytes min_free_kbytes panic_on_oom
dirty_expire_centisecs min_slab_ratio percpu_pagelist_fraction
dirty_ratio min_unmapped_ratio scan_unevictable_pages
dirty_writeback_centisecs mmap_min_addr stat_interval
drop_caches nr_hugepages swappiness
extfrag_threshold nr_hugepages_mempolicy user_reserve_kbytes
hugepages_treat_as_movable nr_overcommit_hugepages vfs_cache_pressure
hugetlb_shm_group nr_pdflush_threads zone_reclaim_mode
laptop_mode numa_zonelist_order
没有清理cache 之前, cache 占用了307M内存.
root@ubuntu:/home/yuanwei# free -m
total used free shared buffers cached
Mem: 5225 1074 4151 6 114 307
-/+ buffers/cache: 651 4574
Swap: 4701 0 4701
频繁的文件访问会导致系统的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 notfreeable, the user should run "sync" first in order to make sure allcached objects are freed.
清理之后看. 运行 sync . cache只用了149M内存.
root@ubuntu:/home/yuanwei# free -m
total used free shared buffers cached
Mem: 5225 1010 4215 7 2 149
-/+ buffers/cache: 858 4367
Swap: 4701 0 4701
修改/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的作用基本无法发挥。