在Linux系统中为了提高文件系统性能,系统利会用一部分物理内存作为缓冲区使用,主要用于缓存系统操作和数据文件。当内核收到读写的请求时系统会先在缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接操作磁盘。缓存机制的优点是减少系统调用次数,降低CPU上下文切换和磁盘访问频率。

查看缓存区及内存使用命令

[root@localhost ~]# free -h

释放缓存区内存的方法
清理pagecache(页面缓存)

[root@localhost ~]# echo 1 > /proc/sys/vm/drop_caches     或 # sysctl -w vm.drop_caches=1

清理dentries(目录缓存)和inodes

[root@localhost ~]# echo 2 > /proc/sys/vm/drop_caches     或 # sysctl -w vm.drop_caches=2

清理pagecache、dentries和inodes

[root@localhost ~]# echo 3 > /proc/sys/vm/drop_caches     或 # sysctl -w vm.drop_caches=3

上面三种方式都是临时释放缓存的方法,如果需要永久释放缓存,要先在/etc/sysctl.conf文件中配置:vm.drop_caches=1/2/3,然后使用sysctl -p命令生效即可。

另外,还可以使用sync命令来清理文件系统缓存

[root@localhost ~]# sync

注意事项

上面操作在大多数情况下都不会对系统造成伤害,只会有助于释放不用的内存。
但是如果在执行这些操作时正在写数据,那么实际上在数据到达磁盘之前就将它从文件缓存中清除掉了,可能会造成一定的影响。

避免这种事情发生,可通过修改/proc/sys/vm/vfs_cache_pressure文件,来告诉系统当清理inoe/dentry缓存时应该用什么样的优先级。

vfs_cache_pressure=100 这个是默认值,内核会尝试重新声明dentries和inodes,并采用一种相对于页面缓存和交换缓存比较“合理”的比例。

减少vfs_cache_pressure的值,会导致内核倾向于保留dentry和inode缓存。

增加vfs_cache_pressure的值,(即超过100时),则会导致内核倾向于重新声明dentries和inodes

vfs_cache_pressure的值小于100的值不会导致缓存的大量减少,而超过100的值则会告诉内核你希望以高优先级来清理缓存。

其实无论vfs_cache_pressure的值采用什么值,内核清理缓存的速度都是比较低的。

如果将此值设置为10000,系统将会将缓存减少到一个合理的水平。

Linux 缓存释放和管理相关推荐

  1. 清理linux服务器缓存,详解Linux手动释放缓存的方法

    详解Linux手动释放缓存的方法 发布时间:2020-08-20 07:53:27 来源:脚本之家 阅读:87 作者:闪电王国 栏目:服务器 Linux释放内存的命令: sync echo 1 > ...

  2. Linux手动释放缓存的方法

    Linux手动释放缓存的方法 1. 错误状态 2. 解决办法 1. 错误状态 这一年为什么文章少了呢,因为开发一直没停过,开发遇到的问题经常让人头大. 比如今天遇到个问题,启动一个服务去编译文件,直接 ...

  3. Linux清除系统缓存释放内存命令介绍

    1. drop_caches 在Documentation/sysctl/vm.txt中有如下描述: drop_caches:Writing to this will cause the kernel ...

  4. linux手动释放内存的方法

    Linux手动释放缓存的方法 Linux释放内存的命令: sync echo 1 > /proc/sys/vm/drop_caches drop_caches的值可以是0-3之间的数字,代表不同 ...

  5. linux内核之内存管理.doc,linux内核之内存管理.doc

    Linux内核之内存管理 作者:harvey wang 邮箱:harvey.perfect@ 新浪博客地址:/harveyperfect ,有关于减肥和学习英语相关的博文,欢迎交流 把linux内存管 ...

  6. Linux网络与进程管理

    本文主要介绍了网络与进程的相关内容以及在Linux上如何进行网络与进程管理,包括以太网介绍,TCP/IP,网络分层模型,IP地址的规划:同时介绍了Linux内核在进程管理方面的相关机制 文章目录 一. ...

  7. linux 和windows 内存管理区别

    linux 和windows 内存管理区别 在 80 年代初,IBM 推出的 IBM PC 机采用了 Intel 16 位的 8088 处理器,该处 理器可以访问最多 1MB 的存储器.当应用程序需要 ...

  8. 真香!看了才知道Linux 原来是这么管理内存的

    Linux 内存管理模型非常直接明了,因为 Linux 的这种机制使其具有可移植性并且能够在内存管理单元相差不大的机器下实现 Linux,下面我们就来认识一下 Linux 内存管理是如何实现的. 基本 ...

  9. 艾玛,真香!Linux 原来是这么管理内存的!发现新大陆~

    真香!Linux 原来是这么管理内存的 Linux 内存管理模型非常直接明了,因为 Linux 的这种机制使其具有可移植性并且能够在内存管理单元相差不大的机器下实现 Linux,下面我们就来认识一下 ...

最新文章

  1. 检测含有中文字符串的实际长度
  2. Java基础看jvm,JAVA基础知识|java虚拟机(JVM)
  3. JavaScript与TypeScript总结
  4. Direct2D教程(九)渲染位图
  5. Alibaba Cloud Toolkit——简介
  6. Study 4 —— 数据类型(1)
  7. adult道具项目开发 - 模式
  8. OpenCV+python图像处理基础操作
  9. 如何成为一名糟糕的程序员?
  10. bzoj4806 炮
  11. java16进制取前几位_16位16进制数怎么取前8位和后8位
  12. mysql xtrabackup_mysql备份
  13. mysql vc运行库_VC++运行库安装
  14. WSUS服务器点击报告报错解决办法
  15. 信息安全风险评估学习笔记
  16. Appium桌面版连接Android手机定位页面元素
  17. Excel学习日记:L22-时间格式工龄与工时的计算
  18. 基因表达式编程(GEP)自学 第【3】天 Python 实现
  19. 科学的研究方法——笛卡尔
  20. C++ include头文件之后为什么还要在编译的时候加--lxxx

热门文章

  1. TP-LINK3310 Router2.4G 连接失败问题处理
  2. Google美国搜索市场份额近67%
  3. Mysql王者晋级之路第一章Mysql安装
  4. SpringBoot瘦身打包部署
  5. 帝国cms 操作整理
  6. 编一程序,将两个字符串连接起来,不要用strcat函数。
  7. 3D 霍尔效应位置传感器原理解析
  8. 【渝粤教育】电大中专中药鉴定学作业 题库
  9. 人类dna信息量_古人类DNA揭人类演化史 白肤碧眼1万年前才出现
  10. 搭建Iconic+angular混合APP开发环境