【Linux常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。

我们在使用free -h查看系统内存的时候,有时间会发现buff/cache很高

> free -h

available 表示应用程序可以申请到的内存

什么是buff

buff(Buffer Cache)是一种I/O缓存,用于内存和硬盘的缓冲,是io设备的读写缓冲区。根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。

什么是cache

cache(Page Cache)是一种高速缓存,用于CPU和内存之间的缓冲 ,是文件系统的cache。
把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。

它们都是占用内存。两者都是RAM中的数据。简单来说,buff是即将要被写入磁盘的,而cache是被从磁盘中读出来的。

目前进程正在实际被使用的内存的计算方式为used-buff/cache,通过释放buff/cache内存后,我们还可以使用的内存量free+buff/cache。通常我们在频繁存取文件后,会导致buff/cache的占用量增高。

清除buff/cache

手动清除

> sync
> echo 1 > /proc/sys/vm/drop_caches
> echo 2 > /proc/sys/vm/drop_caches
> echo 3 > /proc/sys/vm/drop_caches
  • sync:将所有未写的系统缓冲区写到磁盘中,包含已修改的i-node、已延迟的块I/O和读写映射文件
  • echo 1 > /proc/sys/vm/drop_caches:清除page cache
  • echo 2 > /proc/sys/vm/drop_caches:清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。
  • echo 3 > /proc/sys/vm/drop_caches:清除pagecache和slab分配器中的缓存对象。
    /proc/sys/vm/drop_caches的值,默认为0

定时任务清除

> vim clean.sh
#!/bin/bash#每两小时清除一次缓存
echo "开始清除缓存"
sync;sync;sync #写入硬盘,防止数据丢失
sleep 20#延迟20秒
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches> chmod +x clean.sh
> crontab -e
# 每两小时执行一次
0 */2 * * * /opt/clean.sh
  • 设置crond启动以及开机自启
  • systemctl start crond.service
  • systemctl enable crond.service

原文链接:https://rumenz.com/rumenbiji/linux-buff-cache.html
微信公众号:入门小站

【Linux常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。

Linux中buff-cache占用过高解决方案相关推荐

  1. linux fedora35 buff/cache 占用过高解决方法(适用于大部分linux)

    cache 读磁盘时,数据从磁盘读出后,暂留在缓冲区(cache),为后续程序的使用做准备 buffer 写磁盘时,先保存到磁盘缓冲区(buffer),然后再写入到磁盘 三条命令: #echo 1 & ...

  2. Linux中buff/cache内存占用过高解决办法

    Linux中buff/cache内存占用过高解决办法 在Linux系统中,我们经常用free命令来查看系统内存的使用状态.在一个centos7的系统上,free命令的显示内容大概是这样一个状态: 这个 ...

  3. Linux中buff/cache内存占用过高-手动清除释放内存

    buff/cache内存占用太高 我们在使用free -h或者(top命令)查看系统内存的时候,有时间会发现buff/cache很高,如下图 可以看到我总内存就1.8G,buff/cache就占用了1 ...

  4. Linux java进程CPU占用过高解决方案

    总目录 一.前言: 二.模拟java程序CPU过高 1 修改代码为死循环 2 部署在linux上 访问该接口 根据top命令查看CPU参数 3 通过ps命令查看这个程序的线程信息,tid代码线程ID, ...

  5. linux中bash命令占用内存高,最牛B的 Linux Shell 命令 系列连载(三)

    1. 更友好的显示当前挂载的文件系统 mount | column -t 这条命令适用于任何文件系统,column 用于把输出结果进行列表格式化操作,这里最主要的目的是让大家熟悉一下 columnt ...

  6. Linux 清理buff/cache缓存

    使用Top命令查看内存使用情况 或者用free -m 当磁盘频繁产生IO时会导致buff/cache占用很高的内存,导致可用物理内存很少 但是当真正需要内存时,缓冲区内存会自动释放. 如果需要清理可以 ...

  7. 笔记本电脑无故System占用很高解决方案

    笔记本电脑无故System占用很高解决方案 有时候笔记本电脑会出现无故很卡的情况,打开任务管理器查看发现是System占用太高.原因有很多,无法锁定.可能是驱动问题,也有可能是系统问题,还有可能是内存 ...

  8. linux释放buff/cache缓存空间

    当free -m发现操作系统buff/cache占用缓存过高导致可用内存过小时 这是后需要手动释放一下缓存 输入命令:echo 3 > /proc/sys/vm/drop_caches

  9. linux:进程占用的端口,在linux中查看进程占用的端口号

    在Linux 上的 /etc/services 文件可以查看到更多关于保留端口的信息. 可以使用以下六种方法查看端口信息. ss:可以用于转储套接字统计信息. netstat:可以显示打开的套接字列表 ...

  10. linux中忘记mysql用户root密码解决方案

    linux中忘记mysql用户root密码解决方案 参考文章: (1)linux中忘记mysql用户root密码解决方案 (2)https://www.cnblogs.com/songbao/p/11 ...

最新文章

  1. 【OpenCV】图像代数运算:平均值去噪,减去背景
  2. 第二十七课.深度强化学习(二)
  3. C# .net 下拉框显示提示内容-【ComboBox】
  4. Network 【TCP/IP 四层模型】
  5. SQL结构化查询语言中的LIKE语句
  6. 深度linux安装postgresql_在 Linux 上安装 PostgreSQL
  7. psychopy 音频时长代码_PsychoPy入门_03_视频和音频的呈现
  8. 两个向量之间的夹角公式_向量的内积
  9. 安卓学习笔记22:常用控件 - 可展开列表视图
  10. 修改CentOS默认yum源为国内镜像
  11. 一款原型设计软件——墨刀的介绍
  12. sphinx服务器安装及配置详解
  13. bp神经网络模型的优缺点,什么是BP神经网络模型?
  14. MODIS数据下载及图像处理教程
  15. Java入门视频教程
  16. document 使用方法介绍
  17. MindManager教你做一份完美的笔记
  18. hadoop性能测试
  19. (2022)Springboot+vue3项目开发前后端分离书法图书管理Coun
  20. oppo手机怎么查计算机记录,oppo怎样查通话记录(oppo手机怎么查以前的通话记录)...

热门文章

  1. 在python中如何将两个list合并成一个list,不用for语句
  2. C语言中控制printf的打印颜色实例及vt100的控制符文档-转
  3. 蓝桥杯 ALGO-55 算法训练 矩阵加法
  4. 在Windows上安装Python
  5. PAT 乙级 1041. 考试座位号(15) Java版
  6. 1052. 卖个萌 (20)-PAT乙级真题
  7. java 串口 rxtx_【Java】基于RXTX的Java串口通信
  8. JAVA加勒比_【JAVA】synchronized关键字
  9. Perl_获得字符串长度_length($var)
  10. Java 里面 final 与 static