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