web-dev-qa-db-ja.com

KVM CentOSでは、スワップが使い果たされ、物理メモリが利用可能

私はテストCentOS KVMホストを約1週間実行し、3つのCentOSゲストを使用しました。12GBの物理RAM、実際には約7.5GBがVMに割り当てられています。これらのVMは、サーバーがまだテスト段階にあるため、まだ使用されていませんが、過去24〜48時間でスワップの使用量が増加していることに気付きました。現在、使い果たされているようです。

freeの出力は次のとおりです

# free -m
             total       used       free     shared    buffers     cached
Mem:         11905      11749        155          0         81       4632
-/+ buffers/cache:       7035       4869
Swap:         2047       2047          0

ご覧のとおり、物理メモリはすべて使用されていますが、キャッシュメモリとして使用されています。これは、アプリケーションで必要になった場合に解放されるため、通常は問題ないと思います。

この回答 にあるシェルスクリプトを実行しました。3qemu-kvmプロセス。

サーバーは、スワップ用に割り当てられた2GBの論理ボリュームのみでプロビジョニングされました。通常、最大8GBの物理メモリを一致させるのが好きです。
スワップ論理ボリュームを拡張する価値がありますか、それとも別のスワップボリュームを追加する価値がありますか?

これはKVMで一般的ですか?他のKVMホストで見たものではないので、調整する必要のある特定の設定はありますか?

他にコメント/提案はありますか?

1
batfastad

これは正常です。アイドル状態のVMが使用するページはスワップされ、メモリはキャッシュに使用されます。 swappiness をゼロに設定すると、パフォーマンスを犠牲にしてこのようにスワップを使用できなくなる可能性があります(キャッシュが小さくなります)。

これがRedHatの 推奨 (多くのYMMVを使用):

スワップスペースは次のように計算されます。

すべてのゲストの合計に必要なメモリ量を計算します-この例では:(50ゲスト*ゲストあたり1GBのメモリ)= 50GB

ホストOSとホストの最小スワップスペースに必要な量にゲストメモリの量を追加します-この例では、50GBのゲストメモリ+ 4GBのホストOS + 4GBの最小スワップ= 58GB

システム上にある物理的な量からこの量を引くRAMこの例では58GB-32GB = 26GB

答えは、割り当てる必要のあるスワップスペースの量です。この例では26GB

この例では、使用されるメモリの量を削減するカーネルの同じページのマージ(KSM)は考慮されていません。

ここでRHはホストの4Gスワップを言っていますが、 ここ 彼らはあなたに12G * 0.5 = 6Gスワップを推奨しています。

KVM IBMの KVMのベストプラクティス ドキュメントを読むことをお勧めします。

2
Mark Wagner

私の経験では、いいえ、追加のスワップを割り当てる価値はありません。スワップ(HDD)をRAMとして使用し、RAMをキャッシュ(HDDのショートカット)として使用します。..ほとんどの場合、逆効果に聞こえます。通常、8GBのシステムではRAM 1〜2GBのスワップを割り当てます。通常、RAIDパーティションスキームの残りの部分です。例:

3x64GB SSD(OS /ソフトウェアRaid0)2x1TB SATA(データRaid1)

/ bootで最初のSSDを1GBに設定し、残りのドライブを同じパーティションにした後、2x1GBを無駄にします。 Raid0のスワップのように聞こえますが、通常はアクセスされません。

KVMについては、バグレポートを調べ、個々のゲストマシンのトラブルシューティングを行います。どちらかにメモリリークが発生する可能性はありますか?

0
MaKR