18.5. 仮想マシンのメモリーの設定
仮想マシンのパフォーマンスを改善するために、追加のホスト RAM を仮想マシンに割り当てることができます。同様に、仮想マシンに割り当てるメモリー量を減らして、ホストメモリーを他の仮想マシンやタスクに割り当てることができます。
18.5.1. メモリーのオーバーコミットメント リンクのコピーリンクがクリップボードにコピーされました!
KVM ハイパーバイザー上で実行される仮想マシン (VM) には、専用の物理 RAM ブロックが割り当てられません。代わりに、各仮想マシンが Linux プロセスとして機能し、要求された場合にのみホストの Linux カーネルがメモリーを割り当てます。また、ホストのメモリーマネージャーが、仮想マシンのメモリーを独自の物理メモリーとスワップ領域間で移動できます。メモリーオーバーコミットが有効な場合、仮想マシンによって要求された量よりも少ない物理メモリーを割り当てることをカーネルが決定できます。これは、要求されたメモリー量が仮想マシンのプロセスによって完全に使用されないことが多いためです。
デフォルトでは、Linux カーネルでメモリーオーバーコミットが有効になっており、カーネルは仮想マシンの要求に対して安全なメモリーオーバーコミット量を推定します。ただし、メモリーを大量に消費するワークロードでは、オーバーコミットが頻繁に発生するため、システムが不安定になる可能性があります。
メモリーのオーバーコミットを行うには、すべての仮想マシンを収容するためにホスト物理マシンに十分なスワップ領域を割り当てるとともに、ホスト物理マシンのプロセスに十分なメモリーを割り当てる必要があります。推奨される基本的なスワップ領域のサイズは、What is the recommended swap size for Red Hat platforms? を参照してください。(Red Hat ナレッジベース)
ホストのメモリー不足に対処するには、次の方法を推奨します。
- 仮想マシンごとに割り当てるメモリーを減らします。
- ホストに物理メモリーを追加します。
- より大きなスワップ領域を使用します。
仮想マシンは頻繁にスワップされると実行速度が低下します。また、オーバーコミットによりシステムのメモリーが不足 (OOM) する可能性があります。これにより、Linux カーネルが重要なシステムプロセスをシャットダウンする可能性があります。
メモリーのオーバーコミットは、デバイスの割り当てでは対応していません。これは、デバイスの割り当てが使用中の場合に、割り当てられたデバイスでダイレクトメモリーアクセス (DMA) を有効にするには、仮想マシンのすべてのメモリーを静的に事前に割り当てる必要があるためです。