高效嵌套虚拟化.pdf

上传人:1** 文档编号:1033234 上传时间:2018-03-27 格式:PDF 页数:14 大小:493.30KB
返回 下载 相关 举报
摘要
申请专利号:

CN201010617982.0

申请日:

2010.12.21

公开号:

CN102103517A

公开日:

2011.06.22

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/455申请日:20101221|||公开

IPC分类号:

G06F9/455

主分类号:

G06F9/455

申请人:

英特尔公司

发明人:

董耀祖

地址:

美国加利福尼亚州

优先权:

2009.12.22 US 12/644,847

专利代理机构:

上海专利商标事务所有限公司 31100

代理人:

毛力

PDF下载: PDF下载
内容摘要

在本发明的一个实施例中,使嵌套虚拟化环境中的退出和/或进入过程更高效。例如,层0(L0)虚拟机管理器(VMM)可直接仿真层2(L2)客户中断,而不是通过层1(L1)VMM间接地仿真。该直接仿真可通过例如在L1 VMM与L0 VMM之间共享虚拟状态(例如虚拟CPU状态、虚拟设备状态和/或虚拟物理存储器状态)来进行。作为另一示例,L1 VMM信息(例如L2物理到机器地址转换表)可在L1 VMM与L0 VMM之间被共享。

权利要求书

1: 一种方法, 包括 : 使用处理器生成第一虚拟机 (VM), 并将所述第一 VM 存储于耦合至所述处理器的存储 器中 ; 用所述第一 VM 执行客户应用程序 ; 用第一虚拟机监控程序 (VMM) 执行所述第一 VM ; 在嵌套虚拟化环境中用第二 VMM 执行所述第一 VMM ; 以及 用所述第二 VMM 向所述客户直接仿真底层虚拟化设备 ; 其中所述第二 VMM 被包括在比所述第一 VMM 低的虚拟化层中, 且所述虚拟化设备耦合 至所述处理器。
2: 如权利要求 1 所述的方法, 其特征在于, 包括通过绕过所述第一 VMM 用所述第二 VMM 向所述客户直接仿真所述设备。
3: 如权利要求 1 所述的方法, 其特征在于, 包括基于在所述第一和第二 VMM 之间共享与 所述设备相对应的虚拟设备状态信息, 通过绕过所述第一 VMM 用所述第二 VMM 向所述客户 直接仿真所述设备。
4: 如权利要求 1 所述的方法, 其特征在于, 包括 : 基于在所述第一和第二 VMM 之间共享虚拟处理器状态信息, 通过绕过所述第一 VMM 用 所述第二 VMM 向所述客户直接仿真所述设备 ; 以及 将所述虚拟处理器状态信息存储在耦合至所述处理器的存储器部分中。
5: 如权利要求 1 所述的方法, 其特征在于, 包括基于在所述第一和第二 VMM 之间共享与 所述客户有关的虚拟物理存储器状态信息, 通过绕过所述第一 VMM 用所述第二 VMM 向所述 客户直接仿真所述设备。
6: 如权利要求 1 所述的方法, 其特征在于, 包括基于在所述第一和第二 VMM 之间共享与 所述客户有关的地址转换信息, 通过绕过所述第一 VMM 用所述第二 VMM 向所述客户直接仿 真所述设备。
7: 如权利要求 1 所述的方法, 其特征在于, 所述第一和第二 VMM 包括等效的设备模型。
8: 如权利要求 1 所述的方法, 其特征在于, 包括直接仿真与所述客户相对应的半虚拟 化设备驱动程序。
9: 如权利要求 1 所述的方法, 其特征在于, 包括通过绕过所述第一 VMM 从所述客户向所 述第二 VMM 直接发送网络分组信息。
10: 一种物品, 包括存储指令的介质, 所述指令使基于处理器的系统能 : 在第一虚拟机 (VM) 上执行客户应用程序 ; 在第一虚拟机监控程序 (VMM) 上执行所述第一 VM ; 在嵌套虚拟化环境中在第二 VMM 上执行所述第一 VMM ; 以及 用所述第二 VMM 向所述客户直接仿真底层虚拟化实体。
11: 如权利要求 10 所述的物品, 其特征在于, 进一步存储指令, 所述指令使所述系统能 通过绕过所述第一 VMM 用所述第二 VMM 向所述客户直接仿真所述实体。
12: 如权利要求 10 所述的物品, 其特征在于, 进一步存储指令, 所述指令使所述系统能 基于在所述第一和第二 VMM 之间共享与所述实体相对应的虚拟实体状态信息, 通过绕过所 述第一 VMM 用所述第二 VMM 向所述客户直接仿真所述实体。 2
13: 如权利要求 10 所述的物品, 其特征在于, 进一步存储指令, 所述指令使所述系统能 基于在所述第一和第二 VMM 之间共享虚拟处理器状态信息, 通过绕过所述第一 VMM 用所述 第二 VMM 向所述客户直接仿真所述实体。
14: 如权利要求 10 所述的物品, 其特征在于, 进一步存储指令, 所述指令使所述系统能 基于在所述第一和第二 VMM 之间共享与所述客户有关的虚拟存储器状态信息, 通过绕过所 述第一 VMM 用所述第二 VMM 向所述客户直接仿真所述实体。
15: 如权利要求 10 所述的物品, 其特征在于, 所述实体包括虚拟化设备。
16: 一种装置, 包括 : 耦合至存储器的处理器, 用于 : (1) 在存储于所述处理器中的第一虚拟机 (VM) 上执行 客户应用程序 ; (2) 在第一虚拟机监控程序 (VMM) 上执行所述第一 VM ; (3) 在嵌套虚拟化环 境中在第二 VMM 上执行所述第一 VMM ; 以及 (4) 用所述第二 VMM 向所述客户直接仿真底层 虚拟化实体。
17: 如权利要求 16 所述的装置, 其特征在于, 所述处理器用于通过绕过所述第一 VMM 用 所述第二 VMM 向所述客户直接仿真所述实体。
18: 如权利要求 16 所述的装置, 其特征在于, 所述处理器用于基于在所述第一和第二 VMM 之间共享虚拟客户状态信息, 通过绕过所述第一 VMM 用所述第二 VMM 向所述客户直接仿 真所述实体。
19: 如权利要求 16 所述的装置, 其特征在于, 所述处理器用于基于在所述第一和第二 VMM 之间共享虚拟客户处理器状态信息, 通过绕过所述第一 VMM 用所述第二 VMM 向所述客户 直接仿真所述实体。
20: 如权利要求 16 所述的装置, 其特征在于, 所述处理器用于基于在所述第一和第二 VMM 之间共享与所述客户有关的虚拟存储器状态信息, 通过绕过所述第一 VMM 用所述第二 VMM 向所述客户直接仿真所述实体。

说明书


