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

文章目录


现象

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

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

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

示例输出:

bash 复制代码
              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. 同步数据

    bash 复制代码
    sync
  2. 清理缓存

    bash 复制代码
    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 命令持续观察内存使用情况,确保系统在最佳状态运行。
相关推荐
松涛和鸣11 分钟前
72、IMX6ULL驱动实战:设备树(DTS/DTB)+ GPIO子系统+Platform总线
linux·服务器·arm开发·数据库·单片机
简单中的复杂37 分钟前
【避坑指南】RK3576 Linux SDK 编译:解决 Buildroot 卡死在 host-gcc-final 的终极方案
linux·嵌入式硬件
wVelpro1 小时前
如何在Pycharm 2025.3 版本实现虚拟环境“Make available to all projects”
linux·ide·pycharm
程序员老舅2 小时前
C++高并发精髓:无锁队列深度解析
linux·c++·内存管理·c/c++·原子操作·无锁队列
雨中风华2 小时前
Linux, macOS系统实现远程目录访问(等同于windows平台xFsRedir软件的目录重定向)
linux·windows·macos
爱吃生蚝的于勒2 小时前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
The森3 小时前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
惊讶的猫3 小时前
redis分片集群
数据库·redis·缓存·分片集群·海量数据存储·高并发写
翼龙云_cloud3 小时前
腾讯云代理商: Linux 云服务器搭建 FTP 服务指南
linux·服务器·腾讯云
纤纡.3 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql