我知道空闲内存接近 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
不能让 Linux 不缓存。该内存很容易回收,它被计入可用内存。
该主机没有受到严重的内存压力。如果是的话,可用的会更少,它可能会开始使用交换。
尝试测量压力失速信息。这显示了进程实际花费在等待内存(或 cpu 或 io)上的时间。如果您确实处于内存压力之下,则故障处理或直接回收所花费的时间会增加计数器。不幸的是,它需要更新的内核,也许可以在测试系统上尝试更新的内核或更新的发行版。
如果您仍然觉得需要做某事,请将应用程序更改为调用posix_fadvise,并在文件描述符上提供 POSIX_FADV_DONTNEED 的建议。不会再次访问的免费文件,因为缓存比底层存储快数百到数千倍。