限制Linux缓存内存

限制Linux缓存内存

我知道空闲内存接近 0 并且所有内存都缓存是没问题的

但它会导致应用程序出现问题

我需要服务器不再缓存那么多内存并释放内存

我尝试过sudo sysctl -w vm.vfs_cache_pressure=200

但它没有效果

我有 centos 7.9 Linux 3.10.0-1160.49.1.el7.x86_64

              total        used        free        shared  buff/cache   available
Mem:           125G         77G         300M         21M         47G         47G
Swap:          8.0G          0B        8.0G

答案1

Linux 不能不缓存。该内存很容易回收,它被计入可用内存中。

该主机没有面临严重的内存压力。如果面临,则可用内存会减少,并且可能会开始使用交换。

尝试测量压力失速信息。这显示进程实际等待内存(或 CPU 或 IO)的时间。如果您确实面临内存压力,则花在故障或直接回收上的时间将增加计数器。不幸的是,需要比这更高的内核,也许可以在测试系统上试用更新的内核或更新的发行版。

如果你仍然觉得需要做点什么,可以更改应用程序以调用posix_fadvise 带有 POSIX_FADV_DONTNEED 建议在文件描述符上。释放不再被访问的文件,因为缓存比底层存储快数百到数千倍。

相关内容