爲虛擬機vCPU綁定物理CPU

爲了提升緩存命中率,提升虛擬機性能,能夠將vCPU綁定到指定的物理CPU去執行。具體設置步驟以下:linux

  1. 在宿主機操做系統啓動時將用於虛擬機的CPU獨立出來,使其上只運行vCPU線程,QEMU進程和少數的管理進程。設置方法便是在內核啓動參數中加入: isolcpus=0,1 例如在grub.cfg下面的配置以下:
menuentry 'Fedora (3.13.6-200.fc20.x86_64) 20 (Heisenbug)' --class fedora --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.13.4-200.fc20.x86_64-advanced-5bcef32f-430b-4d74-beaa-4fcfccc438f9' {
                ......
        	linux	/vmlinuz-3.13.6-200.fc20.x86_64 root=UUID=5bcef32f-430b-4d74-beaa-4fcfccc438f9 ro vconsole.font=latarcyrheb-sun16  rhgb quiet LANG=zh_CN.UTF-8 isolcpus=0,1
        	initrd /initramfs-3.13.6-200.fc20.x86_64.img
        }
  1. 使用taskset命令將vCPU線程綁定到指定的物理CPU。例如,某虛擬機的qemu進程及兩個vCPU線程以下:
​[root@kelvin ~]# ps -eLo ruser,pid,ppid,lwp,psr,args | grep qemu | grep -v grep
        root      4706  3629  4706   1 qemu-system-x86_64 -m 2G -smp 2 /var/lib/libvirt/images/fedora.img -enable-kvm
        root      4706  3629  4708   1 qemu-system-x86_64 -m 2G -smp 2 /var/lib/libvirt/images/fedora.img -enable-kvm
        root      4706  3629  4709   0 qemu-system-x86_64 -m 2G -smp 2 /var/lib/libvirt/images/fedora.img -enable-kvm

若要將線程ID爲4709的vCPU從CPU0綁定到CPU2上執行,可以使用以下命令: #taskset -p 0x4 4709 -p後面接的是物理CPU的掩碼,其二進制表示從最低位到最高位分別表示第0個物理CPU到最後一個物理CPU,若二進制表示爲1,則表示某線程能夠在該物理CPU上運行,若爲0,則不能。上面的命令的含義就是,線程ID爲4709的線程(vCPU)只能在第2個(從0開始編號)物理CPU上運行。執行上述命令的結果以下:緩存

[root@kelvin ~]# taskset -p 0x4 4709
        pid 4709's current affinity mask: f
        pid 4709's new affinity mask: 4
        [root@kelvin ~]# ps -eLo ruser,pid,ppid,lwp,psr,args | grep qemu | grep -v grep
        root      4706  3629  4706   3 qemu-system-x86_64 -m 2G -smp 2 /var/lib/libvirt/images/fedora.img -enable-kvm
        root      4706  3629  4708   0 qemu-system-x86_64 -m 2G -smp 2 /var/lib/libvirt/images/fedora.img -enable-kvm
        root      4706  3629  4709   2 qemu-system-x86_64 -m 2G -smp 2 /var/lib/libvirt/images/fedora.img -enable-kvm

線程ID爲4709的vCPU已經在編號爲2的物理CPU上運行了。性能

相關文章
相關標籤/搜索