现在人们已经接受并开始逐步实施虚拟化技术,为提供理想的性能和可靠的安全性,硬件虚拟化技术必不可少。它的发展是循序渐进的,在我们最熟悉的世界,硬件虚拟化是先从处理器开始,再到芯片组,再到IO设备,因为每一个阶段都以上一个阶段作为基础,如下图所示:
其中VT-x和VT-d技术已经被人熟悉(竞争对手也有类似的技术)
现在的阶段就处在IO虚拟化阶段,一个老生常谈的问题是:外部IO已经逐渐跟不上处理器等的发展。无论你需不需要虚拟化,你都需要解决IO的问题。何况,随着处理器的架构越来越先进,核心数越来越多,提高资源利用率的需求使这些机器越来越倾向于虚拟化。
现在IO虚拟化的问题和处理器虚拟化等的问题差不多,就是人们希望硬件辅助方案能解决软件方案的性能损耗问题。在IO设备上,频繁的VMM切换以及对中断的处理是导致虚拟化效率低下的两个重点因素,如下图所示:
软件实现的IO虚拟化网络吞吐量低下
硬件的IO虚拟化就是为了解决这个问题,对应的解决方案相关的很多,我们这次介绍的是Intel的VMDq:Virtual Machine Device Queue,虚拟机设备队列。这是一个专门用于提升网卡的虚拟化IO性能的技术,对于服务器来说,最关键的IO组成部分就是网络和存储了,甚至网络更为重要一些。
虚拟化的精髓就是多个虚拟机共享一定的硬件资源,特别地:网卡。尽管VT-d技术提供了不同的虚拟机直接使用不同的网卡的可能性,不过多个虚拟机共用一块或者数块网卡仍然是绝大多数情况。对于VT-d技术,一些人可能会很高兴地看到,不同的显卡也可以通过它在不同的虚拟机之间直接分配,如Paralles Workstation Extreme软件可以主机和虚拟机直接使用不同的Quadro显卡进行渲染工作(是的,它和前面说的还有些距离,不过原理相同)。
因为这样的缘故,实际上所有的提供上网能力的虚拟机软件都内置了一个虚拟交换机,大部分还在这个基础上提供了路由器的功能,作用就是和真实的交换机/路由器一样,将多台虚拟机连成一个或者多个网络:
VMDq实际上将这个虚拟交换机的一部分功能用硬件进行加速
VMDq实际上实现了一个半软半硬的虚拟交换机,和原有的纯软件方案相比,新的方案提供了更高的性能、更低的资源占用率,它怎么实现的呢?
VMDq技术提供了一个属于ISO OSI 9层网络模型中的第二层的分类/排序引擎实现了交换机的部分功能,为了提供合适的性能,它必须使用到一堆缓存队列,因此支持VMDq的网卡通常也支持RSS接收方扩展功能
在支持VMDq的网卡上,用硬件实现了一个Layer 2分类/排序器,通过MAC地址或者VLAN来讲数据包发送到指定的虚拟机队列中去(这堆队列叫做pool),最后的VMM软件只需要非常简单的数据复制工作就可以完成虚拟交换机的任务。从而极大地提升了虚拟化网络效率。
支持VMDq队列的网卡通常也支持RSS队列,例如Intel 82576EB网卡支持8个虚拟机队列,支持16个RSS队列,它们实质上都是16个发送/接收队列对的划分,另外意味着,每个虚拟机可以分配到两个发送/接收队列对。
Hyper-V 1.0,也就是Windows Server 2008携带的版本,所有的网络IO都需要经过经过纯软件实现的虚拟交换机
Hyper-V 2.0,也就是Windows Server 2008 R2携带的版本,提供了一个新的VMQ特性,它利用硬件的VMDq将虚拟交换机的大部分工作放到了网卡上,并通过内存映射设计避免了数据需要在多个空间来来回复制移动
VMware的NetQueue同样也利用了VMDq技术,实现了两倍以上的吞吐量提升
VMDq的效果是不是真有这么明显呢?还有IO虚拟化相关的技术还有很多,且听下回分解。
Greenfoot是一款简单易用的Java开发环境,该软件界面清爽简约,既可以作为一个开发框使用,也能够作为集成开发环境使用,操作起来十分简单。这款软件支持多种语言,但是默认的语言是英文,因此将该软件下载到电脑上的时候,会发现软件的界面语言是英文版本的,这对于英语基础较差的朋友来说,使用这款软件就会...
07-05
Egret UI Editor是一款开源的2D游戏开发代码编辑软件,其主要功能是针对Egret项目中的Exml皮肤文件进行可视化编辑,功能十分强大。我们在使用这款软件的过程中,可以将一些常用操作设置快捷键,这样就可以简化编程,从而提高代码编辑的工作效率。但是这款软件在日常生活中使用得不多,并且专业性...
07-05
KittenCode是一款十分专业的编程软件,该软件给用户提供了可视化的操作界面,支持Python语言的编程开发以及第三方库管理,并且提供了很多实用的工具,功能十分强大。我们在使用这款软件进行编程开发的过程中,最基本、最常做的操作就是新建项目,因此我们很有必要掌握新建项目的方法。但是这款软件的专业性...
07-05
Thonny是一款十分专业的Python编辑软件,该软件界面清爽简单,给用户提供了丰富的编程工具,具备代码补全、语法错误显示等功能,非常的适合新手使用。该软件还支持多种语言,所以在下载这款软件的时候,有时候下载到电脑中的软件是英文版本的,这对于英语基础较差的小伙伴来说,使用这款软件就会变得十分困难,...
07-05