虚拟化环境中的应用加速的制作方法

文档序号:6376902阅读:206来源:国知局
专利名称:虚拟化环境中的应用加速的制作方法
技术领域
本发明涉及虚拟化环境中的应用加速。背景背景和相关技术计算机和计算系统已经影响了现代生活的几乎每个方面。计算机通常在工作、休闲、保健、运输、娱乐、家政管理等中都有涉猎。许多计算系统具有足够的硬件和资源来允许计算系统同时地执行多个函数或者以就好像函数同时被执行那样的方式来执行多个函数。这样的计算系统可以被认为是具有多线程,其中每个线程都执行任务。在一些实施例中,可以实现虚拟机。虚拟环境充分利用实际硬件资源来实现虚拟机,所述虚拟机在软件和硬件看来是实际硬件机。在一些场景中,虚拟化环境中的硬件设备访问需要将硬件设备虚拟化以及使用虚拟设备来对向真实硬件设备的请求进行编组。具体而言,虚拟机通过与虚拟硬件设备通信来与真实硬件对接,其中所述虚拟硬件设备将消息路由到硬件机,然后与真实硬件设备匕如网卡、存储设备、视频卡、声卡等等)通信。以这种方式实现的虚拟设备可能是低效的并且提供低下的性能,因为它们不具有任何底层硬件,而是依靠虚拟机与主机操作系统之间的紧密协作。在其他场景中,虚拟化感知的硬件设备和相关联的软件基础结构允许硬件设备及其驱动程序在虚拟机中操作。这些专门化的虚拟化感知的硬件设备是专门安装的,使得为了转换,现有技术可能需要将传统硬件设备替换为虚拟化感知的设备。完全的硬件虚拟化需要复杂的硬件和软件驱动程序和基础结构。在此要求保护的主题不限于解决任何缺点或仅在诸如上述环境中操作的各个实施例。相反,提供该背景仅用以示出在其中可实践在此描述的部分实施例的一个示例性技术领域。简要概述在此所示的一个实施例包括可以在计算环境中实施的方法。该方法包括向虚拟机提供对硬件的直接访问的动作。该方法包括确定虚拟机应当具有对某件硬件的访问。方法还包括虚拟机请求访问来自主机的硬件,其中主机是控制计算系统的物理硬件并管理虚拟机的特殊分区。该方法还包括该主机将该硬件配置为通过该主机将硬件资源映射到虚拟机的地址空间来允许由该虚拟机直接访问该硬件。该方法还包括一旦该硬件已经被该主机配置,该虚拟机就直接访问该硬件,而不经过该主机。提供本发明内容以便以简化形式介绍将在以下具体实施方式
中进一步描述的一些概念。本概述并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。另外的特征和优点将在以下的描述中阐述,并且部分可从该描述中显而易见,或者可以从此处的教示实践中习得。本发明的特征和优点可以通过在所附权利要求中特别指出的手段和组合来实现并获取。本发明的特征将从以下描述和所附权利要求书中变得完全显而易见,或者可通过如下所述对本发明的实践而获知。附图简述为了描述可获得本主题的上述和其它优点和特征的方式,将通过参考附图中示出的本主题的具体实施例来呈现以上简要描述的本主题的更具体描述。应该理解,这些附图仅描绘了各典型实施例,因此其不应被认为是对范围的限制,各实施例将通过使用附图用附加特征和细节来描述并解释,在附图中图I示出了包括主机和多个虚拟机的计算环境;图2示出了将资源从硬件映射到应用。图3示出了将资源从应用映射到硬件;以及图4示出了向虚拟机提供对硬件的直接访问的方法。
具体实施例在此所示的一些实施例可以允许自然地提供多用户访问的设备在虚拟化环境中达到与在非虚拟化环境中运行时相同水平或几乎相同水平的I/o性能。在一些实施例中,这可以通过如下方式来实现将驱动程序和API虚拟化、从而允许虚拟机与硬件设备直接交互,而不是将硬件设备虚拟化。与虚拟机硬件交互被截取并且被发送给真实机器以用于与实际硬件交互相比,这可以在虚拟机与实际硬件直接交互时允许本机、或接近本机的I/O性能。另外,各实施例可以用非虚拟化感知的硬件来实现。各实施例还可以允许现有硬件向虚拟机提供新的I/O设备,而不需要改变其他硬件组件,比如IOMMU (输入/输出存储器管理单元)或SR-IOV (单根输入/输出虚拟化)。仅仅添加新的1\0卡将足以向所托管的虚拟机展示相同的AO功能。所得到的性能可超过通过模拟该设备所能达到的性能。如上所示,各实施例可以允许虚拟机中的软件组件就好像物理硬件设备在该虚拟机中是可物理地访问的那样访问物理硬件设备。在一些实施例中,这可以使用远程直接存储器访问(RDMA)硬件102来完成,该硬件102促进从一个计算机的存储器到另一计算机的存储器的直接存储器访问,而不涉及任一计算机的操作系统。现在参考

