По данным 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 и недействительной информации SwapFree в файле /proc/meminfo, где размер SwapFree мог превышать размер SwapTotal. Это обновление использует атомарную переменную для nr_swap_pages, а размер SwapFree в /proc/meminfo теперь правильный. (BZ#1259362)
решение2
Похоже, это известная проблема в RHEL6.7 с kernel-2.6.32-573.1.1.el6.x86_64, отслеживаемая в их частной bugzilla.