2012年12月13日木曜日

OVSでVCPUの様子を見る。

今日は、引き続きVCPUについてです。

実際にOVSではどのように見えるのか、
今回は物理CPU2つあるOVSで、2VCPUのVMの様子を見てみます。

環境は、Oracle VM Server 2.x です。
OVS 2.2.1 のDom0 にログインしています。
[root@ovs1 ~]# cat /etc/ovs-release
Oracle VM server release 2.2.1

Dom0内でコマンド(xm list)を実行してみるとVMの情報が表示されます。
ためしに、「Domain-0」と「169_OEL48_cdev1」というドメイン(VM)
に対して xm コマンドを実行してみると、VCPUs 列には、「2」と表示されています。
※「169_OEL48_cdev1」というVMはあらかじめ起動済みです。
[root@ovs1 ~]# xm list Domain-0 169_OEL48_cdev1
Name              ID   Mem VCPUs  State   Time(s)
Domain-0           0   512     2 r----- 472675.4
169_OEL48_cdev1  223   128     2 -b----     10.8

たとえVMを1つしか起動していないとしても、
OVS(Xen)では、必ずDom0も起動していることになるので
2VCPUのVMと一緒に、Dom0 の様子も見ています。
この環境では、Dom0にも、VCPUを2つ割り当てています。
※本当は、Dom0と「169_OEL48_cdev1」というVM 以外のVMも動いていますが、
わかりにくくなるのであえて非表示にしています。



まず、現在の物理CPUの割り当て状態を見てみます。
このコマンド(xm vcpu-list)では、VCPUごとに1行表示されます。
2つのVMに、それぞれ2VCPU割り当てているため4行表示されています。
[root@ovs1 ~]# xm vcpu-list Domain-0 169_OEL48_cdev1
Name              ID  VCPU   CPU State   Time(s) CPU Affinity
Domain-0           0     0     0   r--  278912.1 any cpu
Domain-0           0     1     0   -b-  193755.4 any cpu
169_OEL48_cdev1  223     0     0   -b-       1.7 any cpu
169_OEL48_cdev1  223     1     1   r--       0.5 any cpu

このときの状況を、図にすると下の「状況1」のようになります。



VCPUとCPU(物理CPU)の列を見ることで、
VMの仮想CPUが、どの物理CPUを使用しているか見ることができます。

「CPU Affinity」(CPU割り当て)の列が「any cpu」なので、
すべての物理CPUが、VCPUに対して割り当てられるようになっています。

Stateの意味は下記です。
  • r (running)
    →CPUが割り当てられてる状態です。
  • b (blocked)
    →CPUがブロック状態です。(IOを待っていたりして)

もう一度、CPUの割り当て状態を確認してみます。
そうすると、各VCPUの物理CPU割り当てが変化しています。
[root@ovs1 ~]# xm vcpu-list Domain-0 169_OEL48_cdev1
Name              ID  VCPU   CPU State   Time(s) CPU Affinity
Domain-0           0     0     0   -b-  278919.9 any cpu
Domain-0           0     1     1   r--  193763.4 any cpu
169_OEL48_cdev1  223     0     1   -b-       6.9 any cpu
169_OEL48_cdev1  223     1     0   r--       4.1 any cpu

この表示結果のときの状況を図にすると、下の「状況2」のようになります。



このようにVCPUと物理CPUが割り当てられていて、
絶えず状態が変化しています。

以上、OVSでのCPU割り当ての見え方でした。

0 件のコメント:

コメントを投稿