温馨提示×

linux缓存如何禁用

小樊
48
2026-09-27 18:24:22
栏目: 智能运维

在 Linux 中,“缓存”通常指 页缓存(page cache)、目录项缓存(dentry cache) 和 inode 缓存,这些是内核用来提升性能的机制。一般不建议完全禁用缓存,否则系统性能会严重下降。但如果你有特殊需求(如测试、嵌入式、特定实验),可以参考以下方法。


一、临时释放(清空)缓存(最常用)

不会禁用,只是清理当前缓存

# 释放 pagecache
echo 1 > /proc/sys/vm/drop_caches

# 释放 dentries 和 inodes
echo 2 > /proc/sys/vm/drop_caches

# 释放所有缓存
echo 3 > /proc/sys/vm/drop_caches

⚠️ 需要 root 权限
⚠️ 只是一次性释放,系统仍会自动重新缓存


二、降低缓存使用倾向(不是禁用)

通过调整 swappiness 和 vfs_cache_pressure

# 尽量不使用 swap
sysctl vm.swappiness=0

# 更积极回收目录/inode缓存
sysctl vm.vfs_cache_pressure=10000

查看当前值:

sysctl vm.swappiness
sysctl vm.vfs_cache_pressure

三、对某个进程禁用文件缓存(推荐方式)

使用 direct I/O 或 O_DIRECT

  • 程序层面:
    • 打开文件时使用 O_DIRECT
  • 命令示例(dd):
dd if=/dev/sda of=/dev/null bs=4M iflag=direct

⚠️ 并非所有程序都支持


四、挂载时禁用缓存(文件系统级)

某些文件系统支持 sync 或 direct

mount -o sync /dev/sdb1 /mnt

或:

mount -o dirsync /dev/sdb1 /mnt

⚠️ 会显著降低性能


五、完全禁用页缓存(不推荐,极危险)

内核层面修改,需要重新编译内核

关闭 CONFIG_PAGE_CACHE 相关支持(不同内核版本差异很大),普通用户不建议尝试。


六、常见误区

❌ echo 0 > /proc/sys/vm/drop_caches —— 这是无效操作
❌ 禁用缓存能让 IO 更快 —— 通常相反
✅ 正确做法是:释放缓存 + 调整策略


总结建议

目的 推荐方式
测试磁盘真实性能 O_DIRECT / dd iflag=direct
清理内存 echo 3 > /proc/sys/vm/drop_caches
减少缓存占用 调整 vfs_cache_pressure
完全禁用 ❌ 不推荐

如果你能说明 具体使用场景(测试?数据库?嵌入式?),我可以给你更合适的方案。

0 踩