我们有版本 7.6 的 rhel 服务器
我们配置了交换,我们可以从下面看到交换大小
free -g
total used free shared buff/cache available
Mem: 38 32 0 0 4 4
Swap: 23 0 23
我们还配置了 vm.swappiness 如下
sysctl -a | grep swap
vm.swappiness = 95
据我了解,当可用内存达到几千兆空闲内存时,如1-5G
然后应该触发交换,我们期望有例如 5-10G 交换总内存
但这发生了
那么我们还应该在我的服务器上检查什么?
也许是其他一些禁用交换的配置?
免费时更新
free -g
total used free shared buff/cache available
Mem: 11 8 0 0 2 2
Swap: 23 0 23
# free
total used free shared buff/cache available
Mem: 11828240 8810264 161388 24696 2856588 2555472
Swap: 24575992 5120 24570872
答案1
什么时候vm.swappiness
设置为 100 时,在处理内存压力时会同等考虑页面缓存和交换。小于 100 的值告诉内核认为交换比页面缓存更昂贵;因此,当它需要释放页面时,它将尝试从页面缓存中释放页面,而不是使用交换。值越低,交换成本就越大。 (计算比我在这里的解释更复杂,但这应该足够接近以理解这里发生的情况。)
在您的情况下,您将交换配置为比页面缓存稍贵一些。您的所有页面缓存使用量都是可回收的(在舍入误差内):您的“可用”值等于您的“buff/cache”值。因此,任何内存压力都会导致页面缓存被回收,而不是使用交换区。
您的服务器没有任何问题,它的行为符合预期。从长远来看,您会发现交换使用量会上升。如果您想看到它使用更多,请设置vm.swappiness
为 100。
也可以看看为什么交换功能不起作用?