本文作者介绍:
随着云计算的新一波浪潮,作为云计算基础架构的虚拟化技术再次成为热门。说起虚拟化,VMWare,KVM, XEN和Hyper-V都是目前主流的平台。对于Hyper-V的介绍,大多如此: “Hyper-V是微软的一款虚拟化产品,大部分国内的VPS服务商使用这个架构,主要是因为其专为Windows定制,管理起来较为方便。目前的Hyper-V也支持Linux,只不过性能损失比较严重。”
时至今日,Hyper-V作为微软在战略高度全力推进的公有云Azure的基础虚拟化平台,此种说法依然成立吗?Linux在Hyper-V和Azure上只是“象征性”地能跑跑而已吗?
微软作为软件巨头早已悟到“华山论剑,到底谁最快;天下武功,唯快不破” 的道理。
自2009年微软把支持Hyper-V的虚拟驱动贡献给Linux内核后,两万多行代码已构建了完整的Linux虚拟机功能,包括高性能的网络和存储,时间同步,热迁移,虚拟硬盘大小动态调整,热备份,动态内存等等 (详情请见:https://technet.microsoft.com/en-us/library/dn531031.aspx)。
微软开源技术中心近一年在Linux上进一步的工作更让运行于Hyper-V之上的Linux的性能有了新的重大提升,下面我们就具体学习下这都有什么秘笈啊。
VMBUS协议的优化:
- 宿主机/虚拟机信号优化
- 虚拟机端:可扩张的中断传送机制
- 多通道的支持,获取高性能I/O
虚拟机驱动的优化
- vRSS(virtual Receive Side Scaling, 虚拟接收方扩展)。这是 Windows Server? 2012 R2 中的一项功能,可让您将虚拟网络适配器的负载分散在虚拟机中的多个虚拟处理器上。多核虚拟机中的接收方网络处理通常受到这一事实的制约:单个虚拟处理器需要为来自虚拟网络适配器的所有中断提供服务。 虚拟接收方缩放使网络适配器能够将其网络处理负载分散在多核虚拟机中的多个虚拟处理器上,因此解决了这一问题。
- TSO (TCP Segmentation Offload)。利用网卡对TCP数据包分片,减轻CPU负荷。
- 同时来自于微软开源技术中心的Linux开发者们也进行了各种调优,比如为NUMA节点分配发送和接收的缓冲,清理发送和接收的路径,批处理多个RNDIS数据包等等。
如果您仍质疑微软对于Linux的承诺,那么我们来看看事实胜于雄辩的数据吧。在10Gb的公有云Azure中,Linux(内核版本:4.1.0-rc6-next-20150604)虚拟机的表现和Windows(版本:Windows Server 2012 R2)虚拟机并驾齐驱。
注释: Azure D14 虚拟机CPU配置: 16 vCPUs of E5-2660 0 @ 2.20GHz, on two NUMA nodes
拥抱开源的微软对于Linux的支持和优化不止于此。在2015年,微软针对运行于Azure的Linux实现了远程直接内存访问(RDMA, Remote Direct Memory Access),从而提供给Azure中两台Linux虚拟机高速低延迟的网络连接。这一技术对于大规模并行计算机集群特别有用。Azure中A8和A9的虚拟机使用Infiniband网络提供基于Hyper-V的RMDA虚拟化来获得接近于“裸机”的性能 – 小于3微秒的延迟以及大于32Gbps的带宽。
目前Azure镜像市场的SUSE Linux服务器企业版(SLES12) 提供对于Azure Linux RDMA的支持,也敬请期待更多的发行版和版本以及该版本落地于中国。
如果您正关注微软提交到Linux内核的代码,您也会惊喜地发现微软已经准备开始在Hyper-V上支持PCI Express网卡设备的直通和SR-IOV (Single-root I/O virtualization,单根I/O虚拟化)。网卡直通支持虚拟机绕过Hypervisor层,直接访问物理I/O设备,从而获得最高的性能。但是在同一时刻,物理I/O设备只能被一个虚拟机独享;SR-IOV是Intel在2007年提出的解决虚拟化网络I/O的硬件技术方案,该技术不仅能够继承网卡直通的高性能优势,而且同时支持物理I/O设备的跨虚拟机共享。
微软开源技术中心的Linux开发者们继续精益求精的潜修苦练,敬请您期待我们在2016年再给大家奉献上新的秘笈及数据。
最后,小编还有一个呼吁:
立即访问http://market.azure.cn