KVM上如何绑定虚拟机vcpu与物理CPU?

时间:2022-12-25 07:45:31

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