Linux - 利用/proc/sys/vm/drop_caches实现手工清理系统缓存

文章目录

  • 现象
    • `buff/cache` 的作用和含义
    • 分析 `buff/cache` 占用大量内存的原因
    • 是否需要清理缓存及其方法
  • 命令
    • 清理缓存方法
      • 1. `sync` 命令
      • 2. `echo 3>/proc/sys/vm/drop_caches` 命令
  • 注意事项
  • 小结

在这里插入图片描述


现象

使用free 命令,看到 buff/cache 占用很多 。

free 命令用于显示系统内存的使用情况。它的输出通常包括以下几列:

  • total:总内存量
  • used:已使用的内存量
  • free:空闲的内存量
  • shared:共享内存量
  • buff/cache:缓冲和缓存使用的内存量
  • available:可用的内存量

示例输出:

              total        used        free      shared  buff/cache   available
Mem:        16392172     6111328     3912740      123456     6368104     9374120
Swap:       16777212           0    16777212

buff/cache 的作用和含义

  • buffer:内核用于磁盘块读写的临时存储。
  • cache:内核用于文件系统数据的缓存,以加快文件访问速度。

buff/cache 列表示系统用于缓冲和缓存的内存。它占用了内存,但这些内存可以随时被释放并分配给其他进程,因此实际并不会导致内存不足。


分析 buff/cache 占用大量内存的原因

  • 文件系统缓存:系统通过缓存文件系统数据,提高文件访问性能。
  • 磁盘 I/O:大量的磁盘读写操作会导致缓冲区占用增多。
  • 系统正常行为:Linux 系统尽可能利用空闲内存进行缓存,以提高性能。

是否需要清理缓存及其方法

通常情况下,不需要手动清理缓存,因为 Linux 内核会自动管理这些资源,确保内存的高效利用。然而,在一些特定情况下(如性能测试或内存紧张),可能需要手动清理缓存。


命令

清理缓存方法

  1. 同步数据

    sync
    
  2. 清理缓存
    在这里插入图片描述

    echo 3 > /proc/sys/vm/drop_caches
    

sync &echo 3>/proc/sys/vm/drop_caches

该命令分为两个部分,通过 & 连接。它的作用是清理系统缓存。

1. sync 命令

  • 功能sync 命令用于将所有已修改的文件系统缓冲区写入磁盘。
  • 用途:在清理缓存之前使用 sync,确保所有的挂起写操作都已完成,避免数据丢失。

2. echo 3>/proc/sys/vm/drop_caches 命令

  • 功能echo 3 > /proc/sys/vm/drop_caches 命令通过写入值到 /proc/sys/vm/drop_caches 文件来清理系统缓存。
    • 值为 1 时清理页面缓存。
    • 值为 2 时清理目录项和 inode 缓存。
    • 值为 3 时清理页面缓存、目录项和 inode 缓存。
  • 用途:这对于需要释放内存的场景非常有用,例如性能测试之前,或者系统管理员需要手动清理缓存来恢复内存使用情况。

注意事项

  • 权限:需要有超级用户权限(root)来执行这些命令。
  • 谨慎使用:频繁使用可能影响系统性能,因为缓存是提高系统性能的重要机制。
  • 实际场景:通常用于性能调优、测试或者内存管理的特定情况下,不应在生产环境中频繁使用。

小结

  • 正常情况下:不需要手动清理缓存。内核会自动管理缓存,确保系统性能。
  • 特定情况下:如内存紧张或需要进行性能测试时,可以考虑清理缓存。
  • 持续观察:使用 free 命令持续观察内存使用情况,确保系统在最佳状态运行。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/32807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第一个Flask程序

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 一切准备就绪,现在我们开始编写第一个Flask程序,由于是第一个Flask程序,当然要从最简单的“Hello World&#xff…

GPT-5大幅推迟?OpenAI CTO称将在2025年底到2026年初推出

GPT-5大幅推迟?OpenAI CTO称将在2025年底到2026年初推出 OpenAI CTO同时透露,GPT-5性能将有巨大飞跃,在某些特定任务中达到“博士水平”智能,此前市场曾预测GPT-5可能在2023年底或2024年夏季发布。 一再跳票的GPT-5可能大幅推迟…

docker 删除本地镜像释放磁盘空间

时间一长,本地镜像文件特别多: 1 linux 配置crontab 定期删除 crontab l 查看 crontab e 编辑 30 3 * * * /home/mqq/gengmingming/cleanImage-realize.sh > /home/mqq/gengmingming/cleanImage-realize.log 2>&12 cleanImage-realize.sh …

展锐T820平台Android11开发:kernel设备树编译问题

