![限制Linux缓存内存](https://linux22.com/image/774107/%E9%99%90%E5%88%B6Linux%E7%BC%93%E5%AD%98%E5%86%85%E5%AD%98.png)
我知道空闲内存接近 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 建议在文件描述符上。释放不再被访问的文件,因为缓存比底层存储快数百到数千倍。