2012年12月11日火曜日

VCPUの話。

今日は、仮想CPUの話です。

OVSなどのハイパーバイザ製品上で稼働するVMには、
仮想CPU(VCPU)が割り当てられます。

このVCPUの動きについて説明してみようと思います。



VCPUは、OVSが持っている物理CPUを
VMに使用させるためのものです。
ただし、CPUを 「エミュレーション(ソフトウェアがCPUを再現している)
しているわけではなく、
ハイパーバイザがVMに直接、VCPU数をもとにした数の
物理CPUを使わせています。


たとえば、
物理CPUを4つ持っているOVS(Xenハイパーバイザ)で、
VCPUが2つ割り当てられているVMがあるとします。



この時、Xenハイパーバイザが物理CPU2つ分(VCPUと同じ数)
をVMに割り当てて、使用させている感じです。
VCPUは、いつも同じ物理CPUに割り当てられるわけではなく、
その時々で、別の物理CPUを割り当てられています。

VCPUと物理CPUの関係は、
ハイパーバイザによって絶えず調整されています。
そのため、あるときのVCPUと物理CPUの割り当てが、上の図のような状態だとしても、
次の瞬間、下の図のようにVMはそれぞれ別の物理CPUを使用しています。



また次の瞬間、
VMはそれぞれ別の物理CPUと紐づけられているわけです。




仮に、ゲストOSが常にVCPUを100%近く使用しているような
状態になっていたとしても
ずっと同じ物理CPUをつかみ続けているというわけではありません。

また、どんなにゲストOSが暴走しても、
1つのVCPUあたり、1つの物理CPUしか使用しません。


以上、VCPUの話でした。(続きはまた後日)

0 件のコメント:

コメントを投稿