代码之家  ›  专栏  ›  技术社区  ›  Guss

如何清理Linux内核使用的缓存

  •  27
  • Guss  · 技术社区  · 17 年前

    我跑了

    sudo sync; sudo sysctl -w vm.drop_caches=3; free
    

    (同时释放磁盘dentry/inode缓存和页面缓存)我发现只有大约一半的已用缓存被释放,其余的仍然保留。我如何知道哪些内容占用了缓存的其余部分并强制释放它?

    3 回复  |  直到 10 年前
        1
  •  18
  •   nyedidikeke Dexter0015    7 年前

    你可能想增加工资 vfs_cache_pressure 以及设置 swappiness 0 .

    这样做将使内核更快地回收缓存,同时在决定哪些内容被分页时给予进程同等或更多的支持。

    只有

    如果绑定到网络I/O的进程必须交换以服务请求,那么这就是一个问题,真正的解决方案是将其放在竞争力较低的服务器上。

    默认情况下 交换

    因此,如果您增加了缓存压力,请确保进行同样的调整 .

        2
  •  17
  •   hillu    17 年前

    /proc/meminfo 告诉您内核使用RAM的目的。

    你可以用 强制内核更延迟或更急切地回收用于文件系统相关缓存的内存。

    请注意,只有当您的应用程序很少或没有磁盘I/O时,才可能从调整此参数中获益。

        3
  •  15
  •   Community Mohan Dere    9 年前

    你可能会发现 John Nilsson's answer to my Question 用于清除缓存以测试这是否与您的问题有关:

    sync && echo 1 > /proc/sys/vm/drop_caches

    虽然我猜唯一真正的区别是1对3