KVM环境下vCPU绑定到物理CPU

KVM环境下vCPU绑定到物理CPU
在KVM环境中测试虚拟系统性能时,如果宿主机是有两个CPU socket的硬件,会碰到由于vCPU在不同物理CPU上浮动导致测试RFC2544时出现少量丢包的现象,测试结果非常不稳定。可以将vCPU绑定到物理CPU来优化这个问题(不能完全避免),本章仅介绍单vCPU绑定到单物理CPU上的情况。绑定到单物理CPU上可以暂时规避少量丢包的问题,但是也存在宿主机上单个物理CPU满载后实际虚拟系统未到达性能上限的情况,本章也暂不深入。

1查看当前运行的虚拟系统名称
[root@localhost ~]# virsh list
setlocale: No such file or directory
Id Name State
----------------------------------------------------
4 vOS2 running

2、查看虚拟机的配置
[root@localhost ~]# virsh dumpxml vOS2
setlocale: No such file or directory
< domain type=‘kvm’ id=‘4’>
< name> vOS2< /name>
< uuid>9c31cd50-f719-4d35-90b2-3044dfdc95bb< /uuid>
< memory unit=‘KiB’>4194304< /memory>
< currentMemory unit=‘KiB’>4194304< /currentMemory>
< vcpu placement=‘static’>2< /vcpu>
< resource>
< partition>/machine< /partition>
< /resource>
< os>
< type arch=‘x86_64’ machine=‘pc-i440fx-rhel7.0.0’>hvm< /type>
< boot dev=‘hd’/>
< /os>
< features>
< acpi/>
< apic/>
< /features>
< cpu mode=‘host-model’>
< model fallback=‘allow’/>
< topology sockets=‘1’ cores=‘2’ threads=‘1’/>
< /cpu>
< clock offset=‘utc’>
< timer name=‘rtc’ tickpolicy=‘catchup’/>
< timer name=‘pit’ tickpolicy=‘delay’/>
< timer name=‘hpet’ present=‘no’/>
< /clock>
< on_poweroff>destroy< /on_poweroff>
< on_reboot>restart< /on_reboot>
< on_crash>restart< /on_crash>
< pm>
< suspend-to-mem enabled=‘no’/>
< suspend-to-disk enabled=‘no’/>
< /pm>
…省略大量信息

3、查看qemu进程号
[root@localhost ~]# ps -ef |grep vOS2
qemu 8480 1 51 16:43 ? 00:25:54 /usr/libexec/qemu-kvm -name vOS2 -S -machine pc-i440fx-rhel7.0.0,accel=kvm,usb=off -cpu SandyBridge,+vme,+ds,+acpi,+ss,+ht,+tm,+pbe,+dtes64,+monitor,+ds_cpl,+vmx,+smx,+est,+tm2,+xtpr,+pdcm,+pcid,+dca,+osxsave,+f16c,+rdrand,+arat,+fsgsbase,+smep,+erms,+xsaveopt,+pdpe1gb -m 4096 -realtime mlock=off -smp 2,sockets=1,cores=2,threads=1 -uuid 9c31cd50-f719-4d35-90b2-3044dfdc95bb -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-4-vNGFW2/monitor.sock,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=discard -no-hpet -no-shutdown -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 -boot strict=on -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x6.0x7 -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x6 -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x6.0x1 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x6.0x2 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 -drive file=/var/lib/libvirt/images/vNGFW2.qcow2,format=qcow2,if=none,id=drive-ide0-0-0 -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -drive if=none,id=drive-ide0-0-1,readonly=on -device ide-cd,bus=ide.0,unit=1,drive=drive-ide0-0-1,id=ide0-0-1 -netdev tap,fd=27,id=hostnet0,vhost=on,vhostfd=29 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:28:21:fe,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev spicevmc,id=charchannel0,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 -spice port=5900,addr=127.0.0.1,disable-ticketing,image-compression=off,seamless-migration=on -vga qxl -global qxl-vga.ram_size=67108864 -global qxl-vga.vram_size=67108864 -global qxl-vga.vgamem_mb=16 -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -chardev spicevmc,id=charredir0,name=usbredir -device usb-redir,chardev=charredir0,id=redir0,bus=usb.0,port=1 -chardev spicevmc,id=charredir1,name=usbredir -device usb-redir,chardev=charredir1,id=redir1,bus=usb.0,port=2 -device vfio-pci,host=01:00.0,id=hostdev0,bus=pci.0,addr=0x8 -device vfio-pci,host=01:00.1,id=hostdev1,bus=pci.0,addr=0x9 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x7 -msg timestamp=on
root 10036 7775 0 17:34 pts/3 00:00:00 grep --color=auto vOS2

