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

KVM ハイパーバイザーは、仮想化した CPU のオーバーコミットに対応しています。仮想化した CPU は、ゲスト仮想マシンで許可できる負荷の限界までオーバーコミットすることができます。VCPU (仮想化 CPU) をオーバーコミットする際は、負荷が 100% に近づくと要求がドロップされたり、使用不可となるレスポンスタイムが発生する恐れがあるため十分に注意してください。
仮想 CPU (VCPU) のオーバーコミットを行う最適な状態は、単一のホスト物理マシンに複数のゲスト仮想マシンがある場合です。ここでは、ゲストは同一の VCPU を共有しません。このタイプの負荷には、Linux スケジューラーが非常に効率的です。KVM が安全にサポートするのは単一ホスト物理マシンにおいて、負荷が 100% 未満のゲスト仮想マシンで、(5 台の仮想マシン上の) 5 つの VCPU に対して1 つの物理 CPU という割合の場合です。KVM はこれら全マシン間で切り替えを実行し、負荷のバランスを取ります。
物理的なプロセッシングコア数を超えた状態の完全対称型マルチプロセッシングのゲスト仮想マシンはオーバーコミットできません。たとえば、VCPU 数が 4 つのゲスト仮想マシンは、デュアルコアプロセッサーのホスト物理マシンでは実行すべきではありません。実際の物理プロセッシングコア数を超えた状態の完全対称型マルチプロセッシングのゲスト仮想マシンをオーバーコミットすると、パフォーマンスが大幅に低下する原因となります。
ゲスト仮想マシンに割り当てる VCPU 数は、最大でも物理的なコア数と同数にするのが適切であり、その場合は予想通りの動作となります。たとえば、クアッドコア (プロセッサーコア数が 4 つ) のホストなら VCPU 数が 4つのゲスト仮想マシンを実行できます。この場合、負荷が 100% 未満なら、この設定で効率的に動作するはずです。

重要

十分な検証を行っていない状態で、実稼働環境でのメモリーや CPU のオーバコミットは実施しないでください。オーバーコミットしている環境では、メモリーやプロセッシングリソースを 100% 使用するアプリケーションは不安定になる可能性があります。導入する前にテストを行ってください。
仮想マシンでのパフォーマンスを最適化する方法については、Red Hat Enterprise Linux 6 仮想化のチューニングと最適化ガイド を参照してください。