xm vcpu-pin / xm vcpu-set
今天做示範時在dom0執行 xm vcpu-pin 0 1 1,結果總是報錯 -22 Invalid argument 最後懷疑可能由於啟動xen時,指定了dom0_max_vcpus dom0_vcpus_pin參數。去掉之後重啟dom0,執行成功
如果不指定dom0_max_vcpus,會查看/etc/xen/xend-config.sxp,其中
# In SMP system, dom0 will use dom0-cpus # of CPUS
# If dom0-cpus = 0, dom0 will take all cpus available
(dom0-cpus 0)
這是dom0會起和物理CPU個數相同的VCPU,在16核的伺服器上,可以看到
Name ID VCPU CPU State Time(s) CPU Affinity
Domain-0 0 0 6 -b- 33.8 any cpu
Domain-0 0 1 13 -b- 108.6 any cpu
Domain-0 0 2 11 -b- 73.7 any cpu
Domain-0 0 3 10 -b- 41.7 any cpu
Domain-0 0 4 10 -b- 32.3 any cpu
Domain-0 0 5 4 -b- 25.4 any cpu
Domain-0 0 6 12 -b- 43.1 any cpu
Domain-0 0 7 0 -b- 18.9 any cpu
Domain-0 0 8 14 -b- 27.2 any cpu
Domain-0 0 9 15 -b- 59.4 any cpu
Domain-0 0 10 9 r-- 52.2 any cpu
Domain-0 0 11 5 -b- 136.6 any cpu
Domain-0 0 12 7 -b- 35.7 any cpu
Domain-0 0 13 3 -b- 74.3 any cpu
Domain-0 0 14 1 -b- 37.1 any cpu
Domain-0 0 15 8 -b- 26.8 any cpu
如果指定dom0_max_vcpus=4,則
Name ID VCPU CPU State Time(s) CPU Affinity
Domain-0 0 0 5 -b- 9.0 any cpu
Domain-0 0 1 0 -b- 9.5 any cpu
Domain-0 0 2 6 -b- 22.5 any cpu
Domain-0 0 3 12 r-- 6.5 any cpu
這時沒有CPU Affinity, 可以看到任何時刻會有隨機4個物理核提供給dom0
如果這時 xm vcpu-set 2,則會有兩個VCPU進入pause狀態,而且奇怪的是,再次調xm vcpu-set 4無法恢複
Name ID VCPU CPU State Time(s) CPU Affinity
Domain-0 0 0 9 r-- 14.1 any cpu
Domain-0 0 1 10 -b- 15.2 any cpu
Domain-0 0 2 - --p 28.4 any cpu
Domain-0 0 3 - --p 10.3 any cpu
如果在指定dom0_max_vcpus的同時又指定了dom0_vcpus_pin,那麼每個VCPU會有一個物理CPU被affinity,而且是一一對應
Name ID VCPU CPU State Time(s) CPU Affinity
Domain-0 0 0 0 -b- 1406012.2 0
Domain-0 0 1 1 -b- 397252.5 1
Domain-0 0 2 2 -b- 380299.8 2
Domain-0 0 3 3 r-- 432658.6 3
在這種啟動時指定了dom0_vcpus_pin的情況下,貌似調用xm vcpu-pin 會報錯 -22,如果不指定的話,xm vcpu-pin可以隨意指定CPU Affinity
Name ID VCPU CPU State Time(s) CPU Affinity
Domain-0 0 0 2 r-- 40.5 2
Domain-0 0 1 10 r-- 54.4 10