KVM上如何綁定虛擬機vcpu與物理CPU?

Taskset命令設置某虛擬機在某個固定cpu上運行

1)設置某個進程pid在某個cpu上運行:

[root@test~]# taskset -p000000000000000000000000000000000000100 95090

pid 95090's current affinity mask: 1

pid 95090's new affinity mask: 100

解釋:設置95090這個進程,在cpu8上運行

95090是我提前用ps –aux|grep “虛擬機名” 找到的虛擬機進程id。

2)vcpupin的命令解釋如下:Pin guest domain virtual CPUs to physical host CPUs;

綁定命令:virsh vcpupin 4 0 8:綁定domain4的vcpu0 到物理CPU8

 

2)查看哪個進程在哪個CPU上運行:ps -eopid,args,psr|grep 95090

[root@test ~]# ps -eopid,args,psr|grep 95090

 95090/usr/bin/qemu-system-test    8

 95091 [vhost-95090]                80

161336 grep --color=auto 95090      72

 

Taskset和vcpupin區別:

Taskset是以task(也就是虛擬機)爲單位,也就是以虛擬機上的所有cpu爲一個單位,與物理機上的cpu進行綁定,它不能指定虛擬機上的某個vcpu與物理機上某個物理cpu進行綁定,其粒度較大。

Vcpupin命令就可以單獨把虛擬機上的vcpu與物理機上的物理cpu進行綁定。

比如vm1有4個vcpu(core),物理機有8個cpu(8個core,假如每個core一個線程),taskset能做到把4個vcpu同時綁定到一個或者多個cpu上,但vcpupin能把每個vcpu與每個cpu進行綁定。



參考鏈接:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Virtualization/ch33s08.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章