echo N>/proc/sys/vm/drop_caches清理缓存

引言:在内核窗口—proc文件系统这篇笔记中,我们介绍了/proc主要体现进程及内核信息状态。与/proc下其它文件的“只读”属性不同的是,管理员可对/proc/sys子目录的许多文件内容进行修改,以更改内核的运行特性。写入操作一般类似于 echo DATA >/path/to/your/filename的格式进行。这里以echo N>/proc/sys/vm/drop_caches为例介绍说明。


一、问题现象:

echo N > /proc/sys/vm/drop_caches , 当N数值不同时,free –m存在差异

1.1、echo写入数值之前—free-m内容

首先查看/proc/sys/vm/drop_caches的默认值,以便可以修改回来

图1、/proc/sys/vm/drop_caches默认值

然后free-m查看此时内存使用情况,对于各字段含义,可以参考:linux free命令使用。

图2、未更改数据时free -m内容
1.2、echo写入不同数据—free-m内容

执行echo 1 > /proc/sys/vm/drop_caches, 其中绿色框是标记发生改变的部分,由于buffers 和 cached数值变化,第一行free和used均发生变化。

图3、echo 1 > /proc/sys/vm/drop_caches

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

图4、echo 2 > /proc/sys/vm/drop_caches

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

图5、echo 3 > /proc/sys/vm/drop_caches

二、现象解释:

  前面我们执行echo N > /proc/sys/vm/drop_caches,再free –m查看内存使用情况,输入不同的N值,free –m内存中缓存buffers会有差异,现在我们就是要解释/proc/sys/vm、drop_caches, 这个文件到底是什么?另外可以写入哪些数值,具体适用于什么场景。

2.1、内核文档说明

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

图6、linux内核文档关于drop_caches的说明

  可以看出,/proc/sys是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。其默认数值为0.

  向/proc/sys/vm/drop_caches中写入内容,会清理缓存。建议先执行sync(sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)。执行echo 1、2、3 至 /proc/sys/vm/drop_caches, 达到不同的清理目的。

2.2、使用建议

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

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

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

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


三、小结:

  与/proc下其它文件的“只读”属性不同的是,管理员可对/proc/sys子目录的许多文件内容进行修改,以更改内核的运行特性。写入操作一般类似于 echo DATA >/path/to/your/filename的格式进行。本篇文章以echo N>/proc/sys/vm/drop_caches为例,介绍了写入不同数值,清理缓存的作用。

图7、管理员拥有写权限

参考资料:
1、linux free命令使用
2、linux内核文档
3、手工释放linux内存.

纠错与建议
邮箱:db_hebut@163.com


版权声明


原文链接:https://blog.csdn.net/XD_hebuters/article/details/79608136

Linux shell:echo N > /proc/sys/vm/drop_caches清理缓存相关推荐

  1. linux的cache过高的原因定位与解决echo 3 > /proc/sys/vm/drop_caches

    先说结论解决办法: 一.在crontab定时执行echo 3> /proc/sys/vm/drop_caches清理缓存.治标不治本,过段时间缓存又会增加上来. 二.hcache -top 10 ...

  2. linux跑程序占用缓存过多释放内存echo 3 > /proc/sys/vm/drop_caches

    在跑pytorch时出现了占用内存过多的问题,当然这个问题可以通过调小num_workers解决,不过还有手动解决办法就是释放内存,命令如下: echo 3 > /proc/sys/vm/dro ...

  3. Linux下清理内存和Cache方法 /proc/sys/vm/drop_caches

    Linux下清理内存和Cache方法 /proc/sys/vm/drop_caches 频繁的文件访问会导致系统的Cache使用量大增 $ free -m total used free shared ...

  4. linux内存——/proc/sys/vm/drop_caches

    原贴:http://www.linuxfly.org/post/320/ http://blog.csdn.net/chinalinuxzend/article/category/265273/2 h ...

  5. 手工释放linux内存——/proc/sys/vm/drop_caches

    总有很多朋友对于Linux的内存管理有疑问,之前一篇[转]理解Linux的性能日志似乎也没能清除大家的疑虑.而在新版核心中,似乎对这个问题提供了新的解决方法,特转出来给大家参考一下.最后,还附上我对这 ...

  6. linux proc 自动清理,Linux下清理内存和Cache方法 /proc/sys/vm/drop_caches

    Linux下清理内存和Cache方法 /proc/sys/vm/drop_caches 频繁的文件访问会导致系统的Cache使用量大增 $ free -m total used free shared ...

  7. /proc/sys/vm虚拟内存参数

    1.admin_reserve_kbytes 给有cap_sys_admin权限的用户保留的内存数量,默认值是min(free pages * 3%, 8MB).这些内存是为了给管理员登录和杀死进程恢 ...

  8. /proc/sys/vm/ 内存参数

    linux下proc里关于磁盘性能的参数 http://blog.csdn.net/eroswang/article/details/6126646  我们在磁盘写操作持续繁忙的服务器上曾经碰到一个特 ...

  9. dirty_background_ration 与 /proc/sys/vm/dirty_ratio

    wappiness的值的大小对如何使用swap分区是有着很大的联系的.swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用s ...

  10. Linux Shell - echo 命令输出格式

    Linux Shell - echo 命令输出格式 1. echo - display a line of text Echo the STRING(s) to standard output. ec ...

最新文章

  1. python 计算协方差_python 线性代数:[12]求协方差矩阵
  2. Python计算信息熵
  3. Docker(三) 使用容器数据卷实现数据持久化与容器数据共享
  4. CSS3 响应式布局之响应式图片
  5. Android笔记 fragment的向下兼容
  6. 现在生活好累啊。。。
  7. php 打印 域名ip_php如何获取域名IP地址代码函数
  8. Result Cache结果高速缓存 (转)
  9. 关于全局低级键盘hook的记录(WH_KEYBOARD_LL)
  10. oracle 数据库为nomount状态,oracle 数据库为nomount状态
  11. 计算机软件在哪里建文本文档,如何新建文档
  12. ceb怎么转换成word_关于把CEB文件转换成word文档!!!
  13. 计算机视觉资料大合集
  14. Linux 下载GCC
  15. 软件实施工程师职业规划
  16. itextpdf将带复选框的html_使用flying-saucer 实现 html转pdf实现input框select,textarea checkbox等的显示...
  17. opencv vs2010 应用程序无法正常启动(oxc000007b) 解决
  18. HDFS物理块存储大小
  19. Python文件的打开和关闭
  20. vue中拿到接口,并获取数据,渲染到页面

热门文章

  1. Django默认用户模型类和父类 AbstractUser 介绍
  2. 乐玩插件和大漠插件哪个好_2019年都用过哪些Chrome插件?分享30个好用的插件,提升上网体验...
  3. echarts的用法
  4. 百度关键词排名查询源码_推荐4个Google关键词排名查询工具
  5. java3d室外场景构建_3dmax里怎么渲染室外场景
  6. Python流程控制
  7. VITS 语音合成完全端到端TTS的里程碑
  8. 一步一步SharePoint 2007之七:改变导航栏中项目的标题和内容
  9. 智慧工地帮助建筑企业高效实现工人实名制管理
  10. CF 1260 D 题解