交换总数为零但使用量太高

hiw*_*way 6 linux centos

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


Ste*_*itt 9

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

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

  • 那么我不必问谁 mmap() 编辑了磁盘设备。 (4认同)