一种使用多队列技术的虚拟机网络性能优化的实现方法技术

技术编号:7576310 阅读:530 留言:0更新日期:2012-07-18 21:04
一种使用多队列技术的虚拟机网络性能优化的实现方法,它有三大步骤:步骤一:对QEMU的网络初始化部分进行修改,通过修改QEMU,增加对于多队列的支持;步骤二:对vhost多队列的修改,是为了支持QEMU对多队列的使用和vhost-net多队列网卡的支持,包括针对于一个队列使用一个线程进行数据传输的修改和系统调用的修改;步骤三:对vhost模块中和网络相关的部分——vhost-net多队列网卡的修改,使得虚拟网卡支持多队列的传输。本发明专利技术通过设计和实现虚拟机到宿主机的多个虚拟队列,来实现增加虚拟机网络数据流量和吞吐量的目的。该方法构思巧妙、科学合理,在计算机技术领域内具有良好的使用价值和广阔的应用前景。

【技术实现步骤摘要】

本专利技术采用基于Virtio的多队列虚拟化技术,涉及计算机虚拟化技术中的IO虚拟化。尤其涉及,它是一种虚拟化网络中采用多队列方法实现虚拟机和宿主机之间交互的实现方法,属于计算机

技术介绍
早在上个世纪60年代末70年代初IBM公司就在大型机上实现了商用的虚拟机,诸多文献描述了 IBM在OS 360使用的虚拟机的实现以及经典的虚拟机体系结构并描述了利用虚拟机监控器实现虚拟化的方法。研究人员总结了第三代计算机可虚拟性 (Virtualizability):指出可虚拟性主要依赖于计算机指令集中敏感指令集的存在方式。 同时总结了可虚拟性的两个重要定理定理一对于任何通常意义上的第三代计算机,如果该计算机敏感指令集是特权指令集的子集,就可以在此计算机上创建一个虚拟机监控器。定理二 对于任何通常意义上的第三代计算机,如果该计算机的用户敏感指令集是特权指令集的子集,就可以在此计算机上创建一个混合式(hybrid)的虚拟机监控器。由于大多数计算机并不满足定理一的要求,所以一些文献放松了要求只要符合定理二的要求就可以利用陷入-模拟的方式(trap-and-emulate)完成虚拟化。可虚拟化的关键是对敏感的非特权指令的处理。对这种指令的不同处理方式引发了下面几种不同的虚拟化方式。I)基于二进制翻译的全虚拟化(Full Virtualization with Binary Translation)。这种方式动态的扫描二进制代码,将敏感指令替换为跳转到相应模拟例程。 通过这种方式避免敏感指令的产生。VMware公司已经可以提供基于这种方式的商业化解决方案。这是目前唯一的在IA32/Intel 64体系结构下不需要特殊硬件辅助实现全虚拟化的方式。但这种方案也存在明显的缺陷由于要动态的监控并即时翻译二进制码,性能上会有所损失。2)硬件辅助的虚拟化(Hardware Assisted Virtualization)。这种方式通过扩展指令集,通过硬件完成传统虚拟机监控器(Virtual Machine Monitor, VMM)所需要的陷入以及状态切换。通过这种方式可以极大地简化虚拟机的设计。但是由于硬件在状态切换的时候会保存整个处理器的状态并切换地址空间,由此带来的开销不可忽略,特别是在虚拟机与虚拟机监控器频繁切换的情况下。本专利技术专利采用的就是这种方式实现VMM。3)准虚拟化(Para-virtualization)。这种方式通过静态的改写客户操作系统源代码,通过客户操作系统与虚拟机监控器显示协作的方式完成虚拟化策略。开放源代码的虚拟机监控器Xen就是基于这种技术。这种技术通过VM对VMM的感知,避免了传统陷入-模拟方式效率较低的问题,但需要对客户操作系统源代码进行修改。10设备虚拟化在虚拟环境里,1/0面临的问题是现实中外设资源是有限的,为了满足多个客户机操作系统对外设访问的需求,VMM必须通过I/O虚拟化的方式复用有限的外设资源。现代计算机环境中,I/O设备种类丰富,不同厂商生产的具有不同编程接口的I/O设备使I/O 虚拟化的难度相当大。根据不同I/O设备的特点和用途,虚拟化系统中的I/O设备可以分为5类 专用设备(Dedicated Devices) 可分割设备(Partitioned Devices) 共享设备(Shared Devices) 伪脱机设备(Spooled Devices) 物理不存在的设备I/O虚拟化作为系统虚拟化的重要组成部分,同样可按照实现技术分为软件I/O 全虚拟化、I/o类虚拟化和硬件辅助I/O全虚拟化。在软件完全虚拟化、类虚拟化和硬件辅助全虚拟化等虚拟化环境中,I/O设备的虚拟化都不尽相同,其核心在于I/o设备原生驱动(Legacy Driver)的存放位置以及VMM对 I/O设备的处理方式。软件完全虚拟化中,VMM必须模拟设备硬件,它是在会话的最低级别进行模拟的 (例如,网络驱动程序)。尽管在该抽象中模拟很干净,但它同时也是最低效、最复杂的。在类虚拟化中,Guest OS和VMM能够共同合作,让模拟更加高效。随着硬件辅助全虚拟化技术的出现,新的处理器通过加入虚拟化的高级指令来让Guest OS到VMM的切换更加地高效。 此外,硬件也随着I/O虚拟化的发展而不断改进。1)1/0全虚拟化软件完全虚拟化环境下,一般使用I/O模拟的方式来虚拟化I/O设备。在I/O虚拟化中,设备模型用于完成目标设备的模拟,设备请求的处理和响应。设备模型模拟目标设备的软件接口,使Guest OS能够用目标设备的驱动来驱动虚拟设备,进而透明地对虚拟设备进行操作。为了模拟目标设备软件接口,设备模型也需要同时实现目标设备的功能。这些功能是基于软件实现的。故设备模型所模拟的目标设备与宿主机的硬件不存在直接的关联与对应关系,而是建立在一定的运行环境之上。对于不同结构的虚拟机,其设备模型的工作方式是类似的VMM捕获对虚拟设备地址区域的读写操作、捕获对设备的访问;在真实硬件设备需要产生中断时,VMM还必须能触发Guest OS的中断。但是,对于不同结构的虚拟机,设备模型所运行的环境和位置可以是不同的。VMware Workstation和KVM都采用宿主操作系统结构,即它们的VMM运行于一个传统操作系统之上。这类VMM无法获得对硬件资源的完全控制,因此通常采用软件模拟的方法来虚拟1/0设备。Guest OS的1/0操作会被VMM捕获,并转交给Host OS的一个用户态进程,该进程通过对Host OS的系统调用来模拟设备的行为。VMware ESX Server对网卡,磁盘等关键设备采用了全虚拟化方法。它采用独立监控器模型,VMM直接运行于硬件之上,直接操作硬件设备。Guest OS看到的是一组统一的虚拟1/0设备。对这些虚拟设备的每一个1/0操作都会陷入到VMM中,由VMM对1/0指令进行解析并映射到实际物理设备,然后直接控制硬件完成。这种方法能够获得较好的性能,对客户操作系统也完全透明。但是由于VMM需要直接控制各种I/O设备,其设计会变的非常复杂,而且无法应对设备的快速更新。模拟技术的最大好处就是不需要修改客户设备驱动,但其缺点在于效率很低,模拟的难度大。这种方法最大性能开销在于处理器模式切换包括Guest OS到VMM的切换, 以及从内核带VMM到用户态I/O模拟进程的切换。故优化上主要策略就是减少模式切换。 为了减少模式切换,VMware Workstation中的许多I/O指令直接在VMM中处理,只有遇到真正会改变物理设备状态的操作(如读写磁盘,网络数据包收发),才会切换到I/O模拟进程中进一步处理。2) I/O类虚拟化在完全虚拟化中,I/O驱动包括Guest OS的硬件驱动,设备模拟及VMM中的真实硬件驱动。而类虚拟化不需要这种冗余的三层结构,I/o交互能够以高于I/O指令级别的抽闲来实现。类虚拟化环境下,Guest OS的内核被修改,原生设备驱动从Guest OS中移出,放入了一个经过VMM授权的设备虚拟机中(Device VM),其余虚拟机中Guest OS的I/O请求都交由这个设备虚拟机处理。而在Guest OS内部,系统为每个虚拟I/O设备安装一个特殊驱动,该驱动负责I/O请求的传递。设备本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:肖利民许航雷松松
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术