4、反复查看vcpu信息,最后一列是cpu的编号,可以看到qemu进程是在不同的CPU上不停的漂移的
[root@localhost ~]# ps -eLo ruser,pid,ppid,lwp,psr|grep 8480
qemu 8480 1 8480 3
qemu 8480 1 8491 2
qemu 8480 1 8494 4
qemu 8480 1 8505 9
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# ps -eLo ruser,pid,ppid,lwp,psr|grep 8480
qemu 8480 1 8480 6
qemu 8480 1 8491 2
qemu 8480 1 8494 4
qemu 8480 1 8505 9
[root@localhost ~]#
[root@localhost ~]# ps -eLo ruser,pid,ppid,lwp,psr|grep 8480
qemu 8480 1 8480 6
qemu 8480 1 8491 2
qemu 8480 1 8494 4
qemu 8480 1 8505 9
qemu 8480 1 10056 11

5、通过绑定进程到cpu比较麻烦,可以直接绑定vCPU到物理CPU。反复通过virsh命令查看vCPU对应的物理CPU,可以看到也是浮动的
[root@localhost ~]# virsh vcpuinfo vOS2
setlocale: No such file or directory
VCPU: 0
CPU: 2
State: running
CPU time: 107.3s
CPU Affinity: yyyyyyyyyyyyyyyyyyyy //这里看到是宿主机所有物理CPU 核心,Y代表有可以使用,基于CPU时间片来回切换
VCPU: 1
CPU: 0
State: running
CPU time: 116.3s
CPU Affinity: yyyyyyyyyyyyyyyyyyyy
[root@localhost ~]#
[root@localhost ~]# virsh vcpuinfo vOS2
setlocale: No such file or directory
VCPU: 0
CPU: 3
State: running
CPU time: 107.8s
CPU Affinity: yyyyyyyyyyyyyyyyyyyy
VCPU: 1
CPU: 8
State: running
CPU time: 116.8s
CPU Affinity: yyyyyyyyyyyyyyyyyyyy
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# virsh vcpuinfo vOS2
setlocale: No such file or directory
VCPU: 0
CPU: 0
State: running
CPU time: 108.0s
CPU Affinity: yyyyyyyyyyyyyyyyyyyy
VCPU: 1
CPU: 9
State: running
CPU time: 117.1s
CPU Affinity: yyyyyyyyyyyyyyyyyyyy
6、绑定vCPU到物理CPU,这里将vCPU绑定到主CPU上
[root@localhost ~]# virsh vcpupin vOS2 0 2
setlocale: No such file or directory
[root@localhost ~]# virsh vcpupin vOS2 1 4
setlocale: No such file or directory
查看绑定结果,可以看到已经将vCPU0绑定到物理CPU2,vCPU1绑定到物理CPU4上
[root@localhost ~]# virsh vcpuinfo vOS2
setlocale: No such file or directory
VCPU: 0
CPU: 2
State: running
CPU time: 630.1s
CPU Affinity: --y-----------------
VCPU: 1
CPU: 4
State: running
CPU time: 880.7s
CPU Affinity: ----y---------------
[root@localhost ~]# virsh vcpuinfo vOS2
setlocale: No such file or directory
VCPU: 0
CPU: 2
State: running
CPU time: 693.0s
CPU Affinity: --y-----------------
VCPU: 1
CPU: 4
State: running
CPU time: 993.7s
CPU Affinity: ----y---------------
[root@localhost ~]# virsh dumpxml vOS2
setlocale: No such file or directory
< domain type=‘kvm’ id=‘4’>
< name>vOS2< /name>
< uuid>9c31cd50-f719-4d35-90b2-3044dfdc95bb< /uuid>
< memory unit=‘KiB’>4194304< /memory>
< currentMemory unit=‘KiB’>4194304< /currentMemory>
< vcpu placement=‘static’>2< /vcpu>
< cputune>
< vcpupin vcpu=‘0’ cpuset=‘2’/>
< vcpupin vcpu=‘1’ cpuset=‘4’/>
< /cputune>
< resource>
< partition>/machine< /partition>
< /resource>
< os>
< type arch=‘x86_64’ machine=‘pc-i440fx-rhel7.0.0’>hvm< /type>
< boot dev=‘hd’/>
< /os>
< features>
< acpi/>
< apic/>
< /features>
< cpu mode=‘host-model’>
< model fallback=‘allow’/>
< topology sockets=‘1’ cores=‘2’ threads=‘1’/>
< /cpu>
< clock offset=‘utc’>
< timer name=‘rtc’ tickpolicy=‘catchup’/>
< timer name=‘pit’ tickpolicy=‘delay’/>
< timer name=‘hpet’ present=‘no’/>
< /clock>
< on_poweroff>destroy< /on_poweroff>
< on_reboot>restart< /on_reboot>
< on_crash>restart< /on_crash>
< pm>

7、再次测试RFC2544性能,对比绑定前后结果:

未绑定CPU,连续测试64,512,1518字节时,测试到1518字节的时候会出现非常不稳定的丢包现象,需要单独测试1518字节才能得到一个测试结果

绑定CPU,多次测试,结果基本稳定

