Swapがずっと100%

swap開発関連

はじめに

Swapメモリがずっと100%で張り付いてるよ監視エラーが発生した場合、どうすべきなのか悩み調べた結果をまとめておきます。前提としてサーバはCentOSです。

Swapメモリとは

Linux に於ける Swap 領域 は、物理メモリー (RAM) の容量が満杯になった時点で使用されます。システムが更なるメモリーリソースを必要として、 RAM が満杯である場合、メモリー内の活動していないページが swap 領域に移動されます。

RedHatTraning

swapを使うとディスクアクセスが発生するから遅いとかありますが、そのあたりは用途によって違うので一概にはいえないかなぁと思います。あとは今どきSSD標準になってきてるのでそこまで遅くはないのではないかと。
メモリが2GB以下の場合はメモリの2倍。
2GB以上の場合はメモリ+2GBととありますが今どきどうなんでしょうか。

ハイバネーションとは

シャットダウンする際にメモリをディスクに退避して次回起動した際に、メモリを復元する仕組みのことです。
macにはデフォルトで入ってて便利なあれですね。

RedHatの推奨

システムの RAM の容量推奨 swap 領域ハイバネートを許可する場合の推奨 swap 領域
2GB 以下の RAMRAM 容量の 2 倍RAM 容量の 3 倍
2GB から 8GB の RAMRAM 容量と同じRAM 容量の 2 倍
8GB から 64GB の RAM最低 4GBRAM 容量の 1.5 倍
64GB 以上の RAM最低 4GBハイバネートは推奨しません

引用)9.15.5. パーティション設定に関する推奨

ずっと100%張り付いてるけど大丈夫か?

推奨をみたしているとして、それでも100%になっているけど大丈夫か?についての判断ポイントですが、ハイバネートを使っていないのであれば大きな問題はないと思われます。ただし、リアルタイムにswapのin/outが多発する場合はリソース不足している可能性があります。

・メモリが不足しているように見えても、キャッシュが非常に有効に働いて良好な運用状態の場合がある。
・ Swapメモリの総量値にはほとんど意味はない。
・問題視すべきはリアルタイムのI/O発生で、これが発生している場合は致命的なリソース不足となっていることが断言できる。

makoto_fujimotoのblog

リアルタイムのI/Oはvmstatコマンドで確認できます。

vmstat [オプション] [更新の間隔 [回数]]

$ vmstat 2

siがスワップIN、soがスワップOUTとなり、ここが常に大きく変動するようであれば設定やリソースの見直しをした方がよさそうです。

さいごに

CloudサービスでVMやベアメタルを借りる際にはデフォルト設定をみておいたほうがいいかもしれません。デフォルトだとけっこう少なめに設定されてたりするので。
ただ、DBやBIサーバなんかを自前で構築しない限りあまり発生しないとはおもいますが。。。

©2018 LLC Shimer-System.
image/svg+xml