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

本文介绍了当系统因频繁文件访问导致缓存占用过大时的应对策略,包括使用sync命令同步缓存到硬盘,通过调整proc系统参数drop_caches来释放缓存,以及在sysctl.conf中设置合理的内存管理参数,确保系统高效稳定运行。
部署运行你感兴趣的模型镜像

问题: 
频繁的文件访问会导致系统的Cache使用量大增

查看内存使用情况: 
$ free -m 
total used free shared buffers cached 
Mem: 3955 3926 28 0 55 3459 
-/+ buffers/cache: 411 3544 
Swap: 5726 0 5726

现象: 
free内存减少到几十兆,系统运行缓慢

解决办法: 
1.运行 sync 将 dirty 的内容写回硬盘

$sync
  • 1

2.通过修改 proc 系统的 drop_caches 清理free的cache

$echo 3 > /proc/sys/vm/drop_caches
  • 1

3 . 修改/etc/sysctl.conf 添加如下选项后就不会内存持续增加

vm.dirty_ratio = 1
vm.dirty_background_ratio=1
vm.dirty_writeback_centisecs=2
vm.dirty_expire_centisecs=3
vm.drop_caches=3
vm.swappiness =100
vm.vfs_cache_pressure=163
vm.overcommit_memory=2
vm.lowmem_reserve_ratio=32 32 8
kern.maxvnodes=3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

drop_caches 的详细文档如下:

Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.
To free pagecache:
* echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:
* echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:
* echo 3 > /proc/sys/vm/drop_caches
As this is a non-destructive operation, and dirty objects are notfreeable, the user should run "sync" first in order to make sure allcached objects are freed.
This tunable was added in 2.6.16.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

上面的设置比较粗暴,使cache的作用基本无法发挥。需要根据机器的状况进行适当的调节寻找最佳的折衷。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<think>我们正在讨论如何清理Linux系统中的drop_caches。用户已经提供了两个引用,其中引用[1]说明了/proc/sys/vm/drop_caches的用途,即允许请求内核立即丢弃尽可能多的干净缓存数据。引用[2]则详细介绍了如何操作该文件来释放不同类型的缓存(页面缓存、目录项缓存inode缓存),并给出了具体的命令注意事项。用户的上一个问题询问了bufferscached的区别,现在用户的新问题是关于如何清理drop_caches。因此,我们需要根据用户提供的引用之前的知识,提供操作步骤注意事项。操作步骤:1.释放页面缓存(PageCache):```bashecho1|sudotee/proc/sys/vm/drop_caches```2.释放目录项inode缓存(DentryandInodeCaches):```bashecho2|sudotee/proc/sys/vm/drop_caches```3.释放所有缓存(页面缓存、目录项缓存inode缓存):```bashecho3|sudotee/proc/sys/vm/drop_caches```注意事项:-需要root权限(使用sudo)。-该操作只会清理“干净”的缓存(即未被修改的数据),而“脏”缓存(已被修改但未写入磁盘的数据)不会被丢弃。-清理缓存后,系统在重新访问文件时需要重新加载数据,可能导致短期性能下降。-此操作是临时的,系统会随着运行自动重建缓存。-通常仅用于测试或特殊调优场景,不建议在生产环境中频繁使用。此外,用户可能还想知道如何查看缓存使用情况,可以使用:```bashfree-h```或者```bashcat/proc/meminfo|grep-icache```最后,按照要求生成相关问题。</think>### 如何在Linux清理`drop_caches`及操作`/proc/sys/vm/drop_caches` 在Linux系统中,`/proc/sys/vm/drop_caches`是内核提供的虚拟文件,用于**手动释放内存中的干净缓存**(clean cache)。以下是具体操作方法注意事项: --- #### 🔧 清理缓存的操作步骤(需root权限) ```bash # 1. 释放页面缓存(Page Cache) echo 1 | sudo tee /proc/sys/vm/drop_caches # 2. 释放目录项缓存(Dentry Cache) echo 2 | sudo tee /proc/sys/vm/drop_caches # 3. 释放inode缓存(Inode Cache) echo 3 | sudo tee /proc/sys/vm/drop_caches # 4. 释放所有缓存(Page+Dentry+Inode) echo 3 | sudo tee /proc/sys/vm/drop_caches # 最常用方式 ``` --- #### ⚠️ 关键注意事项 1. **仅释放"干净"缓存** - 操作**不会释放脏缓存**(dirty cache),脏数据需先写入磁盘才能释放[^1]。 - 可通过`sync`命令强制写入脏数据: ```bash sync # 先将脏数据写入磁盘 echo 3 | sudo tee /proc/sys/vm/drop_caches ``` 2. **性能影响** - 清理后首次访问文件需从磁盘加载,可能导致**短期性能下降**。 - 生产环境慎用,建议仅在**测试或紧急内存回收**时操作。 3. **临时性操作** - 效果是临时的,内核会根据需要自动重建缓存。 - 重启后缓存机制恢复正常。 --- #### 🔍 操作前后缓存监控 ```bash # 查看缓存使用情况(操作前) free -h cat /proc/meminfo | grep -E 'Cached|Buffers' # 操作后再次检查对比 echo 3 | sudo tee /proc/sys/vm/drop_caches free -h # 观察buff/cache列变化 ``` > 💡 **示例输出**: > ``` > total used free shared buff/cache available > Mem: 16G 5.2G 2.1G 1.3G 8.7G 9.5G > ``` > 执行`echo 3`后`buff/cache`值显著下降。 --- #### 🛡️ 安全建议 1. **避免脚本化清理** 内核自动管理缓存效率更高,频繁手动清理可能降低系统性能。 2. **测试场景专用** 常用于: - 评估应用在无缓存时的性能 - 内存泄漏测试 - 文件系统一致性检查 3. **替代方案** 内存不足时优先调整内核参数: ```bash # 调整脏页写回阈值 sysctl -w vm.dirty_ratio=10 sysctl -w vm.dirty_background_ratio=5 ``` > 📌 **总结**:`/proc/sys/vm/drop_caches`是内核暴露的手动缓存管理接口,需理解其**临时性、选择性释放**的特性,避免在生产环境滥用[^2]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值