您的位置:首页 > 运维架构 > Linux

Linux下清理内存和Cache方法

2016-03-28 23:29 686 查看
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的作用基本无法发挥。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: