vm.vfs_cache_pressure值越大,内核越倾向回收inode和dentry缓存以释放内存;默认100表示公平回收,调至150–200可缓解元数据缓存占满内存问题,适用于小内存云主机或内存敏感服务。

直接调高 vm.vfs_cache_pressure 就能让内核更积极回收 inode 和 dentry 缓存,缓解内存被元数据缓存长期占满的问题。它不控制“频率”本身,而是调整回收优先级——值越大,内核越倾向甩掉这部分缓存,给 page cache 或活跃进程腾空间。
理解 vfs_cache_pressure 的作用逻辑
这个参数本质是权衡:当内存紧张时,内核要在以下三类资源间做取舍:
- page cache(文件内容缓存):影响读文件速度
- inode/dentry 缓存(文件系统元数据):影响路径查找、open/stat 等系统调用开销
- swap 使用:把进程页换出,代价高
默认值 100 表示内核对这三者“一视同仁”。设为 150~200,就等于告诉内核:“元数据缓存可以多清一点,别舍不得;把内存留给更重要的地方。”
常见场景与推荐取值
不同负载类型适合不同设置:
- 小内存云主机或 Redis/Nginx 等内存敏感服务:设为 150~200,避免 dentry 积压挤占可用内存
- 高并发文件服务器(如 NFS、静态资源站):可设为 50~80,保留更多路径缓存,降低 lookup 开销
- 数据库服务器(如 PostgreSQL):建议 100~120,平衡元数据访问与 shared_buffers/page cache 需求
临时调整与永久生效方法
执行命令即可立即生效(重启后恢复默认):
sysctl -w vm.vfs_cache_pressure=180
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
要永久生效,写入配置文件:
echo "vm.vfs_cache_pressure = 180" > /etc/sysctl.d/99-vfs-pressure.conf
sysctl -p /etc/sysctl.d/99-vfs-pressure.conf
注意不要直接改 /etc/sysctl.conf,用独立文件更清晰、易管理。
配合观察与验证效果
调完别忘了确认是否起效,并观察实际内存行为:
- 查当前值:
cat /proc/sys/vm/vfs_cache_pressure或sysctl vm.vfs_cache_pressure - 看缓存变化:
grep -i "dentry\|inode" /proc/meminfo,重点关注Dentries和Inodes行 - 监控整体内存压力:
free -h结合slabtop -o观察 dentry/inode 占用是否下降
如果发现 Slab 总量明显减少、Available 内存上升,说明调整已起效。