KVM环境下vCPU绑定到物理CPU相关推荐

  1. 云电脑-kvm环境下云服务器配置常见命令

    kvm环境下使用云电脑出问题了怎么办?雷电云电脑教大家轻松解决, 云电脑-kvm环境配置常见命令使用 查看所有虚拟机状态: [root@kvm7 vps] virsh list --all 查看指定虚 ...

  2. win10环境下下载安装openpose(only cpu)并在pycharm中运行代码(超详细)

    win10环境下下载安装openpose(only cpu)并在pycharm中运行代码(超详细) (一)前言 (二)准备工作 (三)友情提醒 (四)详细安装步骤 1.新建文件夹 2.下载OpenPo ...

  3. 物理cpu数和cpu核数和逻辑cpu数和vcpu区别

    物理cpu数和cpu核数和逻辑cpu数和vcpu区别 1.物理cpu数:主板上实际插入的cpu数量,可以数不重复的 physical id 有几个(physical id) 2.cpu核数:单块CPU ...

  4. 一个物理CPU如何划分成多个虚拟CPU

    原文链接:一个物理CPU如何划分成多个虚拟CPU 问题:一个虚拟机可以分配多少个虚拟CPU,以及如何在服务器上限制虚拟机的数量? 一个物理CPU一般一个内核会支持多个处理线程(英特尔超线程技术).这就 ...

  5. vm虚拟机分配处理器_虚拟机处理器核数与物理cpu的关系

    vCPU,顾名思义,是虚拟CPU. 创建虚拟机时,需求配置vCPU资源. 因而vCPU是虚拟机的部件. 因而脱离VM,议论vCPU是没有意义的. 虚拟化办理体系怎么调度vCPU,取决于体系内的虚拟机数 ...

  6. Linux环境下查看服务器硬件信息

    Linux环境下查看服务器硬件信息 查看CPU型号       cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c       16  Inte ...

  7. [zz]kvm环境快照(snapshot)的使用方法

    实例一  使用qemu-img命令使用快照 kvm环境下qcow2的镜像支持快照 1 确认镜像的格式   [root@nc1 boss]# qemu-img info test.qcow2    im ...

  8. 关于对cpu的理解和kvm虚拟机到物理cpu的绑定

    这段时间一直在想,云计算除了虚拟化之外,还应该有其它的东西,那就是优化.因为我们虚拟出来资源之后怎么用,怎么划分,是并行也好,是租给用户使用也好,都要实现资源调度和使用的最优化.嗯,这是这段时间关于云 ...

  9. KVM虚拟机绑定物理CPU进行性能调优

    使用KVM虚拟化,当虚拟机的vcpu不是很多时,可以通过绑定物理cpu的方式提到虚拟机的性能.实验证明Host整体性能大约能提高5%,单台虚拟机性能最高提高10%. 实验数据(数据来自同事,Thank ...

  10. 为虚拟机vCPU绑定物理CPU

    为了提高缓存命中率,提高虚拟机性能,可以将vCPU绑定到指定的物理CPU去执行.具体设置步骤如下: 在宿主机操作系统启动时将用于虚拟机的CPU独立出来,使其上只运行vCPU线程,QEMU进程和少数的管 ...

最新文章

  1. 教你如何查看 Git 提交中发生了什么变化
  2. 明星居然来我们宜昌保利时代拍戏——电影《被光抓走的人》
  3. mysql的概念和入门语句
  4. mysql 5.5 编译参数_mysql5.5编译安装
  5. python帮助文件如何设为中文_如何使用Python将.CHM帮助文件存储为文本?
  6. 【拓展】一个故事讲完CPU的工作原理
  7. linux修改文件权限为所有人都可以访问,Linux 笔记分享八:文件权限的设定
  8. Linux ubuntu中编写shell脚本文件
  9. 三角函数逼近锯齿函数和阶梯函数
  10. ZXing源码解析四:如何识别图片中的二维码
  11. java 文件缓冲区_基于直接缓冲区和非直接缓冲区的javaIO文件操作
  12. java图书管理系统这个怎么改呢
  13. 基于FPGA的贪吃蛇游戏设计(1)整体架构设计
  14. 围棋博弈程序的实现与思考(4)——棋盘的数据结构
  15. 中情局窃密手段曝光:“哭泣天使”能让电视假关机变成窃听器
  16. photoshop 图片裁剪与填充前景色及背景色
  17. ginkgo php,ginkgo: ginkgo 是一个免费开源的轻量级 PHP 开发框架
  18. nginx配置文件映射外网服务器
  19. C语言中的while的意思,C语言中while是什么意思
  20. 刘志军为什么能一手遮天

热门文章

  1. 智方8000系文具进销存管理系统 华军软件网
  2. 使用 SCTP 优化网络
  3. java微信订阅号(公众号)开发案例
  4. Mugeda(木疙瘩)H5案例课—换装小游戏-岑远科-专题视频课程
  5. visual_studio2013、vs2013下载
  6. 西门子PLC的常见的通讯方式
  7. X4扭曲字体或图形 coreldraw_cdrx4精简版下载|coreldraw x4 sp2 精简版下载增强版 15.2.3.1614 - 系统天堂...
  8. 2021年计算机保研夏令营回忆(中科大、信工所、南开、天大)
  9. 华为手机怎么语音服务器,华为p20怎么语音朗读
  10. linux中不用命令安装flash,Linux下安装flash player的方法