KVMの仮想CPU割当て設定

KVMの仮想サーバーの仮想CPU設定を行ってみました。

環境

物理サーバーは8コア(4コア8スレッド)CPUを使用しました。

「guest01」という名前の仮想サーバーの仮想CPUの設定を行った例です。


仮想CPUの割当て状態の確認

現在の仮想CPU設定状態を確認してみます。

virsh vcpuinfo guest01


結果

VCPU:           0
CPU:            2
State:          running
CPU time:       6844.8s
CPU Affinity:   yyyyyyyy

VCPU:           1
CPU:            4
State:          running
CPU time:       22192.9s
CPU Affinity:   yyyyyyyy

上記の見方は、
仮想CPU0は物理CPU2に割当てられていて、
仮想CPU1は物理CPU4に割当てられている。
という意味です。


どの物理CPUコアに割当てられてるかは
CPU Affinity: yyyyyyyy
のなかでyになっている箇所から選出されます。
8コア全て有効になっているので8個全てyになっています。


特定の物理CPUコアと仮想CPUを紐付ける場合

仮想CPU0を物理CPU5に割当ててみます。

virsh vcpupin guest01 0 5


結果

VCPU:           0
CPU:            5
State:          running
CPU time:       6849.4s
CPU Affinity:   ----y---

VCPU:           1
CPU:            4
State:          running
CPU time:       22208.9s
CPU Affinity:   yyyyyyyy

仮想CPU0の
CPU Affinityが5番目の箇所だけyになりました。
これで仮想CPU0は物理CPU5だけ使用するようになります。


物理CPUとの紐付け設定を戻す場合

上記で設定した紐付けを戻して8コア全て有効にします。

virsh vcpupin guest01 0 0,1,2,3,4,5,6,7


結果

VCPU:           0
CPU:            2
State:          running
CPU time:       6860.5s
CPU Affinity:   yyyyyyyy

VCPU:           1
CPU:            3
State:          running
CPU time:       22246.5s
CPU Affinity:   yyyyyyyy