Linux内存清理

来源:互联网 发布:mac os x 10.11黑苹果 编辑:程序博客网 时间:2024/06/05 17:17

Linux内存清理


一、手动清理
  1. Writing tothis will cause the kernel to drop clean caches, dentries and inodesfrom memory, causing that memory to become free.
  2. To free pagecache:
  3. * echo1>/proc/sys/vm/drop_caches
  4. To free dentriesand inodes:
  5. * echo2>/proc/sys/vm/drop_caches
  6. To free pagecache, dentries and inodes:
  7. * echo3>/proc/sys/vm/drop_caches
  8. Asthisis a non-destructive operation,and dirty objects are notfreeable, the user should run "sync" firstin order to make sure allcached objects are freed.
  9. This tunable was addedin2.6.16.
这里有三个级别可以使用。使用1时只清理pagecahe ,使用2清理dentries和inodes(也就是slab缓存,查看方式为:cat /proc/meminfo,SReclaimable表示可回收的内存) ,使用3时三者都清理
由于这是一个非破坏性操作而且脏对象不会被释放,因此应当先执行”sync“后再设置这个参数。


二、自动清理
/proc/sys/vm/min_free_kbytes
该文件表示强制Linux VM最低保留多少空闲内存(Kbytes)。
当可用内存低于这个参数时,系统开始回收cache内存,以释放内存,直到可用内存大于这个值。
vm.min_free_kbytes=4096000 //单位 kb
vm.swappiness=40
vm.vfs_cache_pressure=200
说明:
1.调整min_free_kbytes的目的是保持物理内存有足够的空闲空间,防止突发性的换页。
2.swapiness缺省为60,减少swapiness会使系统尽快通过swapout不使用的进程资源来释放更多的物理内存。
3.vfs_cache_pressure的缺省值是100,加大这个参数设置了虚拟内存回收directory和i-node缓冲的倾向这个值越大,回收的倾向越严重。调整这3个参数的目的就是让操作系统在平时就尽快回收缓冲,释放物理内存,这样就可以避免突发性的大规模换页。
减少vfs_cache_pressure的值,会导致内核倾向于保留dentry和inode缓存。
增加vfs_cache_pressure的值,(即超过100时),则会导致内核倾向于重新声明dentries和inodes
总之,vfs_cache_pressure的值:
小于100的值不会导致缓存的大量减少
超过100的值则会告诉内核你希望以高优先级来清理缓存。
其实无论vfs_cache_pressure的值采用什么值,内核清理缓存的速度都是比较低的。
如果将此值设置为10000,系统将会将缓存减少到一个合理的水平。


三、查看空闲内存阈值:
sysctl -a | grep min_free_kbytes
具体设置【重启失效】:
echo 1024000 > /proc/sys/vm/min_free_kbytes //设置1G的阈值
echo 200 > /proc/sys/vm/vfs_cache_pressure
echo 40 > /proc/sys/vm/swappiness
sysctl -w vm.min_free_kbytes=1024000
sysctl -w vm.vfs_cache_pressure=200
sysctl -w vm.swappiness=40
那么Linux空闲内存=102400kb+原始预留空闲内存(如我的是700M左右)

原创粉丝点击