禁用 Linux 缓存内存

禁用 Linux 缓存内存

目前我有一台配备 4 GB RAM 的服务器,每 5 分钟运行 2 个 rsyncs 任务(每个 100 GB)和一些监控容器,最终 linux 缓存会占用所有 RAM(rsync 故障),并且如果监控堆栈启动一个新容器,系统会挂起,因为开始交换,因为缓存没有被释放。

通常,内存使用量为 512-700 mb,其他内存都进入缓存,没有释放。有没有办法完全禁用缓存,而不是每 30 分钟左右运行一次“echo 3 > /proc/sys/vm/drop_caches”?

编辑:cat /proc/meminfo

    MemTotal:        4026060 kB
    MemFree:          530636 kB
    MemAvailable:    3245008 kB
    Buffers:         1307920 kB
    Cached:           215712 kB
    SwapCached:            0 kB
    Active:          1730668 kB
    Inactive:         142704 kB
    Active(anon):     347880 kB
    Inactive(anon):     1196 kB
    Active(file):    1382788 kB
    Inactive(file):   141508 kB
    Unevictable:           0 kB
    Mlocked:               0 kB
    SwapTotal:             0 kB
    SwapFree:              0 kB
    Dirty:               344 kB
    Writeback:             0 kB
    AnonPages:        349864 kB
    Mapped:           126076 kB
    Shmem:              1252 kB
    KReclaimable:    1479664 kB
    Slab:            1550136 kB
    SReclaimable:    1479664 kB
    SUnreclaim:        70472 kB
    KernelStack:        4256 kB
    PageTables:         8500 kB
    NFS_Unstable:          0 kB
    Bounce:                0 kB
    WritebackTmp:          0 kB
    CommitLimit:     2013028 kB
    Committed_AS:    1363936 kB
    VmallocTotal:   34359738367 kB
    VmallocUsed:       10988 kB
    VmallocChunk:          0 kB
    Percpu:             1384 kB
    HardwareCorrupted:     0 kB
    AnonHugePages:         0 kB
    ShmemHugePages:        0 kB
    ShmemPmdMapped:        0 kB
    FileHugePages:         0 kB
    FilePmdMapped:         0 kB
    CmaTotal:              0 kB
    CmaFree:               0 kB
    HugePages_Total:       0
    HugePages_Free:        0
    HugePages_Rsvd:        0
    HugePages_Surp:        0
    Hugepagesize:       2048 kB
    Hugetlb:               0 kB
    DirectMap4k:      538612 kB
    DirectMap2M:     3655680 kB
    DirectMap1G:     2097152 kB

服务器在20分钟后清除缓存......

答案1

vfs_cache_pressure 是适当的系统参数,用于告诉内核您希望它以多快的速度丢弃缓存。

Linux 性能:几乎总是添加交换空间

答案2

不,您不能禁用 Linux 文件系统缓存。RAM 需要花钱和耗电,最好使用它。

请勿/proc/sys/vm/drop_caches在生产中使用,因为不使用快速 RAM 会使性能变差。它用于调试,例如模拟冷启动以进行存储测试。

需要注意的数字/proc/meminfoMemAvailable,其中包括容易回收的缓存。这应该占 的很大一部分MemTotalMemFree可能非常低,这不是问题。

证明您有用户可见的性能问题。不仅仅是您认为低可用内存很糟糕。向您的应用程序添加响应时间监控,在您通常运行的命令前添加命令前缀来添加秒表time,或者进行完整的分析,例如使用perf record -- <command>

尽可能确保压力失速信息正在收集。好的 Linux 主机指标监控工具可以收集这些信息,例如 netdata。PSI 量化了因内存而停滞的任务,这比内存使用量更有价值。

并衡量 drop_caches 是否是个好主意。从现在开始获取应用程序性能数据,现状。drop_caches。然后再次测量并量化变化。

深入研究性能可能需要做大量工作,不幸的是这很耗时,但希望具有挑战性和回报。

相关内容