图1,示出了一个示例。图I在第一虚拟机104 — I中不出了 从用户模式库118 — I片段向内核模式设备驱动程序(比如设备驱动程序124)的输入/输出控制(I0CTL)请求106 — I被虚拟机104 —I中的虚拟机服务客户端108 - I截取并且处理,所述虚拟机服务客户端108 - I与运行在主机112中的虚拟服务提供者110协作,并且通过系统管理程序114和共享的虚拟机总线126进行通信。 通过将设备驱动程序API (例如IOCTL接口)虚拟化,设备的功能可以被映射到虚拟机,而不需要硬件设备(例如RDMA硬件102)处的虚拟化支持。带宽、等待时间、CPU利用率和抖动方面的优点允许虚拟环境中的计算和I/O工作量(比如云计算、启动诸如高性能计算之类的工作量)的更大的伸缩能力。在图I所示的示例中,InfiniBand (无限带宽)RDMA网络硬件102在虚拟机环境100中可由诸如应用116 - O、116 — I和116 — 2 (在此通称116)之类的应用访问。RDMA硬件102通常向应用116提供在不涉及操作系统的情况下执行I/O操作的能力。RDMA感知的应用通过向诸如驱动程序118 - O、118 — I和118 — 2 (其在此可以通称为118)之类的RDMA硬件驱动程序作出请求来分配和设置硬件资源(比如RDMA硬件102)。这些硬件资源提供了用于通过以下方式发起I/o操作以及直接从系统存储器122中的应用的地址空间120中检测所述操作的完成的手段,其方式是将诸如寄存器之类的硬件资源映射到应用地址空间120和/或将应用存储器映射到硬件102中,使得硬件120可以读取和/或写入该存储器。这些存储器缓冲区和设备寄存器形成了应用116与设备硬件102之间的通信的基础,使得在运行时不需要内核转移。这样的设备的设备驱动程序118涉及运行在操作系统中的内核模式驱动程序124、以及 实现到内核驱动程序(例如驱动程序124)的IOCTL接口的用户模式库118 — O、118 — I和118 — 2 二者以用于分配和配置设备资源。硬件设备(例如RDMA硬件102)维护和实施应用隔离和安全性,从而防止应用116受到另一应用的资源和存储器的不利影响。RDMA硬件102本机地允许多个不同的应用并发访问。一些实施例将运行在虚拟机104中的应用116看成是与运行在非虚拟化操作系统中的应用相同的应用。传统上由运行在应用的地址空间120中的驱动程序组件所使用的IOCTL接口被虚拟化,使得这些驱动程序组件在没有修改的情况下就好像它们与硬件102直接对接那样在虚拟化环境中工作。通过提供相关的存储器映射功能以将硬件资源映射到虚拟机104以及将虚拟机应用存储器映射到硬件102两者以用于DMA访问,各实施例允许运行在虚拟机104中的软件、运行在用户模式中的应用116以及运行在内核模式中的操作系统组件二者直接访问硬件102,它们从硬件102的角度被看成是任何其他应用。如前所述,在传统硬件虚拟化解决方案中,I/O端口访问被模拟,从而导致在虚拟机与主机之间进行额外的通信,其中主机保持对设备硬件的完全控制。可替代地,硬件必须从客机物理地址翻译成主机物理地址(例如SRI0V)。相比之下,在此所述的一些实施例对API层进行抽象,使得硬件102保持对根操作系统的完全控制,而不需要翻译客机虚拟机地址。一些实施例可以与不包括任何虚拟化感知能力的硬件一起使用,而是虚拟化可以完全以软件来实现,而不需要硬件102知道虚拟机104正在访问硬件102。如上面所讨论的那样,硬件资源可被从硬件映射到应用地址空间,并且应用存储器可被映射到硬件。图2和3示出了这些映射的示例。具体而言,图2示出了将资源从硬件映射到应用地址空间。具体而言,在202,图2示出了 应用116 — I将针对驱动程序124打开适配器的请求发送给硬件102 (图I)。该请求被虚拟服务客户端108 - I截取。如在204所示,虚拟服务客户端108 — I向虚拟服务提供者110发送请求分配覆盖(overlay)的请求。例如,分配覆盖将向虚拟机104 — I提供到真实存储器中的偏移量以便将虚拟存储器映射到真实存储器。在204,预分配客机地址,虚拟服务提供者110可将主机地址映射到该客机地址。另外,如在206所示,虚拟服务客户端108 - I将打开该适配器的请求发送给虚拟服务提供者110。如在208所示,虚拟服务提供者将打开该适配器的请求传递给IHV (独立硬件厂商)驱动程序124。如在210所示,驱动程序124将硬件资源映射到存储器并且尤其是主机地址。在212,驱动程序124向虚拟服务提供者110提供对打开适配器的请求的确认。在214,虚拟服务提供者110创建覆盖映射。该覆盖映射对真实存储器和虚拟机存储器进行映射。在210示出了将硬件资源映射到由在110所示的虚拟服务客户端所分配的覆盖。具体而言,主机地址被映射到客机地址。主机112控制所有存储器122,但是将存储器122的一部分分配给虚拟机104。虚拟服务提供者110可以使用VMBus (虚拟机总线)126与虚拟服务消费者108通信。因此,在所示的示例中,虚拟服务提供者110可以创建虚拟机存储器地址空间与物理存储器122 (和/或设备寄存器空间)之间的映射,并且使用图I所示的VMBus 126将其传递给虚拟机。在此返回到图2,在216,将打开适配器确认从虚拟服务提供者110发送给虚拟服务消费者108 - I。虚拟服务消费者108 - I现在也设置到应用的地址空间的合适映射覆盖。具体而言,在220,将客机地址映射到应用的地址空间。在222,将打开适配器确认返回给应用116 — I。此时,应用116 — I能够与硬件102通信,而不需要该通信首先经过主机112。更确切而言,驱动程序118 - I可以使用虚拟机104 - I的存储器映射通过直接与物理存储器通信来直接与硬件102通信。现参考图3,示出了将资源从应用映射到硬件的示例。在302,应用116 — I向驱动程序124发送对存储器进行注册以供与该应用一起使用的请求。注册存储器的请求被虚拟服务消费者108 - I截取。如在304所示,虚拟服务消费者108 — I为应用116 — I钉住(pin)虚拟机中的存储器。·在306,虚拟服务客户端向虚拟服务提供者110发送指示为该应用映射该存储器的缓冲区的消息。另外,如在308所示,虚拟服务客户端108 - I将注册存储器的请求转发给虚拟服务提供者110。如在310所示,虚拟服务提供者将注册存储器转发给驱动程序124。在312,驱动程序312确认注册存储器的请求。在314,虚拟服务提供者110将所述确认转发给虚拟服务消费者108 — I。在316,虚拟服务消费者将所述确认转发给应用116 — I。尽管上面的示例示出了使用RDMA硬件的虚拟化,但是类似的API虚拟化可以应用于其他技术。例如,一些实施例可以虚拟化在高性能计算应用中用作浮点协同处理器的通用图形处理单元(GPGPU)以使GPGPU资源对运行在虚拟化环境中的应用可用,而不需要硬件修改。具体而言,用于GPGPU计算的输入和输出缓冲区被映射到真实存储器,使得GPU可以访问该存储器并利用其操作。这实质上还通过提供近似本机的性能在API层将GPGPU虚拟化,而主机处于对硬件及其设备的策略设定的完全控制。GPGPU感知的应用通常加载用于它们希望执行的数学运算的程序逻辑(GPU特有的编码)、以及被执行这些运算的数据。API通常用于执行这些运算,并且这些API可以在一些实施例中通过缓冲区映射来虚拟化,从而允许主机中的GPGPU对用户指定的数据执行用户指定的程序逻辑。以下讨论现涉及可以执行的多种方法以及方法动作。虽然用特定次序讨论或用以特定次序发生的流程图示出了各个方法动作,但除非明确规定否则不需要特定次序,或因为一动作依赖于另一动作在执行该动作之前完成而需要特定次序。现在参考图4,示出了方法400。方法400可以在计算环境中实施,并包括向虚拟机提供对硬件的直接访问的动作。这可以进行,以用于在较高API级、而不是设备级进行虚拟化。这可以简化策略实施,同时提供近似本机的性能。方法400包括确定虚拟机应当具有对某件硬件的访问(动作402)。方法400还包括虚拟机请求访问来自主机的硬件,其中主机是控制计算系统的物理硬件并管理虚拟机的特殊分区(动作404)。
方法400包括该主机将该硬件配置为通过该主机将硬件资源映射到虚拟机的地址空间来允许由该虚拟机直接访问该硬件(动作406 )。方法400还包括一旦该硬件已经被该主机配置,该虚拟机就直接访问该硬件,而不经过该主机(动作408)。方法400可以被实施为将硬件资源映射到虚拟机的地址空间包括映射到运行在该虚拟机上的应用的地址空间。该上下文中的应用可以包括运行在虚拟机中的用户模式中的一个或多个传统应用。可替代或附加地,该上下文中的应用可以包括运行在虚拟机中的一个或多个内核模式驱动程序。方法400可以被实施为确定虚拟机应当具有对一件硬件的访问包括该主机基于该主机控制的策略来允许访问。 在某个实施例中,将该硬件配置为允许访问是基于主机应用策略的。例如,该策略可以包括服务质量规则。可替代或附加地,该策略可以包括访问检查。可替代或附加地,该策略可以实施分区。由于主机仍然对硬件具有完全访问,因此其可以规定什么服务的策略被提供给虚拟机。其可以以比实例SR — IOV精细得多的粒度进行服务质量、访问检查、带宽控制、分区。从联网角度而言,各实施例可以允许主机过滤连接请求以防止虚拟机获得对它们不应具有访问的其他机器的访问。通过在连接建立时间过滤访问,保留了完全的I/o性能,而不需要实际的网络分区(VLAN等等)或者网络通信量过滤。同样,该主机可以独立于虚拟机参与来实施特定的网络通信量优先级。此外,各种方法可由包括一个或多个处理器和诸如计算机存储器等计算机可读介质的计算机系统来实施。具体而言,计算机存储器可存储计算机可执行指令,这些指令在由一个或多个处理器执行时使得诸如各实施例中所述的各个动作等各种功能被执行。本发明的各实施例可以包括或利用包含计算机硬件的专用或通用计算机,这将在下文中更详细地讨论。本发明范围内的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种显著不同的计算机可读介质物理计算机可读存储介质和传输计算机可读介质。物理计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储(如CD、DVD
等)、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的网络和/或数据链路。以上介质的组合也被包括在计算机可读介质的范围内。此外,在到达各种计算机系统组件时,以计算机可执行的指令或数据结构的形式存在的程序代码装置可以自动地从传输计算机可读介质传输到物理计算机可读存储介质(或者反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传送到计算机系统RAM和/或计算机系统处的较不易失性的计算机可读物理存储介质。因此,计算机可读物理存储介质可被包括在同样(或甚至主要)利用传输介质的计算机系统组件中。计算机可执行指令包括,例如使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可在其中通过 网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备二者中。本发明可具体化为其他具体形式而不背离其精神或特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变被权利要求书的范围所涵盖。
权利要求
1.一种在计算环境中用于向虚拟机提供对硬件的直接访问的方法,该方法包括 确定虚拟机(104 - I)应当具有对一件硬件(102)的访问(402); 虚拟机(104 - I)请求访问来自主机(112)的硬件(102),其中主机(112)是控制计算系统的物理硬件并管理虚拟机(104)的特殊分区(404); 主机(112)将硬件(102)配置为通过所述主机将硬件资源映射到所述虚拟机的地址空间来允许由虚拟机(104 - I)直接访问硬件(102) (406);以及 一旦硬件(102)已经被主机(408)配置,虚拟机(104 - I)就直接访问所述硬件,而不经过主机(112) (408)。
2.如权利要求I所述的方法,其特征在于,将硬件资源映射到所述虚拟机的地址空间包括映射到在所述虚拟机上运行的应用的地址空间。
3.如权利要求I所述的方法,其特征在于,确定虚拟机应当具有对一件硬件的访问包括所述主机基于所述主机控制的策略来允许访问。
4.如权利要求I所述的方法,其特征在于,将所述硬件配置为允许访问是基于所述主机应用策略的。
5.如权利要求4所述的方法,其特征在于,所述策略包括服务质量规则。
6.如权利要求4所述的方法,其特征在于,所述策略包括访问检查。
7.如权利要求4所述的方法,其特征在于,所述策略实施分区。
8.—种包括计算机可执行指令的计算机可读介质,所述计算机可读指令在被一个或多个处理器执行时使得以下动作被执行 确定虚拟机(104 - I)应当具有对一件硬件(102)的访问(402); 虚拟机(104 - I)请求访问来自主机(112)的硬件(102),其中主机(112)是控制计算系统的物理硬件(102)并管理虚拟机的特殊分区(404); 主机(112)将硬件(102)配置为通过所述主机(112)将硬件(102)资源映射到所述虚拟机的地址空间来允许由虚拟机(104 - I)直接访问硬件(102) (406);以及 一旦硬件(102)已经被主机(112)配置,虚拟机(104 - I)就直接访问硬件(102),而不经过主机(I 12) (408)。
9.如权利要求8所述的计算机可读介质,其特征在于,将硬件资源映射到所述虚拟机的地址空间包括映射到在所述虚拟机上运行的应用的地址空间。
10.如权利要求8所述的计算机可读介质,其特征在于,确定虚拟机应当具有对一件硬件的访问包括所述主机基于所述主机控制的策略来允许访问。
11.如权利要求8所述的计算机可读介质,其特征在于,将所述硬件配置为允许访问是基于所述主机应用策略的。
12.如权利要求11所述的计算机可读介质,其特征在于,所述策略包括服务质量规则。
13.如权利要求11所述的计算机可读介质,其特征在于,所述策略包括访问检查。
14.如权利要求11所述的计算机可读介质,其特征在于,所述策略实施分区。
15.一种计算机系统,该计算系统包括 一个或多个处理器; 耦合到所述一个或多个处理器的计算机可读存储器,其中所述计算机可读存储器包括可执行指令,所述计算机可执行指令在被所述一个或多个处理器执行时致使下面动作被执行 确定虚拟机(104 - I)被允许具有对一件硬件(102)的访问; 虚拟机(104 - I)请求访问来自主机(112)的硬件(102),其中主机(112)是控制计算系统的物理硬件(102)并管理虚拟机的特殊分区; 主机(112)将硬件(102)配置为通过所述主机(112)将硬件资源映射到所述虚拟机的物理地址空间来允许由虚拟机(104 - I)直接访问硬件(102);以及 一旦硬件(102)已经被主机(112)配置,虚拟机(104 - I)就直接访问硬件(102),而不经过主机(I 12)。
全文摘要
本发明涉及虚拟化环境中的应用加速。在此所示的一个实施例包括可以在计算环境中实施的方法。该方法包括向虚拟机提供对硬件的直接访问的动作。该方法包括确定虚拟机应当具有对某件硬件的访问。方法还包括虚拟机请求访问来自主机的硬件,其中主机是控制计算系统的物理硬件并管理虚拟机的特殊分区。该方法还包括该主机将该硬件配置为通过该主机将硬件资源映射到虚拟机的地址空间来允许由该虚拟机直接访问该硬件。该方法还包括一旦该硬件已经被该主机配置,该虚拟机就直接访问该硬件,而不经过该主机。
文档编号G06F13/14GK102915285SQ201210339548
公开日2013年2月6日 申请日期2012年9月13日 优先权日2011年9月14日
发明者F·S·蒂利耶, T·法里希 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1