基于KVM的虚拟机网络性能优化研究
2017-11-02吕梅桂
摘要:随着服务器虚拟化及桌面虚拟化技术的普及,越来越多的高校选择将传统PC操作系统迁移到虚拟化环境,从而有效提高了硬件和软件利用率。而虚拟机的网络性能直接影响着用户体验,从网络性能评测指标出发,介绍了基于KVM + QEMU的虚拟机网络优化的一般方法,进一步分析探究了一种以SRIOV模式为基础的虚拟机网络性能优化方案。实验结果表明,该方案提高了虚拟机系统的网络带宽,减少了网络延迟,整体性能提高了25%以上,有效提升了用户体验。
关键词:虚拟机网络;KVM QEMU;SRIOV
DOIDOI:10.11907/rjdk.172402
中图分类号:TP393文献标识码:A文章编号文章编号:16727800(2017)010018002
英文标题Research on Performance Optimization of Virtual Machine Network Based on KVM
——副标题
英文作者LV Meigui
英文作者单位(Information Center, Qianjiang College ,Hangzhou 310018,China)
英文摘要Abstract:With the popularity of server and desktop virtualization technology, more and more colleges choose to migrate traditional PC OS to virtualization environment, which effectivelyimproves the utilization of hardware and software. The network performance of virtualmachine directly affects user experience, this article starts from network performanceevaluation index, introduces the general way of virtual machine network optimization basedon KVM + QEMU, then analyzes one performance optimization scheme of virtual machine networkbased on SRIOV.The results of experiments shows that the scheme improves the systems network bandwidth and reduces the network latencyof the virtual machine, and overall performance is improved by more than 25%, which effectively improves the user experience.
英文关键词Key Words:virtual machine network; KVM QEMU; SRIOV
收稿日期收稿日期:2017-07-25
基金项目基金项目:2016年度钱江学院科学研究项目管理类重点项目(2016QJJG01)
作者简介作者简介:吕梅桂(1986-),女,福建泉州人,硕士,钱江学院教务部信息中心实验师, 研究方向为计算机实验室管理和维护。
0引言
随着虚拟化技术的高速发展,桌面虚拟化已广泛应用于各个行业,并且逐渐成为当前云计算发展和研究的一个热点[1]。目前,桌面虚拟化技术在网络性能方面还面临很大的挑战,集中体现在用户网络不流畅,特别是在上百台虚拟机同时运行时,会出现严重的卡顿现象,亟需深入探究虚拟机网络性能优化方法[2]。本文针对虚拟化环境中的网络问题,从虚拟机网络性能优化方面入手,提出一种基于SRIOV网卡模式的虚拟机网络性能优化方案。
1QEMU/KVM虚拟化技术概述
QEMU(Quick Emulator)是一个面向完整PC硬件系统的开源仿真器。除仿真处理器外,还能仿真所有必要的子系统,如连网硬件和视频硬件。还可实现高级概念上的仿真,包括对称多处理系统(多达255个CPU)及其它处理器架构(如ARM和PowerPC)[3]。本文的QEMU软件运行于惠普服务器虚拟化环境,仿真X8664处理器。
KVM(Kernelbased Virtual Machine)是基于主流Linux内核的虚拟化解决方案。KVM由以色列公司Qumranet开发,并首次以内核模块的形式集成到2007年发布的Linux 2.6.20版本中。在硬件方面的支持(尤其是Intel和AMD公司的虚拟化技术)和软件方面(特别是以Red Hat工程师为核心开发成员)的功能開发、性能优化的共同作用下,目前KVM虚拟化技术已经拥有非常丰富的功能和优秀的性能[4]。KVM作为一个内核模块无法单独运行虚拟机,而QEMU作为一个应用层的纯虚拟化软件,虚拟机系统性能将达不到实际应用要求。本文使用的QEMUKVM软件包含了应用层的QEMU程序以及内核模块KVM,其中QEMU用于运行虚拟机,KVM模块则用于提供虚拟机加速支持。
2虚拟机网络性能评测指标
网络性能分析是网络优化的基础,是合理选择网络优化措施的条件,也是判断网络优化效果的依据[5]。通常,虚拟机系统的网络性能以吞吐量(Throughput)和延迟(Latency)来衡量[6]。吞吐量是指在没有丢包的情况下,设备能够接收或发送网络数据包的最大速率;延迟是指发送一个网络包所需的时间。一般情况下,网络吞吐量越大、延迟越少,表示系统的网络性能越好,反之则越差[7]。endprint
在虚拟化环境中,一个数据包从虚拟机到物理网卡的完整路径是:虚拟机→虚拟网卡→虚拟化层→内核网桥→物理网卡,基于QEMU的全虚拟化网卡收发网络包即通过这个流程完成。全虚拟化带来的好处就是虚拟机操作系统不需要修改,默认情况下虚拟机也不需要再安装驱动。虚拟机迁移难度小,可实现跨平台迁移,如从KVM环境迁移到VMware环境,虚拟机镜像文件也不需要进行修改。但全虚拟化网卡也有自身的缺陷:CPU资源消耗大,尤其当虚拟机数量较多时,容易达到服务器的性能瓶颈,且全虚拟化网卡的性能一般,因而用户体验较差。虚拟机网络优化的总体方案是缩短虚拟机访问物理网卡的路径,甚至直接访问物理网卡,以达到与物理机相同的网络性能。如图1所示,基于Intel VTd技术(AMD也有类似技术)实现物理网卡的直接分配,虚拟机单独使用网卡,可达到几乎和物理网卡一样的性能。
图1虚拟机通过PCI Passthrough方式直接访问物理网卡
3SRIOV模式介绍
上文介绍的网卡直接分配方式尽管性能很好,但一个虚拟机独占了一个网卡,服务器上最多只能配置和网卡相同数量的虚拟机,显然不适用于桌面虚拟化的部署环境。SRIOV(单根I/O虚拟化)技术正好同时满足了这两个要求:多个虚拟机共享同一个物理网卡,并且具备网卡直接分配的性能。为此,SRIOV引入了两种新的function类型:①Physical Function(PF):擁有所用PCIe功能的function,用于配置管理SRIOV;②Virtual Function(VF):轻量级的PCIe function,包含数据收发所需资源[8]。
在KVM虚拟化环境中,可以将一个或多个VF分配给一个客户机,客户机通过自身的VF驱动程序直接操作设备的VF,而不需要KVM的参与,其总体架构如图2所示。以Intel 82599网卡为例,每个网卡最多支持63个VF,理论上可以分别配置给63个虚拟机使用。
图2基于SRIOV技术的虚拟机配置方案
4基于SRIOV模式的虚拟机网络性能优化
除了使用SRIOV模式缩短数据包收发路径来提高虚拟机网络性能外,减少网卡中断造成的虚拟机退出频率,从而使虚拟机有更多的CPU时间片处理网络数据,可使虚拟机的网络性能进一步提高。
在KVM虚拟化环境中,发往宿主机和虚拟机的网卡中断,都会重定向到虚拟机。所有虚拟机都会处理该中断,在配置多台虚拟机的环境下,对服务器整体性能的影响尤为突出。中断直接传递机制能有效地解决该问题。Direct IRQ原理如图3所示。
图3Direct IRQ原理
在宿主机上注册分配给客户机VF1的网卡中断向量为96,映射到客户机独占的CPU2,客户机中对应的网卡中断向量为42。当宿主机接收到发往客户机的96号中断,直接将此中断注入客户机,发往其它宿主机、客户机的中断则不会被注入到该客户机[9]。
5优化前后虚拟机网络性能对比
5.1实验环境搭建
实验环境包括:服务器Intel(R) Xeon(R) CPU E52650 (Sand Bridge),关闭超线程,128GB内存;宿主机:Linux3.10.0 使用Direct IRQ;客户机:Linux3.10.0 + 1 dedicated CPU;网卡:Intel 82599开启SRIOV功能。
5.2测试过程
(1)宿主机操作。加载ixgbe网卡驱动,开启SRIOV
并配置eth0上的IP“192.168.0.110”;分配物理CPU、VF给客户机独占,启动虚拟机,使用宿主机的CPU2作为客户机的CPU[10]。
(2)客户机操作。加载ixgbevf网卡驱动,并配置eth0上的IP “192.168.0.100”。
(3)吞吐量测试。在客户机执行“iperfs”,宿主机上执行“iperfc 192.168.0.100”。
(4)延迟测试。在宿主机上执行“ping 192.168.0.100”。
5.3测试结果
使用iperf测试虚拟机网卡吞吐率,优化前SRIOV的网卡吞吐率为8.36Gbps,优化后吞吐率为10.36Gbps,提高了24%;使用ping测试虚拟机延迟,优化后的网络延迟减少了30%。实验结果表明,基于direct IRQ技术的虚拟机网络方案能有效地提高虚拟机网络性能。
6结语
本文介绍了在KVM虚拟化环境下,虚拟机网络性能优化的一般方法,并提出了一种基于Direcet IRQ技术的虚拟机网络优化方案。实验结果证明,该方案有效提高了虚拟机网络性能,对于实时性要求较高的桌面虚拟化而言,无疑是一个很好的方向。
参考文献参考文献:
[1]杨培.性能桌面管理的研究及应用[D].南京:南京理工大学,2011.
[2]曹文治.虚拟机网络性能优化研究[D].武汉:华中科技大学,2013.
[3]QEMU wiki[EB/OL].http://wiki.qemu.org/Main_Page.
[4]张政.基于KVM虚拟化的显卡直传技术研究[J].软件导刊,2016,15(10):142.
[5]百度百科. 网络性能分析[EB/OL]. https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90/16382775.
[6]彼得森.计算机网络:系统方法[M].王勇,张龙飞,等,译.北京:机械工业出版社,2015:24.
[7]英特尔开源软件技术中心.系统虚拟化——原理与实现[M].北京:清华大学出版社,2008:178179.
[8]肖力,汪爱伟,等.深度实践KVM:核心技术、管理运维、性能优化与项目实施[M].北京:机械工业出版社,2015.
[9]SEKIYAMA. Improvement of realtime performance of KVM [EB/OL].[201758].https://events.linuxfoundation.org/images/stories/pdf/lcna_co2012_sekiyama.pdf.
[10]GUOZHAOLIANG,HAOQINFEN.Optimization of KVM network based on CPU affinity on multicores[C].2011 International Conference on Information Technology, ComputerEngineering and Management Sciences,2011.
责任编辑(责任编辑:黄健)endprint