用于虚拟化操作系统的直接存储器访问过滤器的制作方法

文档序号:6594087阅读:123来源:国知局
专利名称:用于虚拟化操作系统的直接存储器访问过滤器的制作方法
用于虚拟化操作系统的直接存储器访问过滤器背景计算机产业倾向于越来越多的硬件级虚拟化。在这些环境中,操作系统运行在虚 拟机监视器或管理程序之上,其中与计算机硬件的交互由虚拟化层来仲裁。这允许另外称 为来宾操作系统或来宾OS的多个虚拟化操作系统运行在单个计算机上,使得可能在相同 及其上运行多个工作负荷,且在它们之间具有强的隔离。这对与IT部门或者要求运行多个 工作负荷或多个服务器应用程序的任何操作来说尤其有益。然而,每当所隔离的操作系统 与计算机硬件交互以使得虚拟化层必须介入来维护隔离时,虚拟化层引入大的性能惩罚。 为解决此性能惩罚,传统的方法通过允许来宾操作系统直接控制硬件设备来减少了虚拟化 层必须介入的交互的数量。然而,准许来宾操作系统直接控制这些硬件设备总是要求准许 来宾操作系统对被分配给该来宾操作系统的所有系统存储器的自由且独占的控制。通过向 来宾操作系统准许独占存储器访问,丧失了虚拟化的许多益处,这些益处包括状态封装、迁 移和检查点。概述此文献描述通过允许来宾OS访问物理硬件设备以执行直接存储器存取(DMA)传 输,同时允许过量使用(overcommit)被分配给来宾OS的系统存储器来提高在管理程序上 执行的来宾操作系统(来宾OS)的运行时性能的技术。在一种实现中,虚拟化知晓的DMA 过滤器驱动器被插入到非虚拟化知晓的操作系统的I/O驱动器堆栈,从而得到受启发或半 虚拟化OS。响应于应用程序对利用硬件设备进行DMA传输的请求,DMA过滤器驱动器可以 延迟所请求的传输的开始,直到知晓该传输的目标来宾物理存储器被提交(commit)。在一 种实现中,过滤器驱动器利用高速缓存来跟踪来宾物理存储器的哪些页被提交而不调用管 理程序。在一种实现中,如果过滤器驱动器从高速缓存得知目标来宾物理存储器页被提交, 那么,过滤器驱动器允许所请求的传输立即开始。然而,如果过滤器驱动器从高速缓存得知 目标来宾物理存储器页中的至少之一未被提交,那么,过滤器驱动器可以请求管理程序支 持所有未提交的目标来宾物理存储器页。在接收到所有目标来宾物理存储器页都被提交的 指示之后,DMA过滤器驱动器可以允许所请求的传输开始。在一种实现中,高速缓存另外包括与来宾物理存储器的每一页相关联的引用计数 器。在一种实现中,在DMA传输开始之前,过滤器驱动器增大与在传输期间将潜在地被访问 的来宾物理存储器的每一页相关联的引用计数器。如果来宾物理存储器页的引用计数器包 括正整数,则管理程序知道挪用该页以供由另一工作负荷使用可能对供体工作负荷以及系 统整体来说是灾难性的。然而,如果来宾物理存储器页的引用计数器为零,则管理程序可以 安全地挪用页以供由另一工作负荷使用。在一种实现中,一旦传输已经完成,过滤器驱动器 就可减小与传输相关联的每一页的引用计数。在一种实现中,来宾OS可能是不可信的,且不能对来自管理程序的请求作出响应 会导致制裁来宾0S。在一种实现中,管理程序可以请求过滤器驱动器重置高速缓存的所有 引用计数器。如果工作负荷不能及时地响应管理程序的请求,则管理程序可以终止该工作 负荷。
内容的简要描述参考附图描述详细描述。附图中,附图标记最左边的数字标识其中该附图标记首 次出现的图。在不同的图中使用相同的附图标记指示相似的或相同的项。

