buff/cache 占用过高时

当系统中的 buff/cache 占用过高时,通常意味着内核正在缓存文件数据或缓冲区数据以提高系统性能。尽管这部分内存占用了系统的物理内存,但它实际上可以在其他应用程序需要时立即释放,因此不必过于担心。

  1. 手动清理缓存:使用以下命令来清理缓存:

    sudo sync
    sudo echo 3 > /proc/sys/vm/drop_caches
    

    说明

    • sync 命令会将所有待写入的数据写入到磁盘上。
    • echo 3 > /proc/sys/vm/drop_caches 命令会清理页面缓存、目录项和inode缓存。
  2. 修改 vm.swappiness 参数:如果 swap 频繁使用,你可以降低 vm.swappiness 的值,从而减少系统的 swap 使用。通常将该值设置为 10 或 15 是一个不错的选择。使用以下命令来调整:

    sudo sysctl vm.swappiness=10
    

    说明

    • vm.swappiness 控制了内核将数据移到 swap 空间的倾向,值越低,内核越不愿意使用 swap。
  3. 检查可能的内存泄漏:如果 buff/cache 长期保持高水平,可能是某些进程有内存泄漏问题,可以使用以下命令检查进程的内存使用情况:

    top
    htop
    

    查找占用内存过高的进程并进行处理。

  4. 重启系统
    在极端情况下,重启系统可以释放所有的缓存内存。不过,这通常是最后的选择。

如果你的系统运行缓慢,除了 buff/cache,还可以检查 CPU 和磁盘 IO 的使用情况,以全面了解系统性能问题的原因。