免费报告虚假的交换使用量

免费报告虚假的交换使用量

free 报告的交换使用量非常高。

[root@rhel6 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          9892       9537        354          0         71        884
-/+ buffers/cache:       8581       1310 
Swap:          767 1759218592     116869 

喜欢,真的高的。

[root@bb14 blackboard]# free -g|grep Swap
Swap:            0 1717986906        114 

或者是?

[root@bb14 blackboard]# free -h |grep Swap
Swap:         767M       767M       114G 

更奇怪的是,即使我禁用交换,这个数字仍然很高。

[root@rhel6 ~]# swapoff -a
[root@rhel6 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          9892       9760        131          0         45        638
-/+ buffers/cache:       9076        815 
Swap:            0 1759218592     116814 

当检查 meminfo 时,事情变得更加混乱,它显示 swapfree 高于 swaptotal。

[root@rhel6 ~]# cat /proc/meminfo|grep Swap
SwapCached:            0 kB
SwapTotal:        786428 kB
SwapFree:       120404008 kB

显然有些地方出了问题,我的第一反应是重新启动,但这是一台生产机器,意味着维护窗口等,我想知道是否有任何方法可以找出问题所在,甚至可能在不停机的情况下修复它。

答案1

解决方案是升级到内核-2.6.32-573.7.1.el6或更高。

yum update只需简单重启即可。

以下是错误报告的引用内核-2.6.32-573.1.1.el6.x86_64导致交换自由量大于交换总量:

get_swap_page() 锁定中的先前更改删除了 swap_lock 自旋锁的使用。这可能会导致 nr_swap_pages 损坏和 /proc/meminfo 文件中的 SwapFree 信息无效,其中 SwapFree 的大小可能超过 SwapTotal 的大小。此更新对 nr_swap_pages 使用原子变量,并且 /proc/meminfo 中的 SwapFree 大小现在正确。(BZ#1259362)

答案2

这看起来是 RHEL6.7 中的一个已知问题,其私人 bugzilla 中正在跟踪 kernel-2.6.32-573.1.1.el6.x86_64。

https://access.redhat.com/solutions/1571043

相关内容