17.4. 仮想マシンのメモリーの設定
仮想マシンのパフォーマンスを改善するために、追加のホスト RAM を仮想マシンに割り当てることができます。同様に、仮想マシンに割り当てるメモリー量を減らして、ホストメモリーを他の仮想マシンやタスクに割り当てることができます。
17.4.1. メモリーのオーバーコミットメント リンクのコピーリンクがクリップボードにコピーされました!
ホストで使用可能なメモリーリソースを最適に利用するために、RHEL では メモリーのオーバーコミットメント がデフォルトで有効になっています。メモリーオーバーコミット を使用すると、ホストマシンで使用可能なメモリーよりも多くのメモリーを仮想マシン (VM) に割り当てることができます。RHEL カーネルは、メモリーを必要とする仮想マシンに自動的にメモリーを割り当てます。
これは、KVM ハイパーバイザー上で実行される仮想マシンには、専用の物理 RAM ブロックが割り当てられていないためです。代わりに、各仮想マシンが Linux プロセスとして機能し、要求された場合にのみホストの Linux カーネルがメモリーを割り当てます。
また、ホストのメモリーマネージャーが、仮想マシンのメモリーを独自の物理メモリーとスワップ領域間で移動できます。メモリーオーバーコミットが有効な場合、仮想マシンによって要求された量よりも少ない物理メモリーを割り当てることをカーネルが決定できます。これは、要求されたメモリー量が仮想マシンのプロセスによって完全に使用されないことが多いためです。
ただし、メモリー消費の激しいワークロードで頻繁にオーバーコミットを行うと、システムの安定性が損なわれる可能性がある点に注意してください。
メモリーのオーバーコミットを行うには、すべての仮想マシンを収容するためにホスト物理マシンに十分なスワップ領域を割り当てるとともに、ホスト物理マシンのプロセスに十分なメモリーを割り当てる必要があります。
ホスト上のメモリー不足に対処する方法としては、以下のようなものが考えられます。
- 仮想マシンごとに割り当てるメモリーを減らします。
- ホストに物理メモリーを追加します。
- より大きなスワップ領域を使用します。
仮想マシンは、頻繁にスワップされると動作が遅くなります。また、オーバーコミットによりシステムのメモリーが不足 (OOM) する可能性があります。これにより、Linux カーネルが重要なシステムプロセスをシャットダウンする可能性があります。
メモリーのオーバーコミットは、デバイスの割り当てでは対応していません。これは、デバイスの割り当てが使用中の場合に、割り当てられたデバイスでダイレクトメモリーアクセス (DMA) を有効にするには、仮想マシンのすべてのメモリーを静的に事前に割り当てる必要があるためです。