Libvirt メモリ管理ホストとゲスト

Libvirt メモリ管理ホストとゲスト

私は、VM ホスト専用の Ubuntu ボックスに 2 つのゲスト OS をセットアップしました。これには、2 つの物理 CPU (それぞれ 6 コア)、16 GB RAM、および 3 つのハードディスクがあります。ホスト OS は 60 GB SSD 上にあり、ゲスト OS は 2 つのパーティションに分割された別の HDD 上にあります。最初のパーティションには、ゲスト OS 用の raw qcow イメージ ファイルが格納され、2 番目のパーティションは、ゲストにブロック デバイスとして割り当てられます (「プログラム」および「データ」用)。Linux ゲストではメモリ バルーニングが有効になっていますが、Windows では有効になっていません。

昨日、初めてメモリ不足に遭遇したので、自分のコンピュータでゲストのメモリ使用量をリアルタイムで監視することにしました。添付の写真にあるように、2 つの putty ウィンドウで 2 つの htop を実行しています。写真の上部はホストで、下部はゲストの 1 つ (Linux) です。理解できないことがいくつかあります。

  • ホストの RES 列には、最初のゲストが 5778M、他のゲストが 4274M と表示されています。これは合計で約 10G になりますが、画像の上部にある Mem 行には 6.9G と表示されています。これは奇妙です。さらに、下部にあるクライアント htop には、560M のメモリが使用中と表示されています。(560M != 5778M)

仮想化に関する RedHat のドキュメントを読みましたが、ゲストに必要な RAM の量は、ゲストに割り当てられたメモリ + ビデオ RAM + 「若干の」オーバーヘッド (正確には特定できません) を加算して計算する必要があると書かれています。上記の数値を使用すると、ゲストで使用されているのは 560M、ビデオ メモリは 16M で、合計は ~580M なので、私の場合の「若干の」オーバーヘッドは 5.2G でしょうか?

5778M は Linux ゲストが使用できる合計メモリではありません。ドメイン XML ファイルでは 8G が設定されているため、まだイライラしていません。

今朝 Linux ゲストを再起動したとき、ホスト上の RAM 使用量は約 2G から始まり、それ以降増加し続けています。ゲスト OS は約 450M から始まり、560M になりました。

ホストにスワップ ファイルを割り当てるとメモリ不足の問題が解決できると読んだので、32G のスワップ ファイルを作成し、ホストの sysctl で swapiness を 20 に設定しました。

しかし、ゲストとホスト間のメモリ使用量/割り当てなどについてはまだ理解していません。

この分野でより経験のある方は、私に正しい方向/チュートリアル/Wikipedia/whatevertoread を教えてもらえませんか? qemu ホスト ゲスト htops

関連情報