rhel + 为什么交换内存没有被利用

rhel + 为什么交换内存没有被利用

我们有版本 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。

也可以看看为什么交换功能不起作用?

相关内容