图1描绘被插入到来宾操作系统的I/O驱动器堆栈的说明性的虚拟化知晓的过滤 器驱动器。图2描绘接收来自应用程序的DMA传输请求并将该请求高速缓存在等待列表的说 明性的虚拟化知晓的过滤器驱动器。图3描绘用于在工作负荷之间共享系统存储器的说明性系统。图4描绘说明性高速缓存,该高速缓存的每一元件都被映射到存储器的页。图5描绘包括多个驱动器堆栈的来宾操作系统,每一驱动器堆栈都利用单个相同 高速缓存。图6描绘用于迁移工作负荷的说明性过程。图7描绘用于将虚拟化知晓的软件插入到非虚拟化知晓的操作系统以使得非虚 拟化知晓的操作系统当在虚拟机上被执行时展现与当在物理机上被执行时不同的行为的 说明性过程。图8描绘用于接收存储器地址范围、判断该范围所指向的存储器是否常驻、以及 如果来宾物理存储器不常驻,则请求管理程序在传送存储器地址范围之前使其变得常驻的 说明性过程。图9描绘用于接收对转换存储器地址范围的请求、判断所请求的存储器是否常 驻、以及如果所请求的存储器不常驻,则请求管理程序在将该请求传送给硬件访问层之前 使其变得常驻的说明性过程。图10描绘用于创建虚拟化知晓的过滤器驱动器的说明性处理功能性。详细描述下列的讨论瞄准通过准许来宾OS直接访问物理硬件设备同时允许来宾OS的存储 器被过量使用来提高在管理程序上执行的工作负荷的运行时性能的技术。也被称为主机、 父分区、特许分区、根分区或虚拟机管理器的管理程序是不在来宾OS内的可信监督代码主 体。来宾OS还被称为虚拟化OS或非特许0S,它在由管理程序创建的虚拟机上执行。工 作负荷可以包括在来宾OS上执行的应用程序;或者替代地,工作负荷可以是指整个软件堆 栈,包括在虚拟机上执行的来宾Os。管理程序可以控制被包含在管理程序在其上执行的物 理机内的物理系统存储器。这一真实的物理存储器可以被定义为“系统物理存储器”。当在 虚拟机上执行的来宾OS实际上可访问虚拟机的虚拟化存储器时,该来宾OS可能认为它可 访问真实的物理存储器。此“虚拟化”存储器被定义为“来宾物理存储器”。管理程序提供 将来宾物理存储器映射到系统物理存储器的间接水平。另外,来宾OS可以包括向在来宾OS 上执行的应用程序呈现虚拟地址空间的存储器虚拟化系统。此传统的虚拟化可以独立于管 理程序将系统物理存储器虚拟化成来宾物理存储器。在服务器环境中,在服务器上执行的典型工作负荷利用主机计算机的资源的 15-20%。服务器计算机配置有此附加处理顶部空间,以便以最小停机时间或没有停机时间 来有效地应对服务器的负载中的尖峰。而且,对于在单台机器上执行仅一个服务器应用程 序来说,这是常见的,因为服务器应用程序常常消耗机器上所有可用资源,其另外不能与在相同的机器上的其他服务器应用程序平稳地运行。在单个服务器上执行多个来宾OS的一 种潜在益处是能够执行多个服务器应用程序的能力,每个服务器应用程序都具有其自己的 来宾0S,尽管在工作负荷之间共享系统资源。虚拟化允许共享虚拟机系统中的系统资源,例如从一个工作负荷挪用存储器页以 供由另一工作负荷使用。在一种实现中,管理程序可以挪用来自一个来宾OS的存储器页并 将它们给予另一来宾0S,且同时地允许来宾OS用DMA传输瞄准系统物理存储器。允许来宾 OS用DMA传输瞄准系统物理存储器可以改善总体系统性能。当一个来宾OS急需存储器而 另一来宾OS具有额外的存储器时,将存储器从一个来宾OS移动到另一来宾OS是有益的, 这允许管理程序将存储器有效地分配给每一来宾OS。先前,准许来宾OS直接访问系统物理 存储器以得到DMA传输阻碍了管理程序在来宾OS之间安全地共享存储器的能力,这是因为 从来宾OS下面移出供DMA传输在随后访问的存储器可能导致灾难性的系统崩溃。在一种实现中,使得管理程序在来宾OS用DMA传输瞄准系统物理存储器时能够在 来宾OS之间共享存储器允许在来宾OS用DMA传输瞄准系统物理存储器时进行状态封装。 来宾OS的状态封装包括将来宾OS与到来宾OS在其上执行的物理硬件的任何永久连接隔 离开来。因而,状态封装允许虚拟机被从一个主机传递到另一主机,因为来宾OS并不必定 被绑定到该来宾OS在其上执行的硬件。从一个主机到另一主机的这种传递被称为迁移。迁 移允许执行在第一机器上执行的第一管理程序将整个虚拟机传递到在第二机器上执行的 第二管理程序,同时虚拟机继续运行且很少或不会损失数据。在一种实现中,允许迁移而同 时允许来宾OS在DMA传输期间瞄准系统物理存储器。另外,状态封装允许创建快照(或检 查点)。快照保存虚拟机的完整状态,从而允许用户无缝地且不会损失数据地回复到先前的 状态。传统上,管理程序允许在它们上运行的虚拟机内完成的大多数计算继续进而不会 中断。然而,当在这些虚拟机上执行的来宾OS尝试与计算机的I/O系统(盘、网络、视频、 等等)交互时,传统的管理程序必须截取此访问,因为这些操作系统并不实际上拥有这些 设备。如果来宾OS被许可为直接地操作这些设备,则各个来宾OS将对这些设备发出冲突 的命令,从而引起计算机崩溃。为了防止崩溃,每当来宾OS尝试与I/O子系统交互时,传统的管理程序可以截取 该调用并执行与来宾OS正试图完成的动作相当的一些动作。例如,如果来宾OS正试图规划 盘控制器以从盘读取数据块,则传统的管理程序可能停止来宾0S,从含有虚拟盘的内容的 文件读取数据块,将来自文件的数据存储到由来宾OS占用的存储器,并重新启动来宾OS。 此过程有用,但是很慢。允许虚拟化操作系统或者其他工作负荷直接控制机器内的具体设备的所有或部 分,以使得可以发生对那些设备的访问而不会从管理程序中断,从而获得虚拟化OS的大的 性能提升——这将是有益的。理想地,虚拟化OS可以直接控制硬件设备,而不会牺牲过量 使用存储器的能力。在一个实例中,当多于系统物理存储器的来宾物理存储器已经被分配 给工作负荷时,存储器被过量使用。当管理程序创建环境以供来宾OS在其中运行时,其创建存储器的视图,该存储器 的视图对工作负荷来说看起来就像其拥有连续范围的物理存储器——类似于来宾OS正运 行在物理机上可用的那些。事实上,被指派给来宾OS的存储器几乎从不是毗邻的,且来宾OS用于寻址其存储器的地址几乎从不是该存储器的真实物理地址。管理程序创建和维护 允许处理器或管理程序在进行中安排这些地址的间接表(通常被称为页表)。甚至可能的 是,来宾OS察觉到其拥有的存储器中的一些并不存在,且暂时被借给另一来宾OS。当来宾 OS直接控制真实物理I/O设备时,这产生了问题。来宾OS可以指导该设备从实际上并不存 在的存储器读取或向其写入。它还可以指导该设备使用存储器的虚拟化地址而不是真实系 统物理地址来从存储器读取或向其写入。通过I/O设备直接地从存储器读取或向其写入的 这一过程被称为直接存储器访问或DMA。针对此问题——常常被称为“I/O页出错”——的一种所建议的解决方案涉及允 许来宾OS指导设备以执行DMA传输。一旦设备开始DMA传输,计算机的存储器控制器就截 取该过程并指导管理程序重新分配其资源以使得系统物理存储器在设备正试图访问的地 址处可用。然后,当存储器可用时,且当适当的内容已经被加载到存储器时,允许传输继续 进行。此解决方案可以不涉及改变来宾OS内的软件。然而,此解决方案要求设备容忍自设 备发起事务起到允许该事务继续进行的几乎不受限制时间量。此延时是不受限制的,因为 管理程序在传输已经开始之后知晓该传输,且因此当硬件设备继续接收或传送数据时发生 确保实际的物理存储器可用于该传输的任何处理(包括从交换文件读取)。在此时间期间, 目标硬件设备必须将所有所传送的数据存储在其内部缓冲器中。此等待时间可以通过在设 备中构建非常大的缓冲器来处理,由此显著地增加设备的成本。替代地,如果硬件设备在传输开始之前中断在管理程序内运行的设备驱动器,则 可以减少此等待时间。一旦被中断,管理程序内的设备驱动器就确保目标存储器被提交。然 而,由于调用管理程序是昂贵的操作,因此此中断本身就是性能问题。在一种实现中,软件组件被插入到来宾OS中,以便在I/O事务开始前在软件层挂 起该事务,以保证该事务瞄准的来宾物理存储器得到实际的物理存储器支持。挂起事务以 便保证目标来宾物理存储器被提交使得事务能发生而没有中断,这消除了 I/O页出错方法 所引起的任意等待时间。在事务开始前在软件层挂起事务可以允许受启发的来宾OS确保 目标来宾物理存储器得到支持而无需与管理程序通信。然而,在一种实现中,来宾OS可以 与管理程序通信,从而向管理程序告知目标来宾物理存储器页现在正被用于DMA传输。此 通信可以利用来宾OS引用计数表,或与来宾OS进行更显式的通信。图1描绘说明性虚拟机环境100,虚拟机环境100可以在计算机上执行。该环境 包括直接地在计算机执行的管理程序102。在一种实现中,计算机可以是具有运行多个工 作负荷所必需的资源的服务器计算机,每一工作负荷均在其自己的来宾OS实例上执行。在 另一环境中,计算机可以是允许用户同时运行多个操作系统的个人计算机,例如台式计算 机或膝上型计算机。在一种实现中,管理程序含有管理程序I/O子系统104。管理程序I/O 子系统104可以控制计算机上的所有硬件资源,从而确保多个来宾操作系统不向实际的硬 件设备发出冲突的命令。管理程序I/O子系统104可以包括用于分配和控制被分配给虚拟 机的虚拟资源的来宾OS存储器管理组件106。管理程序102、管理程序I/O子系统104和来宾OS存储器管理组件106可以共同 创建来宾操作系统108或来宾OS 108在其上执行的虚拟机。在一种实现中,来宾OS 108 可以是受启发的,这意味着它知晓的其是正运行在虚拟机之上或运行在物理机之上。当在 与物理机不同的虚拟机上执行时,基于关于虚拟化资源和物理资源做出的不同假设,受启发的来宾OS可以不同地利用资源。另外,受启发的来宾OS可以与管理程序102交互以共 享资源。在一种实现中,受启发的来宾OS可以从管理程序102协作地请求来宾物理存储器 或将来宾物理存储器释放给管理程序102以供由另一来宾OS使用。在另一实现中,来宾OS 108不知晓它正在虚拟机上执行。此“不受启发的”来宾OS 108还被称为非虚拟化知晓的或非协作来宾OS 108,它可以在虚拟机上表现出比受启发的 但其他方面相同的来宾OS更差的性能。不受启发的来宾OS 108可以在虚拟机上与在物理 机上所进行地完全相同地操作。许多操作系统提供用于设备驱动器通常使用的直接存储器访问的软件抽象。此抽 象涉及允许设备驱动器呈现物理地址列表(通常以存储器描述符列表或MDLWBS)并在 返回中接收设备逻辑地址列表(通常以散布/聚集列表的形式)的若干编程接口和对象。物理地址可以是由管理程序用于读或写真实物理存储器的系统物理地址。替代 地,物理地址可以对来宾OS 108表现为真实地址,但是实际上是被称为来宾物理地址的虚 拟化地址。另一方面,设备逻辑地址是由硬件设备用于读或写物理存储器的地址。一旦从 接口返回设备逻辑地址的散布/聚集列表,设备驱动器就可以规划其硬件以实际地实施所 关联的读和写。许多操作系统通过此DMA抽象来允许插件组件以扩展DMA功能性。在一种实现 中,DMA过滤器114可以将其自己插入一过程中,当设备驱动器112需要将物理地址转换为 设备逻辑地址时,藉由该过程设备驱动器112检索指向其调用的函数的指针。在另一种环 境中,虚拟化知晓的硬件抽象层(HAL) 120可以被插入到非虚拟化知晓的来宾OS 108中,从 而引起来宾OS 108展示受启发的行为。另外或替代地,虚拟化知晓的模块可以被插入到 非虚拟化知晓的来宾OS的执行中或替代非虚拟化知晓的来宾OS的任何组件。通过这些方 式,虚拟化知晓的组件可以被插入到非虚拟化知晓的来宾OS 108中,从而引起非虚拟化知 晓的来宾OS 108展示类似于受启发的或虚拟化的来宾OS的行为。在一种实现中,设备驱动器112可以发起DMA传输以将数据写到硬件设备或从硬 件设备读取数据。设备驱动器112可以将请求122发送到即插即用管理器118,请求122包 括在来宾OS的来宾物理地址中定义的存储器范围。在一种实现中,即插即用管理器118可 以向硬件访问层120发送对指向用于将存储器范围从来宾物理地址转换到总线相对地址 的函数的指针的请求124。一旦接收到请求124,虚拟化知晓的硬件访问层120就可以与管 理程序102通信,从而确保与DMA传输关联的存储器在允许传输开始之前被提交。在另一种实现中,DMA过滤器114被插入到I/O驱动器堆栈110中。在一种实现 中,DMA过滤器114可以从即插即用管理器118接收用于在I/O驱动器堆栈110内通信的 I/O请求分组(IRP)。IRP中的一个可以是来自设备驱动器112的对指向用于将来宾物理存 储器地址范围转换为总线相对地址范围的函数的指针的请求126。在一种实现中,I/O请求 包被发送以查找I/O驱动器堆栈110中的最好组件以提供用于DMA服务的接口。如果I/O 驱动器堆栈110中没有驱动器作出响应,那么HAL 120可以提供所请求的接口。一旦接收 到请求126,虚拟化知晓的DMA过滤器114就可以与管理程序102通信,从而确保与DMA传 输相关联的存储器在允许传输开始之前被提交。消息1 被返回到即插即用管理器118以 允许传输开始。图2描绘在计算机上执行的说明性虚拟机环境200。在一种实现中,DMA过滤器114挂起所请求的DMA传输以便确保提交事务所需的存储器。所请求的DMA传输包括存储 器地址范围。虽然这些存储器地址对来宾0S108看来似乎为物理存储器地址,且因此立即 可用于DMA传输,但是这些地址可以实际上是来宾物理存储器地址,一种虚拟存储器地址 的形式,其不映射到实际的物理存储器地址。另外,这些来宾物理存储器地址中的一些当前 不可以被映射到真实物理存储器地址,因为管理程序102已经挪用实际的存储器物理页中 的一些来供另一个来宾OS使用。在DMA事务可以在来宾OS 108安全地发生而管理程序 102不会介入之前,必须提交事务引用的存储器以供用在事务的生命期中,且由事务引用的 存储器地址在来宾物理地址空间和系统物理地址空间之间必须具有有效转换。在一种实现 中,DMA过滤器114可与来宾OS存储器管理组件106通信以确保由事务引用的所有存储器 页被提交。在一种实现中,DMA过滤器114可以与来宾OS存储器管理组件106通信以请求 来宾OS存储器管理组件106提交由事务引用的所有的未被提交的存储器页。在一种实现中,事务在应用程序202开始(举例来说,从盘读取)并被往下传递到 将处理该事务的硬件设备的设备驱动器112。然后,设备驱动器112使用其DMA界面来请求 由事务引用的目的存储器的设备逻辑地址。DMA过滤器114可以截取对设备逻辑地址的此 请求并将事务放到等待列表204上,直到所引用的存储器已经被提交且存在有效转换。然 后,DMA过滤器114可以将事务连同所得到的逻辑地址集呈现回设备驱动器112,设备驱动 器112然后可以安排硬件通过DMA进行数据传输。图3描绘共享在计算机上执行的环境300的说明性来宾物理存储器。在一种实现 中,工作负荷302、工作负荷304和工作负荷306全部在管理程序上执行,且每一个工作负荷 可以被分配到系统物理存储器308的一部分。工作负荷302-306可以执行数据库、电子邮件 服务器、web服务器或OLAP服务器连同其他服务器任务。工作负荷302可以使用来宾物理 存储器310,来宾物理存储器310可以被映射到系统物理存储器308。工作负荷304和306 类似地可以使用来宾物理存储器312和314,来宾物理存储器312和314的每一个都被映射 到系统物理存储器308。工作负荷302的来宾物理存储器310的每一个页可以被映射到系 统物理存储器308中的存储器页。然而,对于管理程序而言从工作负荷302窃走来宾物理 存储器页并将其供应为工作负荷304的页是可能的。由此,两个工作负荷可能指向系统物 理存储器的相同部分,如由重叠316所指示的,或一个工作负荷可能执行,如同其拥有实际 上已经被挪用以供另一个工作负荷使用的系统物理存储器页那样。在这种情况中,工作负 荷302和304正在其上执行的来宾操作系统被过量使用,因为管理程序的来宾OS存储器管 理组件已经将比在系统物理存储器308中实际上可用的来宾物理存储器更多的来宾物理 存储器分配到工作负荷。如果工作负荷302尝试访问重叠316中包含的来宾物理存储器, 那么管理程序可能介入并向工作负荷302供应新的系统物理存储器页,且任选地从交换文 件将值复制到新的存储器页。图4描绘说明性驱动器堆栈400。在一种实现中,确保存储器的目的页被提交的 过程涉及将消息发送到来宾OS存储器管理器106和接收响应消息。在另一种实现,通过引 入用于减少或消除DMA过滤器114必须与管理程序102通信的次数的存储器状态高速缓存 402,可以增大响应性。存储器状态高速缓存402可以存储指示系统物理存储器308的哪个 存储器页被提交的数组。存储器状态高速缓存402可以被存储在DMA过滤器114中,使得 其可以在来宾OS 108的上下文中被完全访问,而不用调用管理程序102。对于存储器的每
9一页,存储器状态高速缓存402可以包括4位。类似地设想其他数目个位。在一种实施例 中,一位可以用于指示页是否被提交,而剩余的3位可以计数与该存储器页相关联的活动 DMA传输的数量。替代地或另外,当计数已经溢出存储器状态高速缓存的计数容量时,存储 器状态高速缓存402可以包括存储与存储器页相关联的活动DMA传输的数量的页散列表。 此系统允许存储器状态高速缓存402跟踪高达7个并发DMA事务。举例来说,存储器状态 高速缓存条目404指示相关联的存储器页涉及7个DMA事务,且页当前是常驻的。存储器 状态高速缓存条目406指示相关联的存储器页不涉及任何DMA事务,且当前不被提交到真 实的物理存储器页。通过不被提交,尝试写到与状态高速缓存条目406相关联的存储器页 或从其读取的任何DMA事务将导致数据的讹误或崩溃,因为该值可以被写到被指派到另一 工作负荷的存储器,或被写到根本不存在的存储器。跟踪与存储器页相关联的DMA传输的数量的目的之一是确保管理程序102将不从 当前被DMA事务使用的来宾OS 108窃取页。因此,存储器范围中所包含的当前被DMA事务 使用的所有页至少将保持被提交,直到所有相关联的DMA事务被完成。因此,存储器状态高 速缓存条目408指示错误——三个DMA处理正在相关联的存储器页上操作,但是页当前没 有被提交。因此,在管理程序102从一个工作负荷窃取存储器页并将其给予另一个工作负 荷之前,其可以首先确定嵌入来宾OS 108的虚拟化知晓的组件是否知晓存储器页当前在 使用。如果DMA事务被发起,且与事务相关联的所有存储器页被提交,那么DMA过滤器 114可以增加与关联于DMA事务的存储器页相关联的存储器状态高速缓存条目的引用计数 或引脚计数。然后,DMA过滤器114可以立即允许事务开始。存储器状态高速缓存条目410指示不存在使用相关联的存储器页的活动DMA事 务,但是页当前被提交。如果DMA传输请求使用类似于与存储器状态高速缓存条目410相 关联的那些页的页,那么DMA传输将被允许立即继续直接地访问底层硬件。在一种实现中,管理程序可以请求DMA过滤器114重置存储器状态高速缓存402 的所有引用计数器。另外或替代地,如果工作负荷未能以及时的方式响应管理程序的请求, 那么管理程序可以制裁工作负荷。在一种实现中,制裁可以终止工作负荷。另外或替代地, 制裁可以从工作负荷移除对硬件设备的控制。在一种实现中,存储器状态高速缓存402不存在。在这种情况中,在管理程序回收 任何页之前,设备驱动器必须被暂停且所有事务必须被撤退。此策略在一些情况下是优选 的,因为其大大地降低了实现高速缓存所需的存储器。当大多数或所有的来宾存储器保持被提交时,最优的性能出现,且大多数DMA事 务在不需要与来宾OS存储器管理器通信的情况下开始。图5描绘说明性的多个驱动器堆栈500。在一种实现中,第一驱动器堆栈110、第二 驱动器堆栈504和第三驱动器堆栈506全部共享相同的存储器状态高速缓存502。多个驱 动器堆栈可以实例化DMA过滤器114的不同实例;然而,所有虚拟化知晓的DMA过滤器正管 理相同的来宾物理存储器。因此,所有DMA过滤器在相同的存储器状态高速缓存上操作,以 便减少维持高速缓存所需的开销,并使DMA过滤器114和管理程序之间的通信最小化。例 如,如果驱动器堆栈506发起涉及来宾物理地址0x0012384C的DMA传输,但是不与DMA过 滤器的其他实例共享存储器状态高速缓存502,那么每当管理程序希望从来宾OS挪用来宾物理存储器页时,将不得不检查每一个存储器状态高速缓存以确保DMA传输中活跃地涉及 的存储器页不被挪用。图6描绘说明性迁移环境600。根据此实现,状态封装可以允许在计算机602上运 行的管理程序604被迁移到在计算机606上运行的管理程序608。在一种实施例中,状态 封装可以由管理程序608和来宾OS存储器管理组件106来启用,而同时允许在DMA传输期 间的硬件设备直接存储器存取。在一种环境中,工作负荷610至工作负荷616在管理程序 604上执行。工作负荷612可能需要通过网络622来迁移到管理程序608。通过将存储器 页从管理程序604复制到管理程序608来执行迁移,同时迁移的工作负荷612继续起作用。 迁移以使工作负荷612中的每一页无效为开始,以使得由工作负荷612作出的任何后继存 储器访问将陷入管理程序604中。然后,管理程序604开始将存储器的所有有效页传输到 管理程序608。在此传输期间,工作负荷612继续在管理程序604上执行。在传输期间被访 问的存储器页被标记为脏(dirty)并留在管理程序604上,而不被标记为脏的(指示它们 尚未被触及的)存储器页继续被传递到管理程序608。最终,所有的干净页已经被传输,且 仅仅保留已经被工作负荷612触及的脏页。在这一点上,工作负荷612可以被暂停以允许 将剩余的脏页传递到管理程序608。一旦所有的页已经被传输到管理程序608,通常在工作 负荷612被管理程序604暂停之后不超过300毫秒,工作负荷612就在管理程序608上被 启动。通常,迁移发生而不会丢弃连接。图7描绘用于通过虚拟化知晓的软件组件增强非虚拟化知晓的操作系统的说明 性过程。操作702表示通过安装在I/O驱动器堆栈110中的虚拟化知晓的软件组件来确 定系统是否正在虚拟机上执行。在一种实施例中,虚拟化知晓的软件组件包括DMA过滤器 114。另外地或替代地,虚拟化知晓的软件组件可以包括HAL 120。其间,操作704表示当在 虚拟机上执行时虚拟化知晓的软件组件与管理程序102通信。图8描绘用于以软件方式延迟DMA传输的开始直到知晓与传输相关联的来宾物理 存储器得到系统物理存储器的支持的说明性过程。操作802表示接收来宾物理存储器地址 范围。在一种实现中,来宾物理存储器地址范围包括DMA传输的源或目的地。所接收的来 宾物理存储器地址可以稍后被转换成设备逻辑地址或系统物理地址,这允许在传输中使用 的硬件设备本地地寻址物理存储器。其间,操作804表示确定由所接收的来宾物理存储器 地址指向的系统物理存储器中的任一个是否不被支持——另外称为非常驻的。如果没有地 址是非常驻的,那么意味着所有的请求地址是常驻的,那么传送所接收的来宾物理存储器 地址范围。在一种实施例中,来宾物理地址范围被传送给将来宾物理存储器地址转换成设 备逻辑地址或系统物理地址的组件。其间,操作806表示肯定地确定存在在所接收的来宾 物理存储器地址范围中引用的存储器的至少一个不被支持或非常驻的部分。其间,操作808 表示请求管理程序102支持所接收的来宾物理存储器地址的非常驻部分或使其变为常驻。 其间,操作810表示从管理程序102接收由所接收的来宾物理存储器地址指向的所有非常 驻部分已经得到支持的指示。其间,操作812表示传送来宾物理存储器地址范围。图9描绘用于以软件方式延迟DMA传输的开始直到知晓与传输相关联的来宾物理 存储器得到真实的系统物理存储器的支持的说明性过程。操作902表示接收对将来宾物理 存储器地址范围转换为总线相对存储器地址的请求。其间,操作904表示确定所接收的来 宾物理存储器地址中的任一个是否不被真实的物理存储器支持。如果所有的来宾物理存储器地址都得到支持,那么所接收的请求被传送到HAL 120。其间,操作906表示肯定地确定 何时存在所接收的请求中引用的来宾物理存储器的至少一个不被支持或非常驻的部分。其 间,操作908表示向设备驱动器112传送指示传输不可以同步地发生的消息。在一种实施 例中,所接收的请求被存储在等待列表204中。其间,操作910表示向管理程序102向管理 程序102传送一消息,该消息请求管理程序102支持在所接收的请求中包含的来宾物理存 储器的非常驻部分或使其变为常驻的。其间,操作912表示从管理程序102接收由在所接 收的请求中包含的来宾物理地址指向的所有非常驻部分已经得到真实的物理存储器的支 持的消息。其间,操作914表示将向设备驱动器传送该请求。图10阐释示例性用于创建虚拟化知晓的DMA过滤器驱动器或DMA过滤器114的 示例性处理功能1000。在一个实例中,过滤器驱动器包括被插入到现有驱动器堆栈以执行 一些具体功能而不影响现有驱动器堆栈的正常工作的驱动器。处理功能性1000可以被配 置为能够实现软悬挂分析和检测系统的任何合适的计算设备或服务器。在一种示例性配置 中,处理功能性1000包括至少一个处理单元1002和存储器1004。处理单元1002可以在硬 件、软件、固件或其组合中被适当地实现。处理单元1002的软件或固件实现可以包括以任 何合适的编程语言编写的用以执行所描述的各种功能的计算机可执行指令或机器可执行 指令。存储器1004可以存储在处理器1002上可加载和可执行的指令的程序以及在执行 这些程序期间生成的数据。取决于计算设备的配置和类型,存储器1004可以是易失性的 (例如RAM)和/或非易失性的(例如ROM、闪速存储器等等)。计算设备或服务器还可以包 括附加的可移动存储1006和/或不可移动存储1008,包括但不限于,磁存储、光盘、和/或 带存储。磁盘驱动器和它们的关联计算机可读介质可为计算设备提供对计算机可读指令、 数据结构、程序模块和其他数据的非易失性存储。存储器1004、可移动存储1006和不可移动存储1008全部都是计算机存储介质的 示例。计算机存储介质包括以用于存储信息例如计算机可读指令、数据结构、程序模块或者 其他数据的任何方法或技术实现的易失性介质和非易失性介质、可移动介质和不可移动介 质。存储器1004、可移动存储1006和不可移动存储1008全部都是计算机存储介质的示例。 可以存在的附加类型的计算机存储介质包括但不限于,RAM、ROM、EEPR0M、闪速存储器或者 其他存储器技术、CD-ROM、数字多用盘(DVD)或者其他光学存储、磁带盒、磁带、磁盘存储或 者其他磁存储设备、或可以用来存储所期望的信息且可以由服务器或者其他计算设备访问 的任何其他介质。更详细地转到存储器1004的内容,存储器1004可以包括操作系统1010以及用 于实现软悬挂分析和检测程序100的一个或多个应用程序或服务。在一种实现中,存储器 1004包括数据管理模块1012和自动模块1014。数据管理模块1012包括但不限于标识和 跟踪会话。自动模块1014存储和管理信息,例如会话标识符、会话状态、用户的计算设备等 等,且可以与一个或多个本地和/或远程数据库或服务通信。存储器1004进一步包括用户接口模块1016和会话模块1018。用户接口模块1016 向用户呈现用于登录或注销、登录或注销回话等等的用户接口。会话模块1018包括但不限 于,跟踪计算设备的状态、登录或注销、连接或断开等等。会话模块1018执行连接、断开、搜 索功能,例如执行搜索以标识被登录、注销的客户端设备、客户端设备的状态、用户的状态
12
处理功能性1000还可以含有诸通信连接1016,这些通信连接1016允许处理功能 性1000与所存储的数据库、另一计算设备或服务器、用户终端和/或网络上的其他设备通 信。诸通信连接1016为通信介质的示例。通信介质通常包含计算机可读指令、数据结构和 程序模块。作为例子而非限制,通信介质包括例如有线网络或直接有线连接等有线介质,以 及例如声学、RF、红外等无线介质和其他无线介质。在此所使用的术语计算机可读介质包括 存储介质和通信介质两者。处理功能性1000还可以包括诸输入设备1018和诸输出设备1020,输入设备1018 例如键盘、鼠标、笔、音频输入设备、触摸输入设备等等,输出设备1020例如显示器、扬声 器、打印机等等。处理功能性1000可以包括主存在处理功能性1000上的数据库,其包括但 不限于,会话数据、网络地址、计算设备的列表等等。所有这些设备在本领域是众所周知的 且在此处不需要详细地讨论。以上所描述的本主题可以在硬件或软件中或在硬件和软件两者中实现。尽管已经 以对于结构特征和/或方法论动作来说专用的语言描述了本主题,但是应理解,在所附权 利要求中界定的本主题并不必定限于上述具体特征或动作。相反,具体的特征和动作是作 为实现所要求保护的本主题的示例性形式而公开的。例如,方法动作并不需要以在此所描 述的次序或组合来执行,且可以以一个或多个动作的任何组合来执行。Mrk尽管已经用对于结构特征和/或方法动作来说专用的语言描述了示例性系统和 方法,但是应理解,在所附权利要求中界定的本主题并不必定限于所描述的具体特征或动 作。相反,具体特征和动作是作为实现所要求保护的方法、设备、系统等等的示例性形式而 公开的。
权利要求
1 一种方法,所述方法包括用安装在非虚拟化知晓的操作系统的驱动器堆栈中的虚拟化知晓的软件组件确定所 述非虚拟化知晓的操作系统是否在由管理程序主存的虚拟机上执行;以及当所述非虚拟化知晓的操作系统在由所述管理程序主存的所述虚拟机上执行时,所述 虚拟化知晓的软件组件与所述管理程序进行通信。
2.如权利要求1所述的方法,其特征在于,所述虚拟化知晓的软件组件包括从所述驱 动器堆栈接收请求的过滤器驱动器。
3.如权利要求1所述的方法,其特征在于,所述驱动器堆栈包括直接存储器访问驱动ο
4.如权利要求1所述的方法,其特征在于,所述虚拟化知晓的软件组件包括将操作系 统对物理硬件组件的访问抽象化的硬件抽象层。
5.一种计算机系统,包括 一个或多个处理器;存储器,所述存储器可由所述一个或多个处理器访问;以及虚拟化知晓的模块,所述虚拟化知晓的模块被存储在所述存储器中,且能在所述一个 或多个处理器上执行,以便接收来宾物理存储器地址范围;确定所述来宾物理存储器地址范围的所述来宾物理存储器地址中的至少之一是否指 向来宾物理存储器的非常驻部分;响应于确定所述来宾物理存储器地址的至少之一指向来宾物理存储器的非常驻部分向管理程序传送对提交来宾物理存储器的所述非常驻部分的请求,以及 从所述管理程序接收指示来宾物理存储器的所述非常驻部分已经被提交的消息; 传送所述来宾物理存储器地址范围。
6.如权利要求5所述的计算机系统,其特征在于,所述虚拟化知晓的模块能进一步执 行,以便接收与所述来宾物理存储器地址范围相关联的存储器传输完成的指示。
7.如权利要求5所述的计算机系统,其特征在于,所述虚拟化知晓的模块包括数据结 构,所述数据结构包括用于来宾物理存储器的每一部分的指示符,每一指示符包括对来宾 物理存储器的部分是常驻还是非常驻的表示。
8.如权利要求7所述的计算机系统,其特征在于,每一指示符进一步包括进行中的存 储器传输的引用计数,所述进行中的存储器传输瞄准包括与所述指示符相关联的来宾物理 存储器的所述部分在内的来宾物理存储器地址范围。
9.如权利要求5所述的计算机系统,其特征在于,所述来宾物理存储器地址范围包括 异步直接存储器访问传输的目标。
10.如权利要求5所述的计算机系统,其特征在于,所述虚拟化知晓的模块是硬件抽象层。
11.如权利要求8所述的计算机系统,其特征在于,在所述管理程序的所述请求时,所 述虚拟化知晓的模块更新与来宾物理存储器的每一部分相关联的所述引用计数。
12.如权利要求7所述的计算机系统,其特征在于,所述虚拟化知晓的模块的多个实例 化访问包括用于来宾物理存储器的每一部分的指示符在内的所述相同的数据结构。
13.如权利要求11所述的计算机系统,其特征在于,所述管理程序被配置成当所述虚 拟化知晓的模块不能更新与来宾物理存储器的每一部分相关联的所述引用计数时制裁与 所述虚拟化知晓的模块相关联的虚拟机。
14.如权利要求所述的计算机系统13,其特征在于,所述制裁包括终止所述虚拟机。
15.如权利要求5所述的计算机系统,其特征在于,所述来宾物理存储器地址范围与用 于传达设备驱动器的请求的输入/输出请求分组相关联。
16.如权利要求5所述的计算机系统,其特征在于,所述虚拟化知晓的模块被配置成被 插入到在由所述管理程序主存的工作负荷中执行的非虚拟化知晓的来宾操作系统,且其中 所述管理程序使得所述非虚拟化知晓的来宾操作系统能够直接控制所述计算机系统的硬 件设备。
17.如权利要求所述的计算机系统16,其特征在于,当所述工作负荷用对所述系统物 理存储器的直接访问来执行DMA传输时,所述工作负荷被迁移到第二计算机系统。
18.—个或多个计算机可读存储介质,所述计算机可读存储介质包括被配置成被安装 在非虚拟化知晓的来宾操作系统上的虚拟化知晓的过滤器驱动器,所述非虚拟化知晓的来 宾操作由虚拟化主计算机机的资源以供由所述非虚拟化知晓的来宾操作系统使用的系统 管理程序来主存,所述虚拟化知晓的过滤器驱动器被配置成当一个或多个处理器上执行时 执行包括下列动作从设备驱动器接收对将来宾物理存储器地址范围转换成总线相对存储器地址范围的 请求;确定由所述来宾物理存储器地址范围指向的存储器的部分是否不是常驻在所述非虚 拟化知晓的来宾操作系统中;当存在由所述来宾物理存储器地址范围指向的所述存储器的非常驻部分时向所述设备驱动器传送指示所请求的传输将不同步地发生的消息,向所述管理程序传送请求将由所述来宾物理存储器地址范围指向的所述存储器的所 有非常驻部分变成常驻的消息,以及从所述管理程序接收指示所述存储器的所述非常驻部分已经变为常驻的消息;以及向所述硬件访问层传送对将所述来宾物理存储器地址范围转换成总线相对存储器地 址范围的所述请求。
19.如权利要求18所述的一个或多个计算机可读存储介质,其特征在于,所述管理程 序准许所述来宾操作系统直接访问主计算机的硬件设备,同时所述管理程序允许过量使用 主计算机系统的系统物理存储器。
20.如权利要求19所述的一个或多个计算机可读存储介质,其特征在于,所述管理程 序创建所述虚拟机的整体状态的快照,所述快照是在所述虚拟机执行时被部分地创建的。
全文摘要
所描述的技术通过在其他非虚拟化知晓的来宾操作系统中执行虚拟化知晓的代码来提高在管理程序上执行的工作负荷的运行时性能。在一种实现中,虚拟化知晓的代码允许工作负荷直接访问物理硬件设备,同时允许过量使用被分配给工作负荷的系统存储器。在一种实现中,DMA过滤器驱动器被插入到I/O驱动器堆栈,以保证在传输开始之前DMA传输的目标来宾物理存储器是常驻的。DMA过滤器驱动器可以利用高速缓存来跟踪存储器的哪些页是常驻的。高速缓存还可以指示存储器的哪些页由一个或多个传输使用,这使得管理程序能够避免在传输过程中挪用存储器页。
文档编号G06F13/28GK102077188SQ200980124869
公开日2011年5月25日 申请日期2009年6月5日 优先权日2008年6月26日
发明者J·奥辛斯 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1