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 の既知の問題のようで、kernel-2.6.32-573.1.1.el6.x86_64 がプライベート Bugzilla で追跡されています。