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
)。