echo /proc/vm/drop_caches

关于echo 多少清理缓存的总结

/proc 主要体现的是进程和内核的一些信息的状态,多数的文件是只读的,但是管理员可以对 /proc/sys 中的一些子文件进行修改,

更改内核的运行特性。

echo N > /proc/sys/vm/drop_caches   对于n的值不同的时候表现的free -m 的表现也是不同的

可以查看一下 /proc/sys/vm/drop_caches 的初始值是多少。记录下来

echo 1 > /proc/sys/vm/drop_caches 

主要发生变化的是buffer 和 cache的两个选项

这里写图片描述

由于后边的两个选项发生了变化,前边的两个 used 和 free 两个都发生变化了

执行echo 2 > /proc/sys/vm/drop_caches, 其中绿色框是标记发生改变的部分,这次仅有buffers由0变为1,cached基本没有变化。

这里写图片描述

执行echo 3 > /proc/sys/vm/drop_caches, 这次基本上,和写入2区别不大,没有什么变化。

这里写图片描述

以上的现象说明了:

通过输入不同的值,buffers 是有不同的变化的

2.1、内核文档说明

  查看linux内核文档,可以得到以下信息:

这里写图片描述

可以看出 /proc/sys 是一个虚拟的文件系统,我们可以通过对它的读写操作,作为与kernel的实体间的通信的一种手段,可以通过echo 不同的数字来释放内存。默认值是0

向drop_caches 中写入数字。可以释放缓存,执行之前可以先sync,然后再执行echo 数字的命令。

sync的命令可以将所有未写的系统缓冲区,写到磁盘中,包含已经修改的inode,已延迟的块和读写的映射文件

执行echo 1 2 3达到不同的清理目的

2.2、使用建议

这里找到一份关于清理缓存的使用建议手工释放linux内存.

  实际项目中告诉我们,如果因为是应用有像内存泄露、溢出的问题,从swap的使用情况是可以比较快速可以判断的,但free上面反而比较难查看。相反,如果在这个时候,我们告诉用户,修改系统的一个值,“可以”释放内存,free就大了。用户会怎么想?不会觉得操作系统“有问题”吗?所以说,我觉得既然核心是可以快速清空buffer或cache,也不难做到(这从上面的操作中可以明显看到),但核心并没有这样做(默认值是0),我们就不应该随便去改变它。

  一般情况下,应用在系统上稳定运行了,free值也会保持在一个稳定值的,虽然看上去可能比较小。当发生内存不足、应用获取不到可用内存、OOM错误等问题时,还是更应该去分析应用方面的原因,如用户量太大导致内存不足、发生应用内存溢出等情况,否则,清空buffer,强制腾出free的大小,可能只是把问题给暂时屏蔽了。

  我觉得,排除内存不足的情况外,除非是在软件开发阶段,需要临时清掉buffer,以判断应用的内存使用情况;或应用已经不再提供支持,即使应用对内存的时候确实有问题,而且无法避免的情况下,才考虑定时清空buffer。(可惜,这样的应用通常都是运行在老的操作系统版本上,上面的操作也解决不了)。
 

 

 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值