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