今日は、仮想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 件のコメント:
コメントを投稿