一.kernel多board自适应 展锐平台的kernel具有多board自适应功能,即相同体系架构的两个不同的board间,boot.img、socko.img/odmko(vendorboot.img)、dtbo.img是可替换的,这些镜像文件称为R-img(Replaceable images,可替…

JetBrains IDEA 新旧UI切换

JetBrains IDE 新旧UI切换 IntelliJ IDEA 的老 UI 以其经典的布局和稳定的性能,成为了许多开发者的首选。而新 UI 则在此基础上进行了全面的改进,带来了更加现代化、响应式和高效的用户体验。无论是新用户还是老用户,都可以通过了解和适应这…

101.qt qml-自定义日历控件2-附带动画效果

黑色风格截图如下所示: 白色风格如下所示: GIF效果如下所示: 1.控件使用介绍 QianWindow2.5版本及以上提供,源码位于:qrc:/common/qmlQianDateTime/QianCalendarInputField.qml QianWindow2.5版本及以上提供,示例使用代码位于:qrc:/pages/QianControlPages/QianDateTimeP…

华为OD机试C卷(100分)-最大N个数与最小N个数的和(C语言)

题目描述 给定一个数组,编写一个函数来计算它的最大N个数与最小N个数的和。你需要对数组进行去重。 说明: 数组中数字范围[0, 1000] 最大N个数与最小N个数不能有重叠,如有重叠,输入非法返回-1 输入非法返回-1 输入描述 第一行输…

修复:cannot execute binary file --- ppc64le 系统架构

前言: 修复node_exporter,引用pprof包,对源码编译后在 Linux 系统下执行程序运行时,发生了报错,报错信息:cannot execute binary file: Exec format error。 开始以为编译有问题,检查发现;该l…

GPU集群搭建-IDC要求

高性能GPU服务器集群对于IDC(Internet Data Center)的配电环境有特定的要求,主要涉及到电力供应的稳定性和冗余性、电力质量、以及冷却系统等几个关键方面: 1. **高功率密度**:GPU服务器因执行密集型计算任务&#xf…

【React】useState 的原理

useState 是 React Hooks 中的一个核心函数,用于在函数组件中添加和管理状态。以下是 useState 的原理及其工作方式的详细解释: 1. 基本概念 useState 允许你在函数组件中添加 state。它接受一个参数,这个参数是 state 的初始值。useState 返回一个包含两个元素的数组: 第…

java实训 | 低配版模拟火车订票系统

代码: import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.util.ArrayList; import java.util.List;public class TrainBookingSystem {private JFrame frame;private JPanel loginPanel, mainPanel;private JTextField u…

C++ 教程 - 04 类的使用

文章目录 类的定义类定义案例 类的定义 C 在 C 语言的基础上增加面向对象编程,类是用于指定对象的形式,是一种用户自定义的数据类型,封装了数据和函数。类可以被看作是一种模板,可以用来创建具有相同属性和行为的多个对象。 cla…

python爬虫学习笔记一(基本概念urllib基础)

学习资料:尚硅谷_爬虫 学习环境: pycharm 一.爬虫基本概念 爬虫定义 > 解释1:通过程序,根据URL进行爬取网页,获取有用信息 > 解释2:使用程序模拟浏览器,向服务器发送请求,获取相应信息…

分布式缓存和分布式对象池有什么区别?

分布式缓存和分布式对象池是两种不同的概念,它们在分布式系统中扮演着不同的角色,服务于不同的目的。下面分别解释它们的含义和区别: ### 分布式缓存(Distributed Cache) 分布式缓存是一种分布式存储系统&#xff0c…

尚品汇-(五)

商品管理模块开发 下面用到的表: 属性表: 属性值表: 分类一表: 分类二表: 分类三表: 1.1在service 模块下搭建service-product 搭建过程同common-util 添加配置文件application.yml spring:applicatio…

C#基于SkiaSharp实现印章管理(1)

最近对着微软的教程学习SkiaSharp的概念及用法,由于之前使用GDI绘制过坐标系、印章等程序,准备使用SkiaSharp、SKControl控件编写简单的印章设计功能,并能用印章对图片盖章。本文实现创建印章背景、序列化及反序列化印章对象等功能。   VS2…

PostgreSQL进阶教程

PostgreSQL进阶教程 目录 事务和并发控制 事务事务隔离级别锁 高级查询 联合查询窗口函数子查询CTE(公用表表达式) 数据类型 自定义数据类型数组JSON 高级索引 部分索引表达式索引GIN和GiST索引 性能调优 查询优化配置优化 备份与恢复 物理备份逻辑备份…

2-14 基于matlab的GA优化算法优化车间调度问题

基于matlab的GA优化算法优化车间调度问题。n个工作在m个台机器上加工。已知每个工作中工序加工顺序、各工序的加工时间以及每个工件所包含的工序,在满足约束条件的前提下,目的是确定机器上各工件顺序,以保证某项性能指标最优。程序功能说明&a…

视频讲解|【双层模型】分布式光伏储能系统的优化配置方法

1 主要内容 该讲解视频对应的程序链接为【双层模型】分布式光伏储能系统的优化配置方法,模型参考《分布式光伏储能系统的优化配置方法》,分为上下层求解方式,上层采用粒子群算法确定储能的选址和容量方案,以全年购电成本、网络损…

YouTube API接口:一键获取Playlist视频合集信息

核心功能介绍 在视频内容日益繁荣的今天,YouTube作为全球领先的视频分享平台,为内容创作者、品牌商家以及数据分析师提供了丰富的视频资源。其中,Playlist视频合集作为YouTube上的一种特色内容形式,深受用户喜爱。为了更好地满足…