高效嵌套虚拟化

    背景技术 虚拟机系统允许物理机器被分区或共享, 以使该机器的底层硬件呈现为一个或多 个独立工作的虚拟机 (VM)。虚拟机监控程序 (VMM) 可在计算机上运行, 并向其他软件呈现 一个或多个 VM 的抽象。每个 VM 可用作运行其自己的操作系统 (OS) 和 / 或应用程序软件 的自持平台。VM 内的软件执行可统称为客户软件。
     客户软件可期望如同在专用计算机上而不是在 VM 上运行。即, 客户软件可期望控 制各种事件, 并可访问计算机 ( 例如物理机 ) 上的硬件资源。该物理机器的硬件资源可包 括一个或多个处理器、 驻留在该处理器上的资源 ( 例如控制寄存器、 高速缓存以及其他 )、 存储器 ( 以及诸如描述符表的驻留在存储器内的结构 ) 以及驻留在物理机中的其他资源 ( 例如输入—输出 (I/O) 设备 )。这些事件例如可包括中断、 异常、 平台事件 ( 例如初始化 (INIT) 或系统管理中断 (SMI)) 等。
     VMM 可按需使客户软件状态信息 ( 状态 ) 换入 / 出或传入 / 出物理机的处理器、 设 备、 存储器、 寄存器等。处理器可在 VM 与 VMM 之间的转换期间换入 / 出一些状态信息。在 一些情况下, VMM 可通过允许对底层物理机的直接访问来增强 VM 的性能。当操作在客户软 件中以非特权模式执行 ( 这将限制对物理机的访问 ) 时, 或当操作将不利用 VMM 希望保持 控制的物理机中的硬件资源时, 上述做法特别合适。VMM 被认为是 VM 的主机。
     例如, 只要客户操作会影响 VMM 或任一个 VM 的正确执行, 则 VMM 重新获得控制。 通 常, 在允许该操作继续进行至底层物理机或代表客户仿真该操作和 / 或硬件之前, VMM 检查 此类操作以确定是否存在问题。例如, 当客户访问 I/O 设备、 试图改变机器配置 ( 例如通过 改变控制注册值 )、 试图访问存储器的某些区域等等时, VMM 可能需要重新获得控制。
     支持 VM 操作的现有的物理机可利用诸如虚拟机控制结构 (VMCS)、 虚拟机控制块 (VMCB) 等等结构来控制 VM 的执行环境。以 VMCS 为例, VMCS 可被存储于存储器的一个区域 中, 且可例如包含客户状态、 VMM 状态以及表明在客户执行期间 VMM 希望重新获得控制的条 件的控制信息。物理机中的一个或多个处理器可从 VMCS 读取信息以确定 VM 和 VMM 的执行 环境, 并适当地限制客户软件的行为。
     当转换至 VM( 例如进入 ) 或转换出 ( 例如退出 )VM 时, 物理机的一个或多个处理 器可装载或存储机器状态信息。然而, 在例如 VMM 由另一 VMM 主存的嵌套虚拟化环境下, 进 入和退出方案在尝试管理例如状态信息和存储器信息时会变得麻烦和低效。
     附图简述
     根据所附权利要求、 以下一个或多个示例实施例的详细描述以及相应的附图, 本 发明的实施例的特征和优点将变得显而易见, 在附图中 :
     图 1 和 2 示出用于仿真设备的常规嵌套虚拟化环境和方法。
     图 3 包括本发明的一个实施例中的用于高效嵌套虚拟化的方法。
     图 4 包括用于实现本发明各个实施例的系统框图。
     具体实施方式
     在以下描述中, 陈述了多个具体细节。然而, 应当理解的是, 可不通过这些具体细 节来实施本发明的实施例。 未详细示出众所周知的电路、 结构以及技术, 以免混淆对本描述 的理解。对 “一个实施例” 、 “一实施例” 、 “示例实施例 “、 “多个实施例” 等等的引用表明所 描述的实施例可包括特定特征、 结构或特性, 但并非每个实施例都一定包括那些特定特征、 结构或特性。 此外, 某些实施例可具有针对其它实施例所描述的特征中的部分、 全部特征或 不具有那些特征。此外, 如本文所使用的 “第一” 、 “第二” 、 “第三” 等描述了共同的对象, 且 表明所指的是相同对象的不同实例。 此类形容词不旨在表明如此描述的对象必须是按照时 间、 空间、 排序或任何其他方式的给定顺序。
     图 1 包括常规分层嵌套虚拟化环境的示意框图。 例如, 系统 100 包括层 0(L0)115、 层 1(L1)110 以及层 2(L2)105。VM1 190 和 VM2 195 都位于 L0 VMM 130 “上方” 或与 L0 VMM 130 一起执行。VM1 190 包括由客户操作系统 OS1 125 支持的应用程序 APPs1 120。VM2 195“包括” L1VMM 160。因此, 系统 100 是其中例如 L1 VMM 160 位于 L0 VMM 130 上或 “嵌 套” 在 L0 VMM 130 中的嵌套虚拟化环境。L1 VMM 160 与下层 L0VMM 130“一起” 操作。L1 VMM 160“支持” 客户 VM20 196 和客户 VM21197, 客户 VM20 196 和客户 VM21 197 分别运行 OS20 170/Apps20 180 和 OS21 175/Apps21 185。
     L0 VMM 130 可以是例如可利用英特尔的虚拟化技术 (VT)、 AMD 的安全虚拟机等等 的内核虚拟机 (KVM), 因此 VMM 可运行客户操作系统 (OS) 和应用程序。L0 VMM 130 以及本 文中所描述的其他 VMM 可包括管理程序, 该管理程序可具有管理计算机系统上的多个操作 系统 ( 或同一操作系统的多个实例 ) 的软件程序。 该管理程序可管理系统的处理器、 存储器 和其他资源以对每个操作系统所需要或想要的作出分配。管理程序可包括肥管理程序 ( 例 如 VMware ESX), 其包括设备驱动程序、 存储器管理、 OS 等。管理程序还可包括耦合在硬件 与主机 OS( 例如 Linux) 之间的瘦管理程序 ( 例如 KVM)。管理程序可进一步包括具有服务 OS 以及运行在客户软件 ( 例如 Xen+ 域 0) 中的设备驱动程序的混合管理程序。
     在系统 100 中, 虚拟机扩展 (VMX) 引擎被提交给客户 L1 VMM 160, 客户 L1 VMM 160 将创建客户 VM20 196 和 VM21 197。 VM20 196 和 VM21197 可分别由虚拟 VMCSs vVMCS20 165 和 vVMCS21 166 管理。vVMCS20165 和 vVMCS21 166 可分别用诸如 sVMCS20 145 和 sVMCS21 155 的实际 VMCS 来遮蔽。 当执行诸如 VM20 196 或 VM21 197 的 L2 客户时, 每个 sVMCS 145、 155 可被加载为物理 VMCS。
     图 2 示出用于仿真设备的常规嵌套虚拟化环境和方法。图 2 可与例如 Linux 主机 OS 和 KVM 210 一起使用。箭头 1 示出从被 L0 VMM 210( 类似于图 1 的 L0 VMM 130) 俘获的 L2 客户 205( 例如图 1 的 VM20 196、 VM21197) 的 VM 退出。箭头 2 示出 L0 VMM 210 将该 VM 退 出反弹或引导至 L1 客户 215( 类似于图 1 的 L1 VMM 160), 或更具体的 L1 KVM 230 模块。
     箭头 3 通向 L1 VMM 215(L2 客户 205 的父事务 ), L1 VMM 215 使用例如设备模型 220、 与半虚拟化客户设备的前端驱动程序互补的后端驱动程序等中的任一个来仿真诸如 L2 客户 205 的实体 ( 例如客户、 操作、 事件、 设备驱动程序、 设备等 )I/O 行为。设备建模可 帮助系统与各种设备驱动程序通过接口连接。例如, 设备模型可将虚拟化的硬件层 / 接口 从客户 205 转换至底层设备。该仿真类似于正常的单层 ( 非嵌套 ) 特权资源访问进行, 但 通过嵌套虚拟化, I/O 事件 ( 例如请求 ) 首先被 L0 VMM 210 俘获, 然后如果 L1 VMM 215 被配置成接收该事件, 则 L0 VMM210 将该事件反弹至 L1 VMM 215 中。L1 VMM 设备模型 220 可 按照与单层虚拟化时相似的方式为每个客户保持虚拟状态 (vState)225, 且可向 L1 OS 要 求 I/O 事件服务。
     此外, 在嵌套虚拟化中, 例如, I/O 可从 L2 客户 205 被转换至 L1 虚拟主机 I/O 240。 虚拟主机 I/O 240 通过位于 L0 VMM 210 中的另一层设备模型 ( 未在图 2 中示出 ) 来仿真。 该过程可比单层虚拟化慢。因此, 虚拟主机 I/O 240 可以是由 L0 VMM 210 中的设备模型仿 真的设备驱动程序。 虚拟主机 I/O 240 也可以是由 L0 VMM 210 中的后端驱动程序提供服务 的半虚拟化的前端驱动程序。主机 I/O 245 可以是物理 I/O 设备的 I/O 驱动程序。经由箭 头 4 和 5, L1 VMM 215 可将出站的 I/O( 例如网络分组 ) 经由 L0 VMM210 转发给底层硬件。
     然后可从硬件接收入站的 I/O, 然后由 L0 设备模型或后端驱动程序等通过 L0 VMM 210 经由箭头 6 将入站 I/O 路由至 L1 VMM 215 虚拟主机 I/O240, 并经由箭头 7 将入站 I/O 路由至设备模型 220。 在设备模型完成仿真之后, 它可要求 L1 VMM 215 经由 L0 VMM 210 经 由箭头 8 和 9 通知 L2 客户 205 以指示提供 I/O 服务完成。L0 VMM 210 可仿真来自 L1 VMM 215 的虚拟 VM 恢复事件以恢复 L2 客户 205。
     如方法 200 中可见, 由于例如多层嵌套环境固有的特权限制, 使用常规嵌套虚拟 化进程提供 I/O 服务是间接冒险。例如, 利用嵌套虚拟化, L1VMM 215 以去特权化的方式操 作, 从而必须依赖于有特权的 L0 VMM 210 来访问有特权的资源。这是低效的。 以下说明该低效性。 例如, 单层 VMM 中的 I/O 仿真可访问系统有特权的资源许多次 ( 例如访问次数 (“NA” )) 以成功地仿真客户行为。具体而言, 单层 VMM 可访问其 I/O 仿真 通道中的诸如控制寄存器 (CR)、 物理 I/O 寄存器和 / 或 VMCS 寄存器的有特权资源。然而, 在嵌套虚拟化中, 该过程可能是不同的。例如, 在单层虚拟化中仿真 L2 客户 I/O 的 VMM 在 嵌套虚拟化结构中成为 L1 VMM。该 L1 VMM 现在以非特权模式运行。L1VMM 中的每个有特 权的资源访问现在将触发往 L0 VMM 的 VM 退出以便进一步仿真。该触发是对 L2 客户 VM 与 L1 VMM 之间进行的俘获的附加。 因此, 每次访问都存在增加的 “每次访问的周期数 (NC)” 或 “Per_VM_Exit_cost( 每次 VM 退出成本 )” 。因此, L2 客户的 I/O 仿真的附加成本变成 L2NC = NC*NA。相比于单层虚拟化, 这是大的计算开销。当使用 KVM 时, NV 大约可以是 500 个周 期, 且 NA 可约为 25。因此, L2NC = 5,000 周期 / 每次访问 *25 次访问= 125,000 周期的开 销。
     在本发明的一个实施例中, 使嵌套虚拟化环境中的退出和 / 或进入过程更高效。 例如, L0 VMM 可直接仿真 L2 客户 I/O, 而不是通过 L1 VMM 间接仿真。该直接仿真可通过例 如在 L1 VMM 与 L0 VMM 之间共享虚拟客户状态 ( 例如虚拟 CPU 状态、 虚拟设备状态和 / 或 虚拟物理存储器状态 ) 来进行。作为另一示例, L1 VMM 信息 ( 例如以下寻址的 L2 物理到 机器 (“p2m” ) 地址转换表 ) 可在 L1 VMM 与 L0 VMM 之间被共享。
     在本发明的一个实施例中, 例如, 因为同一 VMM 在 L0 和 L1 层上执行, 所以可实现 该效率增益。这种情况可能在例如在第二 KVM 之上运行第一 KVM 的多层 VT( 虚拟化 ) 情况 下出现。在这样的情形下, L0 和 L1 VMM 两者中的设备模型相同, 且因此这些设备模型理解 L0 或 L1 VMM 所使用的虚拟设备状态格式。
     然而, 本发明的实施例不需要将同一 VMM 用于 L0 和 L1 层。本发明的一些实施例 可将不同的 VMM 类型用于 L0 和 L1 层。在此类情况下, L2 客户的虚拟状态信息可被包括在
     L1 VMM 和 L1 VMM 设备模型中, 但仍与 L0 VMM 和 L0 VMM 设备模型一起共享并被 L0 VMM 和 L0 VMM 设备模型理解。
     作为对比, 在常规系统中, L1 VMM 已知的虚拟客户状态不为 L0 VMM 所知或共享 ( 反之亦然 )。缺少共享可能是因为例如 L1 VMM 不知道它是在本机平台还是在虚拟化的平 台上运行。此外, L1 VMM 可能不理解例如 L0 VMM 承认的共享状态的位格式 / 语义。此外, 在常规系统中, L2 客户是 L1 VMM 的客户, 因此 L2 客户不知道 L0 VMM。因此, 对于单层虚拟 化情形, L2 客户退出转向 L1 VMM 而不是 L0 VMM。如关于图 2 所描述的, 在两层虚拟化情况 下, L0 VMM 仍确保 L2 客户 VM 退出转向 L1 VMM。因此, 本发明的一些实施例与常规系统不 同, 因为例如虚拟状态 ( 例如虚拟客户状态 ) 在 L0 与 L1 VMM 之间被共享。因此, L0 VMM 可 仿真例如 L2 客户 I/O, 并避免通常与嵌套虚拟化相关联的一些开销。
     图 3 包括用于高效嵌套虚拟化的方法 300。 为说明目的, 方法 300 被示为处理网络 分组的传输, 但该方法不限于处理此类事件, 且可替代地应用于诸如 I/O 事件 ( 例如接收、 处理和传输网络信息、 磁盘读写、 流输入输出等 ) 的各种事件。此外, 该方法不限于仅对诸 如仿真设备的实体起作用。例如, 本方法的实施例也可对诸如半虚拟化设备驱动程序的实 体起作用。 然而, 在完整陈述图 3 之前, 首先更完整地陈述虚拟化和半虚拟化的环境。虚拟化 环境包括全虚拟化环境以及半虚拟化环境。 在全虚拟化环境中, 每个客户 OS 可如同底层 VM 仅仅是客户 OS 支持的独立物理处理系统地操作。因此, 客户 OS 可预期或希望 VM 根据所支 持的物理处理系统的体系结构规范来工作。作为比较, 在半虚拟化中, 客户 OS 帮助 VMM 提 供虚拟化环境。因此, 客户 OS 可被表征为虚拟化已知。半虚拟化的客户 OS 可能仅能够协 同特定 VMM 操作, 而全虚拟化环境的客户机 OS 可在两种或更多种不同类型的 VMM 上操作。 半虚拟化可按需对客户操作系统的诸如内核的源代码作出改变, 以使它能在特定 VMM 上运 行。
     半虚拟化 I/O( 例如 I/O 事件 ) 可与半虚拟化 OS 内核 ( 经修改 ) 或全虚拟化 OS 内核 ( 未经修改 ) 一起使用或在其中使用。半虚拟化 I/O 可使用客户设备中的前端驱动程 序来与位于 VMM( 例如 L0 VMM) 中的后端驱动程序通信。此外, 半虚拟化可使用共享存储器 来传送批量数据, 以节省俘获和仿真工作, 而全虚拟化 I/O 可能需要遵循由原始仿真设备 提供的语义。
     返回参照图 3, 方法 300 包括 L0 VMM 330 和支持 VM 20 396 的 L1 VMM 360, 所有 这些组合以形成用于诸如例如英特尔 Epro1000(82546EB)NIC 的网络接口卡 (NIC) 的虚拟 化环境。在方法 300 开始之前, L0 VMM330 可创建可运行 L1 VMM 360 的 VM2( 未示出 )。此 外, L0 VMM 330 可能知道 VM2 存储器分配或 L1 客户伪物理地址向层 0 机器地址的转换表 或映射 ( 例如 L1_to_L0_p2m[])。在行 1, L1 VMM 360 可创建被包括在 VM2“之中” 的 L2 客 户 VM20396。L1 VMM 360 可知道 VM20 396 的伪 P2M 映射 ( 即 VM20 396 客户物理地址向 L1 VMM 360 伪物理地址的映射 ( 例如 L2_to_L1_p2m[]))。在行 2 中, L1 VMM 360 可发出请求 ( 例如通过超调用 H0 或其它通信通道 ) 以要求 L0 VMM 330 将 L2 客户物理地址映射至用于 VM 20 396 的 L0 VMM 330 实际物理机器地址表 ( 例如 L2_to_L0_p2m[])。
     在行 3 中, L0 VMM 330 可从行 2 接收该请求。在行 4 中, L0 VMM 330 可使用之前 接收或已知的信息 ( 即 L2_to_L1_p2m[]) 将 VM20 客户物理地址重新映射至 L0 机器地址
     (L2_to_L0_p2m[])。这是通过例如利用 L1 VMM360 或 L1 客户 (VM2) 的 P2M 表 (L1_to_L0_ p2m[]) 来实现的, 因为 L2 客户存储器是 L1 客户 (VM2) 的一部分, 所以这是可能的。例如, 对于给定 L2 客户物理地址 x : L2_to_L0_p2m[x] = L1_to_L0_p2m[L2_to_L1_p2m[x]]。
     在行 5, L1 VMM 360 可启动 VM20 396, 且 VM20 396 的执行可开始。在行 6, VM 20 OS 可开始。在行 7, VM20 396 OS 的执行可实现诸如虚拟 NIC 设备的虚拟设备。
     这可使虚拟 NIC 设备在行 8 初始化。在行 9, L1 VMM 360 可请求与 L0 VMM 330 通信 ( 例如通过超调用 H1 或其它通信通道 ), 以共享 NIC 设备的客户状态 ( 例如 vm20_ vepro1000_state) 和 / 或 CPU 的 客 户 状 态。 客 户 虚 拟 CPU 或 处 理 器 状 态 可 包 括 例 如 vm20-vCPU-state(vm20-vCPU- 状态 ), 其可对应于诸如 VM20 396 的 12_vCR3 的 L2 虚拟控制 寄存器 (CR)CR3。 状态信息可通过例如共享存储器来共享, 在共享存储器处 L1 VMM 和 L0VMM 二者可看到被共享状态并操纵那些状态。
     在行 10, L0 VMM 330 可接收请求 ( 例如超调用 H1), 且在行 11, L0 VMM 330 可将 虚拟 NIC 设备状态重新映射到 L0 VMM 430 内部地址空间中。因此, L0 VMM 430 可能能够 访问虚拟 NIC 和 CPU 状态信息。
     在行 12, VM 20 可通过填充传输缓冲器及其直接存储器存取 (DMA) 控制数据结构 ( 诸如英特尔 82546EB NIC 控制器中的 DMA 描述符环结构 ) 而开始发送分组。L0 VMM 330 现在绕过 L1 VMM 360, 并与 VM 20 396 通过接口直接连接。 在行 13, 如 VM 20 在其本机环境 下操作时将会进行的, 通过对诸如英特尔 82546EB NIC 控制器中的传输描述符尾部 (TDT) 寄存器的专用硬件寄存器编程, VM 20 可通知虚拟 NIC 设备 DMA 描述符填充完成。TDT 寄存 器可以是存储器映射的 I/O(MMIO) 寄存器, 但也可以是例如端口 I/O。L1 VMM 360 可能没 有对 MMIO 地址的直接转换, 该 MMIO 地址直接转换可能允许 L1 VMM 360 通过退出事件 ( 例 如页面错误 (#PF)VM 退出 ) 俘获和仿真客户 MMIO 访问。因此, L0 VMM 330 可能没有仿真 L1 VMM 转换的 MMIO 地址转换。
     在行 14, TDT 寄存器的地址触发 VM 退出 (#PF)。L0 VMM 330 可从 VM 退出信息获 得该 #PF 的线性地址 ( 例如诸如 12_gva 的 MMIO 访问地址 )。在行 15, L0 VMM 330 可走查 或遍历 L2 客户页面表以将 12_gva 转换成其 L2 客户物理地址 ( 例如 12_gpa)。对该 L2 客 户页面表的走查或遍历可从由 L2 客户 CR3( 例如 12_vcr3) 所指向的 L2 客户物理地址开始。
     在行 16, LO VMM 330 可确定 12_gpa 是否是经加速的 I/O( 即 I/O 仿真可绕过 L1 VMM 215)。如果 12_gpa 是经加速的 I/O, 则在行 17, L0 VMM 可基于共享的虚拟 NIC 和 CPU 状态信息 ( 例如 vm20_vepro1000_state 和 vm20-vCPU-state) 执行仿真。在行 18, L0 VMM 330 可取出 L2 虚拟 NIC 设备 DMA 描述符, 并利用 L2_to_L0_p2m 表执行转换, 以将 12 客户 物理地址转换成实际机器物理地址。在行 19, L0 VMM 330 可具有传输有效载荷, 并在 L0 主 机 I/O 中传输该有效载荷。L0 VMM 330 还可更新共享数据中的 vm20_vepro1000_state 和 vm20-vCPU-state。在行 20, L2 客户可恢复。
     因此, L0 VMM 330 可使用 ( 在 L0 VMM 330 与 L1 VMM 360 之间 ) 共享的 L2_to_L0_ p2m 表、 vm20_vepro1000_state 以及 vm20-vCPU-state( 例如 12 vCR3) 来访问虚拟 NIC 设 备 DMA 描述符环和传输缓冲器, 从而将分组直接发送至外部网络, 而不经由 L1 VMM 360 将 分组间接发送至外部网络。在 L0 VMM 300 必须将 L2 客户 I/O 访问传递到 L1 VMM 360 时, 这样做会在 L1 VMM 360 与 L0 VMM 330 之间触发许多 VM 退出 / 进入动作。这些退出 / 进入动作可能导致糟糕的性能。
     在方法 300 的示例中, 分组传输并未触发中断请求 (IRQ)。 然而, 如果 IRQ 已由于例 如传输完成而引发, 则 L1 VMM 360 可被用于虚拟中断注入。然而, 在一个实施例中, 通过共 享诸如例如虚拟高级可编程中断控制器 (APIC) 状态、 I/O APIC 状态、 消息告知中断 (MSI) 状态以及由 L0 VMM330 直接操纵的虚拟 CPU 状态信息的中断控制器状态信息, 可进行进一 步优化以绕过 L1 VMM 对 IRQ 注入的介入。
     方法 300 涉及将设备模型用于分组传输。然而, 本发明的一些实施例可采用可能 与方法 300 并无实质不同的用于接收分组的方法, 因此在此不再赘述。一般而言, 如果 L0 VMM 能决定分组的最终接收者是 L2 客户, 则同一方法可将接收到的分组 ( 在 L0 VMM 330 中 ) 复制到 L2 客户缓冲器中, 并更新虚拟 NIC 设备状态。为此, L1 VMM 330 可与 L0 VMM 共 享其网络配置信息 ( 例如 L2 客户的 IP 地址、 L1 VMM 的过滤信息 )。此外, 发送至不同 L2VM 的分组可到达同一物理 NIC。因此, L0 VMM 中的交换机可基于例如介质访问控制 (MAC) 地 址、 IP 地址等将分组分发至不同的 VM。
     也可将与方法 300 相似的方法与半虚拟化设备驱动程序一起使用。例如, 半虚拟 化网络设备可与全仿真设备相似地操作。然而, 在半虚拟化设备中, L2 客户或前端驱动程 序可以是 VMM 已知的驱动程序。服务 VM( 例如图 2 中的 L1 VMM 215) 可运行后端驱动程序 以提供 L2 请求 I/O 请求而非图 2 中的设备模型 220。该 L0 VMM 可具有理解来自 L1 VMM 后 端驱动程序的共享设备状态并直接提供 L2 客户的请求的能力, 这可能意味着 L0VMM 也可运 行与本发明一个实施例中的 L1 VMM 中相同的后端驱动程序。具体地, 利用图 3 的分组传输 示例, 当工作于半虚拟化环境时, 行 12 和 13 可被变更。基于实际设备语义, 行 12 和 13 中 的操作可用诸如来自 VM 20 396 的超调用的更高效方法替换, 以告知虚拟硬件开始分组传 输。此外, 提供来自行 12-13 的请求的行 14-18 可与基于实际设备语义传递的参数稍稍不 同。例如, L0 VMM 可使用半虚拟化 I/O 定义方法传递的缓冲器地址取出客户传输缓冲器。 利用与上述用于发送分组的过程相似的半虚拟化 I/O 操作接收分组, 因此在此不再赘述该 方法。
     因此, 本文中所描述的各个实施例可允许 L0 VMM 在进行例如 L2 客户 I/O 仿真 / 服 务时绕过 L1 VMM。换言之, 各个实施例在 L0 VMM 在某种程度上绕过 L1 VMM 的情况下直接 向 L2 客户仿真 / 提供虚拟化实体 ( 例如全虚拟化设备、 半虚拟化设备等 )。这可通过在 L0 VMM 与 L1 VMM 之间共享 L2 客户状态信息来完成, 该 L2 客户状态信息通常仅为父 VMM 所知 ( 例如, 诸如在 L2 客户与 L1 VMM 之间 )。在 L1 VMM 与 L0 VMM 之间共享帮助绕过 L1 VMM 以实现更佳性能。
     在此处使用的模块指的是任何硬件、 软件、 固件、 或它们的组合。通常被示为分开 的模块边界一般不同而且有可能重叠。 例如, 第一和第二模块可共享硬件、 软件、 固件、 或它 们的组合, 同时可能保留某些独立的硬件、 软件或固件。在一个实施例中, 术语 “逻辑” 的使 用包括诸如晶体管、 寄存器之类的硬件或诸如可编程逻辑器件之类的其它硬件。 然而, 在另 一实施例中, 逻辑还包括诸如固件或微码之类的与硬件集成的软件或代码。
     实施例可在许多不同的系统类型中实现。 现在参照图 4, 其中示出了根据本发明一 实施例的系统的框图。多处理器系统 500 是点对点互连系统, 且包括经由点对点互连 550 耦合的第一处理器 570 和第二处理器 580。处理器 570 和 580 中的每一个可以是包括第一和第二处理器核 ( 即处理器核 574a 和 574b 以及处理器核 584a 和 584b) 的多核处理器, 尽 管这些处理器中可能存在更多核。术语 “处理器” 可表示任何设备或设备的一部分, 其处理 来自寄存器和 / 或存储器的电子数据, 以将该电子数据转换成可存储于寄存器和 / 或存储 器中的其它电子数据。
     第一处理器 570 还包括存储器控制器中枢 (MCH)572 与点对点 (P-P) 接口 576 和 578。类似地, 第二处理器 580 包括 MCH 582 与 P-P 接口 586 和 588。MCH 572 和 582 将处 理器耦合至相应的存储器即存储器 532 和存储器 534, 它们可以是本地附连至相应处理器 的主存储器 ( 例如动态随机存取存储器 (DRAM)) 的多个部分。第一处理器 570 和第二处理 器 580 可分别经由 P-P 互连 552 和 554 耦合至芯片组 590。芯片组 590 包括 P-P 接口 594 和 598。
     此外, 芯片组 590 包括通过 P-P 互连 539 将芯片组 590 与高性能图形引擎 538 耦 合的接口 592。芯片组 590 又经由接口 596 耦合至第一总线 516。多个输入 / 输出 (I/O) 设备 514 以及总线桥 518 可耦合至第一总线 516, 该总线桥 518 将第一总线 516 耦合至第二 总线 520。多个设备可耦合至第二总线 520, 包括例如键盘 / 鼠标 522、 通信设备 526 以及诸 如磁盘驱动器或在一个实施例中为其它大容量存储设备的可包括代码 530 的数据存储单 元 528。此外, 音频 I/O 524 可耦合至第二总线 520。 实施例可以代码的形式实现, 而且可存储在其上存储有可用于对系统编程以执行 这些指令的存储介质上。该存储介质可包括但不限于 : 包括软盘、 光盘、 固态驱动器 (SSD)、 光盘只读存储器 (CD-ROM)、 可重写光盘 (CD-RW) 以及磁光盘的任何类型的盘 ; 诸如只读存 储器 (ROM)、 诸如动态随机存取存储器 (DRAM)、 静态随机存取存储器 (SRAM) 之类的随机 存取存储器 (RAM)、 可擦写可编程只读存储器 (EPROM)、 闪存、 电可擦写可编程只读存储器 (EEPROM) 之类的半导体器件 ; 磁卡或光卡 ; 或适合于存储电子指令的任何其他类型的介 质。
     本发明诸实施例可在本文中参照诸如指令、 函数、 程序、 数据结构、 应用、 应用程 序、 配置设定、 代码等数据来进行描述。 如本文中更详细描述的, 当数据被机器访问时, 机器 可通过执行任务、 定义抽象数据类型、 建立低级硬件上下文、 和 / 或执行其它操作来作出响 应。该数据可被存储于易失性和 / 或非易失性数据存储中。出于本公开内容的目的, 术语 “代码” 或 “程序” 或 “应用程序” 覆盖了广泛范围的部件和构造, 包括驱动电路、 处理器、 例 程、 方法、 模块以及子程序。因此, 术语 “代码” 或 “程序” 或 “应用程序” 可被用于指代任何 指令集合, 这些指令集合在由处理系统执行时实现所需操作或多个操作。 此外, 替代实施例 可包括使用比所公开的全部操作 ( 例如图 3) 少的过程、 使用附加操作的过程、 使用按照不 同顺序的相同操作的过程、 以及其中将本文中所公开的各个操作组合、 划分或者变更的过 程。
     虽然已经关于有限个实施例描述了本发明, 但本领域技术人员将会理解从中得出 的多种修改和变化。 所附权利要求旨在覆盖落入本发明的真实精神和范围中的所有这些修 改和变化。
    

高效嵌套虚拟化.pdf_第1页
第1页 / 共14页
高效嵌套虚拟化.pdf_第2页
第2页 / 共14页
高效嵌套虚拟化.pdf_第3页
第3页 / 共14页
点击查看更多>>
资源描述

《高效嵌套虚拟化.pdf》由会员分享,可在线阅读,更多相关《高效嵌套虚拟化.pdf(14页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102103517A43申请公布日20110622CN102103517ACN102103517A21申请号201010617982022申请日2010122112/644,84720091222USG06F9/45520060171申请人英特尔公司地址美国加利福尼亚州72发明人董耀祖74专利代理机构上海专利商标事务所有限公司31100代理人毛力54发明名称高效嵌套虚拟化57摘要在本发明的一个实施例中,使嵌套虚拟化环境中的退出和/或进入过程更高效。例如,层0L0虚拟机管理器VMM可直接仿真层2L2客户中断,而不是通过层1L1VMM间接地仿真。该直接仿真可通过例如在L1VMM与。

2、L0VMM之间共享虚拟状态例如虚拟CPU状态、虚拟设备状态和/或虚拟物理存储器状态来进行。作为另一示例,L1VMM信息例如L2物理到机器地址转换表可在L1VMM与L0VMM之间被共享。30优先权数据51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书7页附图4页CN102103520A1/2页21一种方法,包括使用处理器生成第一虚拟机VM,并将所述第一VM存储于耦合至所述处理器的存储器中;用所述第一VM执行客户应用程序;用第一虚拟机监控程序VMM执行所述第一VM;在嵌套虚拟化环境中用第二VMM执行所述第一VMM;以及用所述第二VMM向所述客户直接仿真底层虚拟化设备。

3、;其中所述第二VMM被包括在比所述第一VMM低的虚拟化层中,且所述虚拟化设备耦合至所述处理器。2如权利要求1所述的方法,其特征在于,包括通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述设备。3如权利要求1所述的方法,其特征在于,包括基于在所述第一和第二VMM之间共享与所述设备相对应的虚拟设备状态信息,通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述设备。4如权利要求1所述的方法,其特征在于,包括基于在所述第一和第二VMM之间共享虚拟处理器状态信息,通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述设备;以及将所述虚拟处理器状态信息存储在耦合至所述处理器的存储器。

4、部分中。5如权利要求1所述的方法,其特征在于,包括基于在所述第一和第二VMM之间共享与所述客户有关的虚拟物理存储器状态信息,通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述设备。6如权利要求1所述的方法,其特征在于,包括基于在所述第一和第二VMM之间共享与所述客户有关的地址转换信息,通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述设备。7如权利要求1所述的方法,其特征在于,所述第一和第二VMM包括等效的设备模型。8如权利要求1所述的方法,其特征在于,包括直接仿真与所述客户相对应的半虚拟化设备驱动程序。9如权利要求1所述的方法,其特征在于,包括通过绕过所述第一VMM从所述。

5、客户向所述第二VMM直接发送网络分组信息。10一种物品,包括存储指令的介质,所述指令使基于处理器的系统能在第一虚拟机VM上执行客户应用程序;在第一虚拟机监控程序VMM上执行所述第一VM;在嵌套虚拟化环境中在第二VMM上执行所述第一VMM;以及用所述第二VMM向所述客户直接仿真底层虚拟化实体。11如权利要求10所述的物品,其特征在于,进一步存储指令,所述指令使所述系统能通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述实体。12如权利要求10所述的物品,其特征在于,进一步存储指令,所述指令使所述系统能基于在所述第一和第二VMM之间共享与所述实体相对应的虚拟实体状态信息,通过绕过所述第一。

6、VMM用所述第二VMM向所述客户直接仿真所述实体。权利要求书CN102103517ACN102103520A2/2页313如权利要求10所述的物品,其特征在于,进一步存储指令,所述指令使所述系统能基于在所述第一和第二VMM之间共享虚拟处理器状态信息,通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述实体。14如权利要求10所述的物品,其特征在于,进一步存储指令,所述指令使所述系统能基于在所述第一和第二VMM之间共享与所述客户有关的虚拟存储器状态信息,通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述实体。15如权利要求10所述的物品,其特征在于,所述实体包括虚拟化设备。16。

7、一种装置,包括耦合至存储器的处理器,用于1在存储于所述处理器中的第一虚拟机VM上执行客户应用程序;2在第一虚拟机监控程序VMM上执行所述第一VM;3在嵌套虚拟化环境中在第二VMM上执行所述第一VMM;以及4用所述第二VMM向所述客户直接仿真底层虚拟化实体。17如权利要求16所述的装置,其特征在于,所述处理器用于通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述实体。18如权利要求16所述的装置,其特征在于,所述处理器用于基于在所述第一和第二VMM之间共享虚拟客户状态信息,通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述实体。19如权利要求16所述的装置,其特征在于,所述处。

8、理器用于基于在所述第一和第二VMM之间共享虚拟客户处理器状态信息,通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述实体。20如权利要求16所述的装置,其特征在于,所述处理器用于基于在所述第一和第二VMM之间共享与所述客户有关的虚拟存储器状态信息,通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述实体。权利要求书CN102103517ACN102103520A1/7页4高效嵌套虚拟化背景技术0001虚拟机系统允许物理机器被分区或共享,以使该机器的底层硬件呈现为一个或多个独立工作的虚拟机VM。虚拟机监控程序VMM可在计算机上运行,并向其他软件呈现一个或多个VM的抽象。每个VM。

9、可用作运行其自己的操作系统OS和/或应用程序软件的自持平台。VM内的软件执行可统称为客户软件。0002客户软件可期望如同在专用计算机上而不是在VM上运行。即,客户软件可期望控制各种事件,并可访问计算机例如物理机上的硬件资源。该物理机器的硬件资源可包括一个或多个处理器、驻留在该处理器上的资源例如控制寄存器、高速缓存以及其他、存储器以及诸如描述符表的驻留在存储器内的结构以及驻留在物理机中的其他资源例如输入输出I/O设备。这些事件例如可包括中断、异常、平台事件例如初始化INIT或系统管理中断SMI等。0003VMM可按需使客户软件状态信息状态换入/出或传入/出物理机的处理器、设备、存储器、寄存器等。。

10、处理器可在VM与VMM之间的转换期间换入/出一些状态信息。在一些情况下,VMM可通过允许对底层物理机的直接访问来增强VM的性能。当操作在客户软件中以非特权模式执行这将限制对物理机的访问时,或当操作将不利用VMM希望保持控制的物理机中的硬件资源时,上述做法特别合适。VMM被认为是VM的主机。0004例如,只要客户操作会影响VMM或任一个VM的正确执行,则VMM重新获得控制。通常,在允许该操作继续进行至底层物理机或代表客户仿真该操作和/或硬件之前,VMM检查此类操作以确定是否存在问题。例如,当客户访问I/O设备、试图改变机器配置例如通过改变控制注册值、试图访问存储器的某些区域等等时,VMM可能需要。

11、重新获得控制。0005支持VM操作的现有的物理机可利用诸如虚拟机控制结构VMCS、虚拟机控制块VMCB等等结构来控制VM的执行环境。以VMCS为例,VMCS可被存储于存储器的一个区域中,且可例如包含客户状态、VMM状态以及表明在客户执行期间VMM希望重新获得控制的条件的控制信息。物理机中的一个或多个处理器可从VMCS读取信息以确定VM和VMM的执行环境,并适当地限制客户软件的行为。0006当转换至VM例如进入或转换出例如退出VM时,物理机的一个或多个处理器可装载或存储机器状态信息。然而,在例如VMM由另一VMM主存的嵌套虚拟化环境下,进入和退出方案在尝试管理例如状态信息和存储器信息时会变得麻烦。

12、和低效。0007附图简述0008根据所附权利要求、以下一个或多个示例实施例的详细描述以及相应的附图,本发明的实施例的特征和优点将变得显而易见,在附图中0009图1和2示出用于仿真设备的常规嵌套虚拟化环境和方法。0010图3包括本发明的一个实施例中的用于高效嵌套虚拟化的方法。0011图4包括用于实现本发明各个实施例的系统框图。说明书CN102103517ACN102103520A2/7页5具体实施方式0012在以下描述中,陈述了多个具体细节。然而,应当理解的是,可不通过这些具体细节来实施本发明的实施例。未详细示出众所周知的电路、结构以及技术,以免混淆对本描述的理解。对“一个实施例”、“一实施例”。

13、、“示例实施例“、“多个实施例”等等的引用表明所描述的实施例可包括特定特征、结构或特性,但并非每个实施例都一定包括那些特定特征、结构或特性。此外,某些实施例可具有针对其它实施例所描述的特征中的部分、全部特征或不具有那些特征。此外,如本文所使用的“第一”、“第二”、“第三”等描述了共同的对象,且表明所指的是相同对象的不同实例。此类形容词不旨在表明如此描述的对象必须是按照时间、空间、排序或任何其他方式的给定顺序。0013图1包括常规分层嵌套虚拟化环境的示意框图。例如,系统100包括层0L0115、层1L1110以及层2L2105。VM1190和VM2195都位于L0VMM130“上方”或与L0VM。

14、M130一起执行。VM1190包括由客户操作系统OS1125支持的应用程序APPS1120。VM2195“包括”L1VMM160。因此,系统100是其中例如L1VMM160位于L0VMM130上或“嵌套”在L0VMM130中的嵌套虚拟化环境。L1VMM160与下层L0VMM130“一起”操作。L1VMM160“支持”客户VM20196和客户VM21197,客户VM20196和客户VM21197分别运行OS20170/APPS20180和OS21175/APPS21185。0014L0VMM130可以是例如可利用英特尔的虚拟化技术VT、AMD的安全虚拟机等等的内核虚拟机KVM,因此VMM可运行客。

15、户操作系统OS和应用程序。L0VMM130以及本文中所描述的其他VMM可包括管理程序,该管理程序可具有管理计算机系统上的多个操作系统或同一操作系统的多个实例的软件程序。该管理程序可管理系统的处理器、存储器和其他资源以对每个操作系统所需要或想要的作出分配。管理程序可包括肥管理程序例如VMWAREESX,其包括设备驱动程序、存储器管理、OS等。管理程序还可包括耦合在硬件与主机OS例如LINUX之间的瘦管理程序例如KVM。管理程序可进一步包括具有服务OS以及运行在客户软件例如XEN域0中的设备驱动程序的混合管理程序。0015在系统100中,虚拟机扩展VMX引擎被提交给客户L1VMM160,客户L1V。

16、MM160将创建客户VM20196和VM21197。VM20196和VM21197可分别由虚拟VMCSSVVMCS20165和VVMCS21166管理。VVMCS20165和VVMCS21166可分别用诸如SVMCS20145和SVMCS21155的实际VMCS来遮蔽。当执行诸如VM20196或VM21197的L2客户时,每个SVMCS145、155可被加载为物理VMCS。0016图2示出用于仿真设备的常规嵌套虚拟化环境和方法。图2可与例如LINUX主机OS和KVM210一起使用。箭头1示出从被L0VMM210类似于图1的L0VMM130俘获的L2客户205例如图1的VM20196、VM211。

17、97的VM退出。箭头2示出L0VMM210将该VM退出反弹或引导至L1客户215类似于图1的L1VMM160,或更具体的L1KVM230模块。0017箭头3通向L1VMM215L2客户205的父事务,L1VMM215使用例如设备模型220、与半虚拟化客户设备的前端驱动程序互补的后端驱动程序等中的任一个来仿真诸如L2客户205的实体例如客户、操作、事件、设备驱动程序、设备等I/O行为。设备建模可帮助系统与各种设备驱动程序通过接口连接。例如,设备模型可将虚拟化的硬件层/接口从客户205转换至底层设备。该仿真类似于正常的单层非嵌套特权资源访问进行,但通过嵌套虚拟化,I/O事件例如请求首先被L0VMM。

18、210俘获,然后如果L1VMM215被说明书CN102103517ACN102103520A3/7页6配置成接收该事件,则L0VMM210将该事件反弹至L1VMM215中。L1VMM设备模型220可按照与单层虚拟化时相似的方式为每个客户保持虚拟状态VSTATE225,且可向L1OS要求I/O事件服务。0018此外,在嵌套虚拟化中,例如,I/O可从L2客户205被转换至L1虚拟主机I/O240。虚拟主机I/O240通过位于L0VMM210中的另一层设备模型未在图2中示出来仿真。该过程可比单层虚拟化慢。因此,虚拟主机I/O240可以是由L0VMM210中的设备模型仿真的设备驱动程序。虚拟主机I/O。

19、240也可以是由L0VMM210中的后端驱动程序提供服务的半虚拟化的前端驱动程序。主机I/O245可以是物理I/O设备的I/O驱动程序。经由箭头4和5,L1VMM215可将出站的I/O例如网络分组经由L0VMM210转发给底层硬件。0019然后可从硬件接收入站的I/O,然后由L0设备模型或后端驱动程序等通过L0VMM210经由箭头6将入站I/O路由至L1VMM215虚拟主机I/O240,并经由箭头7将入站I/O路由至设备模型220。在设备模型完成仿真之后,它可要求L1VMM215经由L0VMM210经由箭头8和9通知L2客户205以指示提供I/O服务完成。L0VMM210可仿真来自L1VMM2。

20、15的虚拟VM恢复事件以恢复L2客户205。0020如方法200中可见,由于例如多层嵌套环境固有的特权限制,使用常规嵌套虚拟化进程提供I/O服务是间接冒险。例如,利用嵌套虚拟化,L1VMM215以去特权化的方式操作,从而必须依赖于有特权的L0VMM210来访问有特权的资源。这是低效的。0021以下说明该低效性。例如,单层VMM中的I/O仿真可访问系统有特权的资源许多次例如访问次数“NA”以成功地仿真客户行为。具体而言,单层VMM可访问其I/O仿真通道中的诸如控制寄存器CR、物理I/O寄存器和/或VMCS寄存器的有特权资源。然而,在嵌套虚拟化中,该过程可能是不同的。例如,在单层虚拟化中仿真L2客。

21、户I/O的VMM在嵌套虚拟化结构中成为L1VMM。该L1VMM现在以非特权模式运行。L1VMM中的每个有特权的资源访问现在将触发往L0VMM的VM退出以便进一步仿真。该触发是对L2客户VM与L1VMM之间进行的俘获的附加。因此,每次访问都存在增加的“每次访问的周期数NC”或“PER_VM_EXIT_COST每次VM退出成本”。因此,L2客户的I/O仿真的附加成本变成L2NCNCNA。相比于单层虚拟化,这是大的计算开销。当使用KVM时,NV大约可以是500个周期,且NA可约为25。因此,L2NC5,000周期/每次访问25次访问125,000周期的开销。0022在本发明的一个实施例中,使嵌套虚拟。

22、化环境中的退出和/或进入过程更高效。例如,L0VMM可直接仿真L2客户I/O,而不是通过L1VMM间接仿真。该直接仿真可通过例如在L1VMM与L0VMM之间共享虚拟客户状态例如虚拟CPU状态、虚拟设备状态和/或虚拟物理存储器状态来进行。作为另一示例,L1VMM信息例如以下寻址的L2物理到机器“P2M”地址转换表可在L1VMM与L0VMM之间被共享。0023在本发明的一个实施例中,例如,因为同一VMM在L0和L1层上执行,所以可实现该效率增益。这种情况可能在例如在第二KVM之上运行第一KVM的多层VT虚拟化情况下出现。在这样的情形下,L0和L1VMM两者中的设备模型相同,且因此这些设备模型理解L。

23、0或L1VMM所使用的虚拟设备状态格式。0024然而,本发明的实施例不需要将同一VMM用于L0和L1层。本发明的一些实施例可将不同的VMM类型用于L0和L1层。在此类情况下,L2客户的虚拟状态信息可被包括在说明书CN102103517ACN102103520A4/7页7L1VMM和L1VMM设备模型中,但仍与L0VMM和L0VMM设备模型一起共享并被L0VMM和L0VMM设备模型理解。0025作为对比,在常规系统中,L1VMM已知的虚拟客户状态不为L0VMM所知或共享反之亦然。缺少共享可能是因为例如L1VMM不知道它是在本机平台还是在虚拟化的平台上运行。此外,L1VMM可能不理解例如L0VMM。

24、承认的共享状态的位格式/语义。此外,在常规系统中,L2客户是L1VMM的客户,因此L2客户不知道L0VMM。因此,对于单层虚拟化情形,L2客户退出转向L1VMM而不是L0VMM。如关于图2所描述的,在两层虚拟化情况下,L0VMM仍确保L2客户VM退出转向L1VMM。因此,本发明的一些实施例与常规系统不同,因为例如虚拟状态例如虚拟客户状态在L0与L1VMM之间被共享。因此,L0VMM可仿真例如L2客户I/O,并避免通常与嵌套虚拟化相关联的一些开销。0026图3包括用于高效嵌套虚拟化的方法300。为说明目的,方法300被示为处理网络分组的传输,但该方法不限于处理此类事件,且可替代地应用于诸如I/O。

25、事件例如接收、处理和传输网络信息、磁盘读写、流输入输出等的各种事件。此外,该方法不限于仅对诸如仿真设备的实体起作用。例如,本方法的实施例也可对诸如半虚拟化设备驱动程序的实体起作用。0027然而,在完整陈述图3之前,首先更完整地陈述虚拟化和半虚拟化的环境。虚拟化环境包括全虚拟化环境以及半虚拟化环境。在全虚拟化环境中,每个客户OS可如同底层VM仅仅是客户OS支持的独立物理处理系统地操作。因此,客户OS可预期或希望VM根据所支持的物理处理系统的体系结构规范来工作。作为比较,在半虚拟化中,客户OS帮助VMM提供虚拟化环境。因此,客户OS可被表征为虚拟化已知。半虚拟化的客户OS可能仅能够协同特定VMM操。

26、作,而全虚拟化环境的客户机OS可在两种或更多种不同类型的VMM上操作。半虚拟化可按需对客户操作系统的诸如内核的源代码作出改变,以使它能在特定VMM上运行。0028半虚拟化I/O例如I/O事件可与半虚拟化OS内核经修改或全虚拟化OS内核未经修改一起使用或在其中使用。半虚拟化I/O可使用客户设备中的前端驱动程序来与位于VMM例如L0VMM中的后端驱动程序通信。此外,半虚拟化可使用共享存储器来传送批量数据,以节省俘获和仿真工作,而全虚拟化I/O可能需要遵循由原始仿真设备提供的语义。0029返回参照图3,方法300包括L0VMM330和支持VM20396的L1VMM360,所有这些组合以形成用于诸如例。

27、如英特尔EPRO100082546EBNIC的网络接口卡NIC的虚拟化环境。在方法300开始之前,L0VMM330可创建可运行L1VMM360的VM2未示出。此外,L0VMM330可能知道VM2存储器分配或L1客户伪物理地址向层0机器地址的转换表或映射例如L1_TO_L0_P2M。在行1,L1VMM360可创建被包括在VM2“之中”的L2客户VM20396。L1VMM360可知道VM20396的伪P2M映射即VM20396客户物理地址向L1VMM360伪物理地址的映射例如L2_TO_L1_P2M。在行2中,L1VMM360可发出请求例如通过超调用H0或其它通信通道以要求L0VMM330将L2客。

28、户物理地址映射至用于VM20396的L0VMM330实际物理机器地址表例如L2_TO_L0_P2M。0030在行3中,L0VMM330可从行2接收该请求。在行4中,L0VMM330可使用之前接收或已知的信息即L2_TO_L1_P2M将VM20客户物理地址重新映射至L0机器地址说明书CN102103517ACN102103520A5/7页8L2_TO_L0_P2M。这是通过例如利用L1VMM360或L1客户VM2的P2M表L1_TO_L0_P2M来实现的,因为L2客户存储器是L1客户VM2的一部分,所以这是可能的。例如,对于给定L2客户物理地址XL2_TO_L0_P2MXL1_TO_L0_P2M。

29、L2_TO_L1_P2MX。0031在行5,L1VMM360可启动VM20396,且VM20396的执行可开始。在行6,VM20OS可开始。在行7,VM20396OS的执行可实现诸如虚拟NIC设备的虚拟设备。0032这可使虚拟NIC设备在行8初始化。在行9,L1VMM360可请求与L0VMM330通信例如通过超调用H1或其它通信通道,以共享NIC设备的客户状态例如VM20_VEPRO1000_STATE和/或CPU的客户状态。客户虚拟CPU或处理器状态可包括例如VM20VCPUSTATEVM20VCPU状态,其可对应于诸如VM20396的12_VCR3的L2虚拟控制寄存器CRCR3。状态信息可。

30、通过例如共享存储器来共享,在共享存储器处L1VMM和L0VMM二者可看到被共享状态并操纵那些状态。0033在行10,L0VMM330可接收请求例如超调用H1,且在行11,L0VMM330可将虚拟NIC设备状态重新映射到L0VMM430内部地址空间中。因此,L0VMM430可能能够访问虚拟NIC和CPU状态信息。0034在行12,VM20可通过填充传输缓冲器及其直接存储器存取DMA控制数据结构诸如英特尔82546EBNIC控制器中的DMA描述符环结构而开始发送分组。L0VMM330现在绕过L1VMM360,并与VM20396通过接口直接连接。在行13,如VM20在其本机环境下操作时将会进行的,通。

31、过对诸如英特尔82546EBNIC控制器中的传输描述符尾部TDT寄存器的专用硬件寄存器编程,VM20可通知虚拟NIC设备DMA描述符填充完成。TDT寄存器可以是存储器映射的I/OMMIO寄存器,但也可以是例如端口I/O。L1VMM360可能没有对MMIO地址的直接转换,该MMIO地址直接转换可能允许L1VMM360通过退出事件例如页面错误PFVM退出俘获和仿真客户MMIO访问。因此,L0VMM330可能没有仿真L1VMM转换的MMIO地址转换。0035在行14,TDT寄存器的地址触发VM退出PF。L0VMM330可从VM退出信息获得该PF的线性地址例如诸如12_GVA的MMIO访问地址。在行1。

32、5,L0VMM330可走查或遍历L2客户页面表以将12_GVA转换成其L2客户物理地址例如12_GPA。对该L2客户页面表的走查或遍历可从由L2客户CR3例如12_VCR3所指向的L2客户物理地址开始。0036在行16,LOVMM330可确定12_GPA是否是经加速的I/O即I/O仿真可绕过L1VMM215。如果12_GPA是经加速的I/O,则在行17,L0VMM可基于共享的虚拟NIC和CPU状态信息例如VM20_VEPRO1000_STATE和VM20VCPUSTATE执行仿真。在行18,L0VMM330可取出L2虚拟NIC设备DMA描述符,并利用L2_TO_L0_P2M表执行转换,以将12。

33、客户物理地址转换成实际机器物理地址。在行19,L0VMM330可具有传输有效载荷,并在L0主机I/O中传输该有效载荷。L0VMM330还可更新共享数据中的VM20_VEPRO1000_STATE和VM20VCPUSTATE。在行20,L2客户可恢复。0037因此,L0VMM330可使用在L0VMM330与L1VMM360之间共享的L2_TO_L0_P2M表、VM20_VEPRO1000_STATE以及VM20VCPUSTATE例如12VCR3来访问虚拟NIC设备DMA描述符环和传输缓冲器,从而将分组直接发送至外部网络,而不经由L1VMM360将分组间接发送至外部网络。在L0VMM300必须将L。

34、2客户I/O访问传递到L1VMM360时,这样做会在L1VMM360与L0VMM330之间触发许多VM退出/进入动作。这些退出/进说明书CN102103517ACN102103520A6/7页9入动作可能导致糟糕的性能。0038在方法300的示例中,分组传输并未触发中断请求IRQ。然而,如果IRQ已由于例如传输完成而引发,则L1VMM360可被用于虚拟中断注入。然而,在一个实施例中,通过共享诸如例如虚拟高级可编程中断控制器APIC状态、I/OAPIC状态、消息告知中断MSI状态以及由L0VMM330直接操纵的虚拟CPU状态信息的中断控制器状态信息,可进行进一步优化以绕过L1VMM对IRQ注入的。

35、介入。0039方法300涉及将设备模型用于分组传输。然而,本发明的一些实施例可采用可能与方法300并无实质不同的用于接收分组的方法,因此在此不再赘述。一般而言,如果L0VMM能决定分组的最终接收者是L2客户,则同一方法可将接收到的分组在L0VMM330中复制到L2客户缓冲器中,并更新虚拟NIC设备状态。为此,L1VMM330可与L0VMM共享其网络配置信息例如L2客户的IP地址、L1VMM的过滤信息。此外,发送至不同L2VM的分组可到达同一物理NIC。因此,L0VMM中的交换机可基于例如介质访问控制MAC地址、IP地址等将分组分发至不同的VM。0040也可将与方法300相似的方法与半虚拟化设备。

36、驱动程序一起使用。例如,半虚拟化网络设备可与全仿真设备相似地操作。然而,在半虚拟化设备中,L2客户或前端驱动程序可以是VMM已知的驱动程序。服务VM例如图2中的L1VMM215可运行后端驱动程序以提供L2请求I/O请求而非图2中的设备模型220。该L0VMM可具有理解来自L1VMM后端驱动程序的共享设备状态并直接提供L2客户的请求的能力,这可能意味着L0VMM也可运行与本发明一个实施例中的L1VMM中相同的后端驱动程序。具体地,利用图3的分组传输示例,当工作于半虚拟化环境时,行12和13可被变更。基于实际设备语义,行12和13中的操作可用诸如来自VM20396的超调用的更高效方法替换,以告知虚。

37、拟硬件开始分组传输。此外,提供来自行1213的请求的行1418可与基于实际设备语义传递的参数稍稍不同。例如,L0VMM可使用半虚拟化I/O定义方法传递的缓冲器地址取出客户传输缓冲器。利用与上述用于发送分组的过程相似的半虚拟化I/O操作接收分组,因此在此不再赘述该方法。0041因此,本文中所描述的各个实施例可允许L0VMM在进行例如L2客户I/O仿真/服务时绕过L1VMM。换言之,各个实施例在L0VMM在某种程度上绕过L1VMM的情况下直接向L2客户仿真/提供虚拟化实体例如全虚拟化设备、半虚拟化设备等。这可通过在L0VMM与L1VMM之间共享L2客户状态信息来完成,该L2客户状态信息通常仅为父V。

38、MM所知例如,诸如在L2客户与L1VMM之间。在L1VMM与L0VMM之间共享帮助绕过L1VMM以实现更佳性能。0042在此处使用的模块指的是任何硬件、软件、固件、或它们的组合。通常被示为分开的模块边界一般不同而且有可能重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时可能保留某些独立的硬件、软件或固件。在一个实施例中,术语“逻辑”的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其它硬件。然而,在另一实施例中,逻辑还包括诸如固件或微码之类的与硬件集成的软件或代码。0043实施例可在许多不同的系统类型中实现。现在参照图4,其中示出了根据本发明一实施例的系统的框图。

39、。多处理器系统500是点对点互连系统,且包括经由点对点互连550耦合的第一处理器570和第二处理器580。处理器570和580中的每一个可以是包括第一说明书CN102103517ACN102103520A7/7页10和第二处理器核即处理器核574A和574B以及处理器核584A和584B的多核处理器,尽管这些处理器中可能存在更多核。术语“处理器”可表示任何设备或设备的一部分,其处理来自寄存器和/或存储器的电子数据,以将该电子数据转换成可存储于寄存器和/或存储器中的其它电子数据。0044第一处理器570还包括存储器控制器中枢MCH572与点对点PP接口576和578。类似地,第二处理器580包括。

40、MCH582与PP接口586和588。MCH572和582将处理器耦合至相应的存储器即存储器532和存储器534,它们可以是本地附连至相应处理器的主存储器例如动态随机存取存储器DRAM的多个部分。第一处理器570和第二处理器580可分别经由PP互连552和554耦合至芯片组590。芯片组590包括PP接口594和598。0045此外,芯片组590包括通过PP互连539将芯片组590与高性能图形引擎538耦合的接口592。芯片组590又经由接口596耦合至第一总线516。多个输入/输出I/O设备514以及总线桥518可耦合至第一总线516,该总线桥518将第一总线516耦合至第二总线520。多个。

41、设备可耦合至第二总线520,包括例如键盘/鼠标522、通信设备526以及诸如磁盘驱动器或在一个实施例中为其它大容量存储设备的可包括代码530的数据存储单元528。此外,音频I/O524可耦合至第二总线520。0046实施例可以代码的形式实现,而且可存储在其上存储有可用于对系统编程以执行这些指令的存储介质上。该存储介质可包括但不限于包括软盘、光盘、固态驱动器SSD、光盘只读存储器CDROM、可重写光盘CDRW以及磁光盘的任何类型的盘;诸如只读存储器ROM、诸如动态随机存取存储器DRAM、静态随机存取存储器SRAM之类的随机存取存储器RAM、可擦写可编程只读存储器EPROM、闪存、电可擦写可编程只。

42、读存储器EEPROM之类的半导体器件;磁卡或光卡;或适合于存储电子指令的任何其他类型的介质。0047本发明诸实施例可在本文中参照诸如指令、函数、程序、数据结构、应用、应用程序、配置设定、代码等数据来进行描述。如本文中更详细描述的,当数据被机器访问时,机器可通过执行任务、定义抽象数据类型、建立低级硬件上下文、和/或执行其它操作来作出响应。该数据可被存储于易失性和/或非易失性数据存储中。出于本公开内容的目的,术语“代码”或“程序”或“应用程序”覆盖了广泛范围的部件和构造,包括驱动电路、处理器、例程、方法、模块以及子程序。因此,术语“代码”或“程序”或“应用程序”可被用于指代任何指令集合,这些指令集。

43、合在由处理系统执行时实现所需操作或多个操作。此外,替代实施例可包括使用比所公开的全部操作例如图3少的过程、使用附加操作的过程、使用按照不同顺序的相同操作的过程、以及其中将本文中所公开的各个操作组合、划分或者变更的过程。0048虽然已经关于有限个实施例描述了本发明,但本领域技术人员将会理解从中得出的多种修改和变化。所附权利要求旨在覆盖落入本发明的真实精神和范围中的所有这些修改和变化。说明书CN102103517ACN102103520A1/4页11图1现有技术说明书附图CN102103517ACN102103520A2/4页12图2现有技术说明书附图CN102103517ACN102103520A3/4页13图3说明书附图CN102103517ACN102103520A4/4页14图4说明书附图CN102103517A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1