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
Run Code Online (Sandbox Code Playgroud)
我已将 vm.swappiness=0 设置为禁用交换,但输出free -m
显示使用了交换缓存,这是1759218604
一个非常大的数字。我认为使用的交换内存应该是 0,为什么不是 0?
centos 版本:6.7,Linux 内核:2.6
Voj*_*fny 15
这是一个非常古老的 RHEL/CentOS 6 内核错误,您需要更新到 kernel-2.6.32-573.6.1.el6(或更新版本)。有关更多详细信息,请参阅此RH 客户门户文章(需要 RH 帐户)和有关 serverfault 的此问题。
我还建议升级您的系统,不再支持 CentOS 6,6.7甚至不是最新的次要版本(最后一个是 6.10)。
您的系统没有使用任何交换。
内核不直接跟踪已使用的交换量,因此将其free
计算为总交换量和空闲交换量之间的差值。出于某种原因(请参阅Vojtech 的回答),您的系统内核认为它有 36k 的可用交换,总共 0k,因此free
计算出您有 -36k 已用交换。然而,它存储为一个无符号值,因此它最终显示为一个大整数(自您指定以来按 1024 缩放-m
)。