7.3. 仮想化 CPU のオーバーコミット

KVM ハイパーバイザーは、仮想化 CPU (vCPU) のオーバーコミットに対応しています。仮想化 CPU は、ゲスト仮想マシンで許可される負荷の限界までオーバーコミットすることができます。vCPU をオーバーコミットする際は、負荷が 100% に近づくと要求がドロップされたり、長すぎる応答時間が発生する恐れがあるため十分に注意してください。
Red Hat Enterprise Linux 7 では、複数の仮想 CPU を持つゲスト (対称型マルチプロセッシング (SMP) のゲスト仮想マシンとも呼ばれる) をオーバーコミットできます。ただし、実際の物理 CPU にある数よりも多くのコアを仮想マシンで実行すると、パフォーマンスが大幅に低下する可能性があります。
たとえば、仮想 CPU 数が 4 つの仮想マシンは、デュアルコアではなくクアッドコアプロセッサーのホストマシンで実行すべきです。実際の物理プロセッシングコア数を超えた SMP 仮想マシンをオーバーコミットすると、プログラムに割り当てられる CPU 時間が必要な時間に満たなくなるためにパフォーマンスが大幅に低下する原因となります。また、物理プロセッサーコア 1 つあたり合計 10 個を超える仮想 CPU を割り当てることは推奨されません。
SMP ゲストでは、一部の固有の処理オーバーヘッドが引き継がれます。タイムスライスを使用してリソースをゲストに割り当てるとゲスト内の CPU 間の通信速度が低下する可能性があるため、CPU のオーバーコミットにより SMP オーバーヘッドが増える可能性があります。このオーバーヘッドは、多数の仮想 CPU を持つか、またはオーバーコミットの割合の高いゲストの場合に増加します。
仮想化 CPU のオーバーコミットを行う最適な状態は、単一のホストに複数のゲストがあり、各ゲストにホスト CPU 数と比較した場合の少数の仮想 CPU (vCPU) がある場合です。KVM が安全にサポートするのは単一ホストにおいて、負荷が 100% 未満のゲストで、(5 台の仮想マシン上の) 5 つの仮想 CPU に対して1 つの物理 CPU という割合の場合です。KVM はすべての仮想マシン間で切り替えを実行し、負荷のバランスを取ります。
最適なパフォーマンスを得るために、各ゲスト内のプログラムを実行するのに必要な数の仮想 CPU のみをゲストに割り当てることを推奨します。

重要

オーバーコミットしている環境では、メモリーやプロセッシングリソースを 100% 使用するアプリケーションは不安定になる可能性があります。実稼働環境でメモリーまたは CPU をオーバーコミットする際は、十分なテストを行ってから実行してください。CPU のオーバーコミットの割合と SMP の量はワークロードによって異なるためです。