Используемый своп, по данным 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
Очевидно, что-то не так, и мой первый инстинкт - перезагрузиться, но это производственная машина, что означает окна обслуживания и т. Д., И мне интересно, есть ли способ выяснить, что не так, и, возможно, даже исправить это без простоев.
Решением было перейти на ядро-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)
Похоже, что это известная проблема в RHEL6.7, и kernel-2.6.32-573.1.1.el6.x86_64 отслеживается в их частной bugzilla.