在 Linux 中,“缓存(cache)”通常指页缓存(page cache)、目录项缓存(dentry cache)和inode 缓存,它们用于加速文件读写。合理管理缓存可以提升性能,也可在特殊场景下主动释放。
下面从 查看、释放、自动管理、调优、常见误区 几个方面说明。
freefree -h
关注:
buffers:块设备元数据缓存cached:文件内容缓存(page cache)available:估算的可用于新进程的内存top / htopbuff/cache 一行即为缓存占用cat /proc/meminfo
重点字段:
CachedBuffersDirtyWriteback# 同步数据到磁盘
sync
# 释放 pagecache
echo 1 > /proc/sys/vm/drop_caches
# 释放 dentries 和 inodes
echo 2 > /proc/sys/vm/drop_caches
# 释放所有缓存
echo 3 > /proc/sys/vm/drop_caches
⚠️ 注意:
Linux 默认会智能管理缓存:
✅ 通常不需要人工干预
# 查看
sysctl vm.dirty_ratio
sysctl vm.dirty_background_ratio
常见调整(示例):
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
作用:
sysctl vm.swappiness
修改:
sysctl -w vm.swappiness=10
vm.swappiness=10
vm.dirty_ratio=10
O_DIRECT 或 fadvise❌ “缓存占用高 = 内存不足”
✅ 缓存是可回收内存
❌ “经常 drop_caches 能提速”
✅ 反而降低性能
❌ “关掉 swap 更好”
✅ 可能导致 OOM
# 实时内存和缓存
watch -n 1 free -h
# IO 和缓存写回
vmstat 1
# 查看脏页
cat /proc/meminfo | grep Dirty
如果你有具体场景(如:数据库、桌面、嵌入式、容器、性能调优),我可以给你更针对性的缓存管理方案。