交换总量为零,但已使用量太高

交换总量为零,但已使用量太高
free -m
            total       used        free    shared      buffers     cached
Mem:        15708       15539        168       124            6       6272
-/+ buffers/cache:       9260       6447
Swap:           0  1759218604          0

sysctl vm.swappiness
vm.swappiness = 0

grep Swap /proc/meminfo
SwapCached:    0 kB
SwapTotal:     0 kB
SwapFree:     36 kB

我已设置 vm.swappiness=0 来禁用交换,但输出free -m显示交换缓存已被使用1759218604,这是一个非常大的数字。我认为使用的交换内存应该是0,为什么不是0呢?

centos版本:6.7,Linux内核:2.6

答案1

这是一个非常古老的 RHEL/CentOS 6 内核错误,您需要更新到 kernel-2.6.32-573.6.1.el6(或更高版本)。看到这个RH 客户门户文章(需要RH账号)还有这个关于服务器故障的问题更多细节。

我还建议升级您的系统,不再支持 CentOS 66.7 甚至不是最新的次要版本(最后一个是 6.10)。

答案2

您的系统没有使用任何交换。

内核不直接跟踪已使用的交换量,因此free将其计算为总交换量与可用交换量之间的差值。由于某种原因(参见沃伊泰克的回答),您的系统内核认为总共 0k 中有 36k 的可用交换空间,因此free计算出您有 -36k 已使用的交换空间。然而,它存储为无符号值,因此它最终显示为一个大整数(自您指定以来按 1024 缩放-m)。

相关内容