虚拟机共享内核内存的方法及装置.pdf

上传人:利贞 文档编号:10673621 上传时间:2021-08-08 格式:PDF 页数:17 大小:630.26KB
收藏 版权申诉 举报 下载
虚拟机共享内核内存的方法及装置.pdf_第1页
第1页 / 共17页
虚拟机共享内核内存的方法及装置.pdf_第2页
第2页 / 共17页
虚拟机共享内核内存的方法及装置.pdf_第3页
第3页 / 共17页
文档描述:

《虚拟机共享内核内存的方法及装置.pdf》由会员分享,可在线阅读,更多相关《虚拟机共享内核内存的方法及装置.pdf(17页完成版)》请在专利查询网上搜索。

1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 201911394701.7 (22)申请日 2019.12.30 (71)申请人 海光信息技术有限公司 地址 300450 天津市滨海新区天津华苑产 业区海泰西路18号北2-204工业孵化- 3-8 (72)发明人 藏洪永 (74)专利代理机构 北京超凡宏宇专利代理事务 所(特殊普通合伙) 11463 代理人 何明伦 (51)Int.Cl. G06F 9/54(2006.01) G06F 9/455(2006.01) (54)发明名称 虚拟机共享内核内存的方法及装置 (57)摘。

2、要 本发明涉及一种虚拟机共享内核内存的方 法及装置, 属于计算机技术领域。 该方法包括: 启 动第一虚拟机, 第一虚拟机具有用于第一虚拟机 物理地址到宿主机物理地址的映射的第一二维 页表, 并且第一虚拟机的内核被加载和锁定在宿 主机物理内存中; 启动第二虚拟机, 第二虚拟机 具有用于第二虚拟机物理地址到宿主机物理地 址的映射的第二二维页表, 第二二维页表映射到 第一虚拟机的内核在宿主机物理内存中的地址; 以及当接收到第二虚拟机的写内存操作时, 在宿 主机物理内存中分配用于写内存操作的新内存 页, 并且更新第二二维页表。 通过本发明能够减 少众多同内核虚拟机的内核内存开销, 以节省内 存空间, 。

3、提升内存利用率。 权利要求书2页 说明书10页 附图4页 CN 111190752 A 2020.05.22 CN 111190752 A 1.一种虚拟机共享内核内存的方法, 包括: 启动第一虚拟机, 所述第一虚拟机具有用于第一虚拟机物理地址到宿主机物理地址的 映射的第一二维页表, 并且所述第一虚拟机的内核被加载和锁定在宿主机物理内存中; 启动第二虚拟机, 所述第二虚拟机具有用于第二虚拟机物理地址到宿主机物理地址的 映射的第二二维页表, 所述第二二维页表映射到所述第一虚拟机的内核在宿主机物理内存 中的地址, 使得所述第一虚拟机和所述第二虚拟机共享内核内存; 以及 当接收到所述第二虚拟机的写内存。

4、操作时, 在宿主机物理内存中分配用于所述写内存 操作的新内存页, 并且更新所述第二二维页表。 2.如权利要求1所述的方法, 所述方法还包括在启动所述第一虚拟机后暂停所述第一 虚拟机。 3.如权利要求1所述的方法, 还包括将所述第二二维页表的每一个表项的权限初始化 为只读。 4.如权利要求1所述的方法, 其中, 更新所述第二二维页表包括: 使得与所述写内存操作相关的表项映射到所述新内存页的宿主机物理内存地址, 并修 改所述表项的权限为可读可写。 5.如权利要求1-4任一项所述的方法, 其中, 所述第二虚拟机还具有转译后备缓冲器 TLB, 所述TLB用于所述第二虚拟机的虚拟机虚拟地址到宿主机物理地。

5、址的映射, 所述方法 还包括更新所述TLB, 使得与所述写内存操作相关的虚拟机虚拟地址映射到所述新内存页 的宿主机物理内存地址。 6.如权利要求1-4任一项所述的方法, 其中, 所述二维页表包括扩展页表、 嵌套页表、 二 级页表之一。 7.一种虚拟机共享内核内存的装置, 包括: 第一启动单元, 被配置用于启动第一虚拟机, 所述第一虚拟机具有用于第一虚拟机物 理地址到宿主机物理地址的映射的第一二维页表, 并且所述第一虚拟机的内核被加载和锁 定在宿主机物理内存中; 第二启动单元, 被配置用于启动第二虚拟机, 所述第二虚拟机具有用于第二虚拟机物 理地址到宿主机物理地址的映射的第二二维页表, 所述第二。

6、二维页表映射到所述第一虚拟 机的内核在宿主机物理内存中的地址, 所述使得所述第一虚拟机和所述第二虚拟机共享内 核内存; 以及 写内存操作处理单元, 被配置用于当接收到所述第二虚拟机的写内存操作时, 在宿主 机物理内存中分配用于所述写内存操作的新内存页, 并且更新所述第二二维页表。 8.如权利要求7所述的装置, 其中, 所述第一启动单元还被配置用于在启动所述第一虚 拟机后暂停所述第一虚拟机。 9.如权利要求7所述的装置, 其中, 所述第二启动单元还被配置用于将所述第二二维页 表的每一个表项的权限初始化为只读。 10.如权利要求7所述的装置, 其中, 所述写内存操作处理单元还被配置用于: 使得与所。

7、 述写内存操作相关的表项映射到所述新内存页的宿主机物理内存地址, 并修改所述表项的 权限为可读可写。 11.如权利要求7-10任一项所述的装置, 其中, 所述第二虚拟机还具有转译后备缓冲器 权利要求书 1/2 页 2 CN 111190752 A 2 TLB, 所述TLB用于所述第二虚拟机的虚拟机虚拟地址到宿主机物理地址的映射, 所述写内 存操作处理单元还被配置用于: 更新所述TLB, 使得与所述写内存操作相关的虚拟机虚拟地 址映射到所述新内存页的宿主机物理内存地址。 12.如权利要求7-10任一项所述的方法, 其中, 所述二维页表包括扩展页表、 嵌套页表、 二级页表之一。 13.一种系统级芯。

8、片SOC, 包括处理器核心和内存管理单元,所述处理器核心被配置用 于执行如权利要求1-6中任一项所述的方法。 权利要求书 2/2 页 3 CN 111190752 A 3 虚拟机共享内核内存的方法及装置 技术领域 0001 本公开涉及计算机技术领域, 更具体地, 涉及一种虚拟机共享内核内存的方法及 装置。 背景技术 0002 随着无服务器化(serverless)、 功能即服务(FaaS)以及云计算虚拟化等新的云计 算模式的出现, 在一台物理机上可能同时运行几百个、 甚至上千个轻量级虚拟机, 而这些虚 拟机的虚拟机系统(Guest OS)内核都相同, 大量虚拟机的内核占据较大内存空间, 造成内。

9、 存空间浪费。 发明内容 0003 有鉴于此, 本公开实施例的目的在于提供一种虚拟机共享内核内存的方法及装 置, 旨在减少众多同内核虚拟机的内核内存开销, 以节省内存空间, 提升内存利用率。 0004 根据本公开的第一方面, 提供一种虚拟机共享内核内存的方法, 包括: 启动第一虚 拟机, 所述第一虚拟机具有用于第一虚拟机物理地址到宿主机物理地址的映射的第一二维 页表, 并且所述第一虚拟机的内核被加载和锁定在宿主机物理内存中; 启动第二虚拟机, 所 述第二虚拟机具有用于第二虚拟机物理地址到宿主机物理地址的映射的第二二维页表, 所 述第二二维页表映射到所述第一虚拟机的内核在宿主机物理内存中的地址,。

10、 使得所述第一 虚拟机和所述第二虚拟机共享内核内存; 以及当接收到所述第二虚拟机的写内存操作时, 在宿主机物理内存中分配用于所述写内存操作的新内存页, 并且更新所述第二二维页表。 0005 本公开实施例中, 第二虚拟机在启动时共享第一虚拟机的内核内存, 这样相同的 内核代码段、 内核常量等内容只需要占用一段内存, 第二虚拟机在启动时映射到同一内存 区, 从而减少多虚拟机内核占据的内存空间, 提升了宿主机中物理内存的利用率。 0006 在一个可能的实施例中, 所述方法还可以包括在启动所述第一虚拟机后暂停所述 第一虚拟机。 本公开实施例中, 在启动第一虚拟机后暂停第一虚拟机目的在于, 当第一虚拟 。

11、机的内核文件已加载到宿主机的物理内存中时, 暂停第一虚拟机有利于后续启动的其他虚 拟机以其为模板复用相同内核, 减少多虚拟机内核占据的内存空间, 从而提升宿主机中物 理内存的利用率。 0007 在一个可能的实施例中, 所述方法还可以包括将所述第二二维页表的每一个表项 的权限初始化为只读。 本公开实施例中, 将第二二维页表中的表项权限设置为只读, 使得在 第二虚拟机只能读取第二二维页表中的表项指向的宿主机物理内存而不能修改, 并且当第 二虚拟机尝试写内存时, 能够引起异常, 导致虚拟机退出事件, 由虚拟机监视器截获以进行 处理。 0008 在一个可能的实施例中, 更新所述第二二维页表可以包括: 。

12、使得与所述写内存操 作相关的表项映射到所述新内存页的宿主机物理内存地址, 并修改所述表项的权限为可读 可写。 本公开实施例中, 在第二虚拟机加载运行业务逻辑时, 会触发写内存操作, 由于在第 说明书 1/10 页 4 CN 111190752 A 4 二虚拟机启动阶段, 将第二二维页表中的表项权限设置为只读, 所以会出现虚拟机退出事 件, 该虚拟机退出事件被虚拟机管理程序截获, 需要重新在宿主机物理内存中分配新内存 页, 将第二二维页表中的表项指向新内存页, 同时将第二二维页表中的表项权限设置为可 读可写, 以满足第二虚拟机运行其他业务的需求。 0009 在一个可能的实施例中, 所述第二虚拟机。

13、还可以具有转译后备缓冲器TLB, 所述 TLB用于所述第二虚拟机的虚拟机虚拟地址到宿主机物理地址的映射, 所述方法还包括更 新所述TLB, 使得与所述写内存操作相关的虚拟机虚拟地址映射到所述新内存页的宿主机 物理内存地址。 本公开实施例中, 通过TLB能够实现虚拟机的虚拟机虚拟地址到宿主机物理 地址的映射, 从而提升虚拟机内存访问的效率。 该TLB中的表项指向新内存页的宿主机物理 内存地址, 同时将该TLB中的表项设置为可读可写。 从而实现业务虚拟机在加载业务阶段, 能够通过copy on write方式在宿主机物理内存中重新分配写内存操作的新内存页, 完成 业务加载内容。 0010 在一个可。

14、能的实施例中, 所述二维页表可以包括扩展页表、 嵌套页表、 二级页表之 一。 0011 根据本公开的第二方面, 提供一种虚拟机共享内核内存的装置, 包括: 第一启动单 元, 被配置用于启动第一虚拟机, 所述第一虚拟机具有用于第一虚拟机物理地址到宿主机 物理地址的映射的第一二维页表, 并且所述第一虚拟机的内核被加载和锁定在宿主机物理 内存中; 第二启动单元, 被配置用于启动第二虚拟机, 所述第二虚拟机具有用于第二虚拟机 物理地址到宿主机物理地址的映射的第二二维页表, 所述第二二维页表映射到所述第一虚 拟机的内核在宿主机物理内存中的地址, 所述使得所述第一虚拟机和所述第二虚拟机共享 内核内存; 以。

15、及写内存操作处理单元, 被配置用于当接收到所述第二虚拟机的写内存操作 时, 在宿主机物理内存中分配用于所述写内存操作的新内存页, 并且更新所述第二二维页 表。 本公开实施例中, 通过第二虚拟机在启动时共享第一虚拟机的内核内存, 这样相同的内 核代码段、 内核常量等内容只需要占用一段内存, 第二虚拟机在启动时映射到同一内存区, 从而减少多虚拟机内核占据的内存空间, 提升了宿主机中物理内存的利用率。 0012 在一个可能的实施例中, 所述第一启动单元还可以被配置用于在启动所述第一虚 拟机后暂停所述第一虚拟机。 本公开实施例中, 在启动第一虚拟机后暂停第一虚拟机目的 在于, 当第一虚拟机的内核文件已。

16、加载到宿主机的物理内存中时, 暂停第一虚拟机有利于 后续启动的其他虚拟机以其为模板复用相同内核, 减少多虚拟机内核占据的内存空间, 从 而提升宿主机中物理内存的利用率。 0013 在一个可能的实施例中, 所述第二启动单元还可以被配置用于将所述第二二维页 表的每一个表项的权限初始化为只读。 本公开实施例中, 将第二二维页表中的表项权限设 置为只读, 使得在第二虚拟机启动时只能读取第二二维页表中的表项指向的宿主机物理内 存而不能修改, 并且当第二虚拟机尝试写内存时, 能够引起异常, 导致虚拟机退出事件, 由 虚拟机监视器截获以进行处理。 0014 在一个可能的实施例中, 所述写内存操作处理单元还可。

17、以被配置用于: 使得与所 述写内存操作相关的表项映射到所述新内存页的宿主机物理内存地址, 并修改所述表项的 权限为可读可写。 本公开实施例中, 在第二虚拟机加载或运行业务逻辑时, 会触发写内存操 作, 由于在第二虚拟机启动阶段, 将第二二维页表中的表项权限设置为只读, 所以会出现虚 说明书 2/10 页 5 CN 111190752 A 5 拟机退出事件, 该虚拟机退出事件被虚拟机管理程序截获, 需要重新在宿主机物理内存中 分配新内存页, 将第二二维页表中的表项指向新内存页, 同时将第二二维页表中的表项权 限设置为可读可写, 以满足第二虚拟机加载或运行其他业务的需求。 0015 在一个可能的实。

18、施例中, 所述第二虚拟机还可以具有转译后备缓冲器TLB, 所述 TLB用于所述第二虚拟机的虚拟机虚拟地址到宿主机物理地址的映射, 所述写内存操作处 理单元还被配置用于: 更新所述TLB, 使得与所述写内存操作相关的虚拟机虚拟地址映射到 所述新内存页的宿主机物理内存地址。 本公开实施例中, 通过TLB能够实现虚拟机的虚拟机 虚拟地址到宿主机物理地址的映射, 从而提升虚拟机内存访问的效率。 此外, 该TLB中的表 项指向新内存页的宿主机物理内存地址, 同时将该TLB中的表项设置为可读可写。 从而实现 业务虚拟机在加载业务阶段, 能够通过copy on write方式在宿主机物理内存中重新分配 写内。

19、存操作的新内存页, 完成业务加载内容。 0016 在一个可能的实施例中, 所述二维页表包括扩展页表、 嵌套页表、 二级页表之一。 0017 根据本公开的第三方面,提供一种系统级芯片SOC, 包括处理器核心和内存管理单 元, 其中所述处理器核心被配置用于执行如本公开的第一方面所述的方法。 0018 本公开的其他特征和优点将在随后的说明书阐述, 并且, 部分地从说明书中变得 显而易见, 或者通过实施本公开实施例而了解。 本公开的目的和其他优点可通过在所写的 说明书以及附图中所特别指出的结构来实现和获得。 附图说明 0019 为了更清楚地说明本申请实施例或现有技术中的技术方案, 下面将对实施例中所 。

20、需要使用的附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本申请的一些实施 例, 对于本领域普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以根据这些附图获 得其他的附图。 通过附图所示, 本申请的上述及其它目的、 特征和优势将更加清晰。 在全部 附图中相同的附图标记指示相同的部分。 并未刻意按实际尺寸等比例缩放绘制附图, 重点 在于示出本申请的主旨。 0020 图1示出了本公开实施例提供的现有的虚拟机启动时分配物理内存的结构示意 图; 0021 图2示出了本公开实施例提供的一种虚拟机共享内核内存的方法的流程图; 0022 图3示出了本公开实施例提供的虚拟机启动时共享内核物理内存。

21、的示意图; 0023 图4示出了本公开实施例提供的虚拟机启动后加载业务时分配物理内存地址的示 意图; 0024 图5示出了本公开实施例提供的一种虚拟机共享内核内存的装置的结构示意图; 0025 图6示出了本公开实施例提供的一种系统级芯片(SOC)的结构示意图。 具体实施方式 0026 以下, 将参照附图来描述本公开的实施例。 但是应该理解, 这些描述只是示例性 的, 而并非要限制本公开的范围。 此外, 在以下说明中, 省略了对公知结构和技术的描述, 以 避免不必要地混淆本公开的概念。 0027 在此使用的术语仅仅是为了描述具体实施例, 而并非意在限制本公开。 这里使用 说明书 3/10 页 6。

22、 CN 111190752 A 6 的词语 “一” 、“一个(种)” 和 “该” 等也应包括 “多个” 、“多种” 的意思, 除非上下文另外明确指 出。 此外, 在此使用的术语 “包括” 、“包含” 等表明了所述特征、 步骤、 操作和/或部件的存在, 但是并不排除存在或添加一个或多个其他特征、 步骤、 操作或部件。 0028 在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的 含义, 除非另外定义。 应注意, 这里使用的术语应解释为具有与本说明书的上下文相一致的 含义, 而不应以理想化或过于刻板的方式来解释。 0029 如图1所示, 为本公开实施例提供的现有的虚拟机启动时分。

23、配物理内存的结构示 意图。 #1虚拟机11在启动时, 通过虚拟机监视器(Hypervisor)14将启动虚拟机所需要的内 核文件加载到宿主机物理内存15的#1虚拟机内核151中; #2虚拟机12在启动时, 通过虚拟机 监视器14将启动虚拟机所需要的内核文件加载到宿主机物理内存15的#2虚拟机内核152 中; #3虚拟机13在启动时, 通过虚拟机监视器14将启动虚拟机所需要的内核文件加载到宿 主机物理内存15的#3虚拟机内核153中。 然而随着云计算模式的出现和发展, 在一台物理机 上可能同时运行几百个、 甚至上千个轻量级虚拟机, 通过图1中的方式启动这些成百上千个 虚拟机时, 需要先通过虚拟机。

24、监视器将所需要的内核文件加载到宿主机物理内存15中, 这 样会使得大量虚拟机的内核占据较大物理内存空间, 造成内存空间浪费。 0030 为了解决上述的内存空间浪费的问题,目前传统的虚拟机内存复用方式主要包 括: 内核相同页面合并技术、 内核虚拟机的内存气球技术、 内存压缩、 内存交换等方式。 内核 相同页面合并技术能够在多台虚拟机之间合并内容相同的内存页, 同时设置写保护。 例如, VM1中的某个内存页(guest PA1-host PA1), 与另一个位于VM2中的内存页(guest PA2- host PA2)内容相同, 则在宿主机中只须保留一个内存页(HPA_SH)用于支持映射, 也就是。

25、让 VM1的guest PA1和guest PA2都重新映射到同一个页面HPA_SH, 并加写保护。 该技术节省系 统内存, 避免内存空间浪费,尤其对于虚拟机中的只读内存页, 例如代码页和全零页。 0031 然而, 上述技术需要在虚拟机端进行全量内存的扫描, 扫描后需要进行比对才能 合并相同内容的内存页, 在该过程中虚拟机端扫描内存页和比对内存页会引入额外的开 销, 导致系统的运行速率缓慢, 而且不区分内核数据和业务数据, 导致不必要的合并及拆 分, 无法满足现有需求。 0032 为了解决上述问题, 本公开提供了一种虚拟机共享内核内存的方法, 通过多个虚 拟机中的二维页表映射到同一虚拟机内核在。

26、宿主机物理内存中的地址, 来实现共享内核内 存。 由此, 相同的内核代码段、 内核常量等内容只需要占用一段内存, 减少了多虚拟机内核 占据的内存空间, 提升了宿主机中物理内存的利用率。 相比于现有技术, 本公开实施例无需 进行全量扫描, 也无需进行内存页合并, 从而也不会为系统带来额外的开销, 进而避免出现 系统运行速率缓慢的问题。 0033 需要说明的是, 针对以上方案所存在的缺陷, 均是发明人在经过实践并仔细研究 后得出的结果, 因此, 上述问题的发现过程以及下文中本申请实施例针对上述问题所提出 的解决方案, 都应该是发明人在本申请过程中对本申请做出的贡献。 0034 为了便于理解本公开提。

27、供的虚拟机共享内核内存的方法, 下面将结合图2-6的内 容对本案进行详细说明。 0035 如图2所示, 为本公开实施例提供的一种虚拟机共享内核内存的方法的流程图, 该 方法包括: 说明书 4/10 页 7 CN 111190752 A 7 0036 首先, 在201、 启动第一虚拟机, 第一虚拟机具有用于第一虚拟机物理地址到宿主 机物理地址的映射的第一二维页表, 并且第一虚拟机的内核被加载和锁定在宿主机物理内 存中。 需要注意的是, 二维页表(2-dimension page table)在虚拟机技术中用于虚拟机物 理地址(Gueat Physical Address: GPA)到宿主机物理地。

28、址(Host Physical Address: HPA) 的映射, 例如, 包括扩展页表(Extended Page Table: EPT)、 嵌套页表(Nested Page Table: NPT)、 二级页表(Stage-2 Page Table: SPT)等, 其通常可以设置在内存管理单元(Memory Management Unit: MMU)。 0037 例如, 虚拟机监视器(Virtual Machine Monitor: VMM)启动第一虚拟机, 可以将该 第一虚拟机作为母虚拟机, 该母虚拟机中具有用于母虚拟机物理地址到宿主机物理地址的 映射的第一二维页表, 并且母虚拟机的内核。

29、被加载和锁定在宿主机物理内存中, 保证母虚 拟机的内核不被修改、 回收或交换出去。 0038 作为一种实施方式, 本公开实施例中通过内存锁定(memory locking, mlock)方式 启动母虚拟机, mlock是内核实现锁定内存的一种机制, 在这里可以将母虚拟机使用的内核 内存锁定到物理内存中。 mlock机制会使得被锁定的物理内存在被解锁或进程退出前, 不会 被内存页回收流程处理, 使得被锁定的物理内存, 不会被交换到其他设备, 当进程执行 mlock操作时, 内核会立刻分配物理内存。 通过这种方式能够实现母虚拟机的内核被加载和 锁定在宿主机物理内存中。 0039 作为一种实施方式,。

30、 上述的方法还包括: 在启动所述第一虚拟机后暂停所述第一 虚拟机。 本公开实施例中, 在启动第一虚拟机后暂停第一虚拟机目的在于, 启动第一虚拟 机, 内核文件就加载到宿主机的物理内存中, 此时暂停第一虚拟机有利于后续启动的其他 虚拟机以其为模板复用相同内核, 减少多虚拟机内核占据的内存空间, 从而提升宿主机中 物理内存的利用率。 0040 然后, 在202、 启动第二虚拟机, 第二虚拟机具有用于第二虚拟机物理地址到宿主 机物理地址的映射的第二二维页表, 第二二维页表映射到第一虚拟机的内核在宿主机物理 内存中的地址, 使得第一虚拟机和所述第二虚拟机共享内核内存。 0041 VMM启动第二虚拟机,。

31、 该第二虚拟机可以是业务虚拟机, 该业务虚拟机中具有用于 业务虚拟机物理地址到宿主机物理地址的映射的第二二维页表, 该第二二维页表映射到母 虚拟机的内核在宿主机物理内存中的地址, 从而使得业务虚拟机和母虚拟机能够共享内核 内存。 在一个实施例中, 第二虚拟机的二维页表可以与母虚拟机的二维页表一致或任意其 他方式, 只要相应的虚拟机虚拟地址可以映射到相同的宿主机物理内存地址。 0042 作为一种可能的实施方式, 上述的方法还包括: 将所述第二二维页表的每一个表 项的权限初始化为只读。 这里的初始化是指第二虚拟机启动阶段, 将第二二维页表的表项 设置为只读。 本公开实施例中, 将第二二维页表中的表。

32、项权限设置为只读, 使得在第二虚拟 机启动时只能读取第二二维页表中的表项指向的宿主机物理内存而不能修改, 并且当第二 虚拟机尝试写内存时, 能够引起异常, 导致虚拟机退出事件, 由虚拟机监视器截获以进行处 理, 例如, 在宿主机物理内存中分配新内存页。 0043 接下来, 在203、 当接收到第二虚拟机的写内存操作时, 在宿主机物理内存中分配 用于写内存操作的新内存页, 并且更新第二二维页表。 0044 上述的步骤203中的更新第二二维页表包括: 使得与写内存操作相关的表项映射 说明书 5/10 页 8 CN 111190752 A 8 到新内存页的宿主机物理内存地址, 并修改表项的权限为可读。

33、可写。 本公开实施例中, 在第 二虚拟机加载或运行业务逻辑时, 会触发写内存操作, 在第二虚拟机启动阶段, 可以将第二 二维页表中的表项权限设置为只读, 即, 表项指向的宿主机物理内存不可写。 这时, 写内存 操作将引起异常, 出现虚拟机退出(vm-exit)事件, 该虚拟机退出事件被虚拟机管理程序 (hypervisor)或VMM截获, 需要重新在宿主机物理内存中分配新内存页, 将第二二维页表中 的表项指向新内存页, 同时将第二二维页表中的表项权限设置为可读可写, 以满足第二虚 拟机加载或运行其他业务的需求。 0045 作为一种实施方式, 第二虚拟机还具有转译后备缓冲器(Translatio。

34、n Look- aside Buffer: TLB), TLB用于第二虚拟机的虚拟机虚拟地址到宿主机物理地址的映射。 TLB 也称为快表, 通常设置在CPU芯片上, 存储虚拟地址到物理地址的映射的页表, CPU可以快速 访问TLB来获得内存物理地址。 需要注意的是, 在本公开的实施方式中, TLB存储了虚拟机虚 拟地址到宿主机物理地址的直接映射关系, 从而可以更快地访问宿主机物理内存。 0046 上述的方法还包括: 更新TLB, 使得与写内存操作相关的虚拟机虚拟地址映射到新 内存页的宿主机物理内存地址。 本公开实施例中, 通过TLB能够实现虚拟机的虚拟机虚拟地 址到宿主机物理地址的映射, 从而。

35、提升虚拟机访问宿主机的效率。 此外, 该TLB中的表项指 向新内存页的宿主机物理内存地址, 同时将该TLB中的表项设置为可读可写。 从而实现业务 虚拟机在加载业务阶段, 能够通过copy on write方式在宿主机物理内存中重新分配写内 存操作的新内存页, 完成业务加载内容。 0047 为了便于理解上述的虚拟机共享内核内存的方法过程, 下面结合图2-4所示的示 意图进行解释说明。 0048 如图3所示, 为本公开实施例提供的虚拟机启动时共享内核物理内存的结构示意 图。 其中, 图3中的母虚拟机是用于加载其内核到内存的虚拟机, 例如, 参照图2描述的第一 虚拟机, #1虚拟机和#2虚拟机是业务。

36、虚拟机, 例如, 参照图2描述的第二虚拟机。 作为示意 图, 图3仅示出了#1和#2两台虚拟机, 但是本领域技术人员应理解, 可以包括更多的业务虚 拟机, 例如, 上百甚至上千台虚拟机, 本发明不限于此。 0049 参照图3, 启动母虚拟机, 该母虚拟机具有用于母虚拟机物理地址到宿主机物理地 址的映射的二维页表(图3中未体现), 且该母虚拟机的内核被加载和锁定在宿主机物理内 存中, 用于共享。 0050 如图所示, #1虚拟机具有#1虚拟机页表311和#1二维页表313, 该#1虚拟机页表311 能够将#1虚拟机虚拟地址310映射到#1虚拟机物理地址312, 该#1二维页表313能够将#1虚 。

37、拟机物理地址312映射到宿主机物理地址, 具体地, 映射到母虚拟机的内核在宿主机物理内 存中的地址, 即共享内核的宿主机物理地址330。 该#1二维页表313中的每一个表项的权限 初始化为只读, 使得在#1虚拟机启动时只能读取#1二维页表313中的表项指向的宿主机物 理内存而不能修改, 并且当#1虚拟机尝试写内存时, 能够引起异常, 导致虚拟机退出事件 (例如, vm-exit), 由虚拟机监视器截获以进行处理。 0051 类似地, #2虚拟机具有#2虚拟机页表321和#2二维页表323, 该#2虚拟机页表321能 够将#2虚拟机虚拟地址320映射到#2虚拟机物理地址322, 该#2二维页表3。

38、23能够将#1虚拟 机物理地址322映射到宿主机物理地址, 具体地, 映射到母虚拟机的内核在宿主机物理内存 中的地址, 即共享内核的宿主机物理地址330。 其中, 该#2二维页表323中的每一个表项的权 说明书 6/10 页 9 CN 111190752 A 9 限初始化为只读, 使得在#2虚拟机启动时只能读取#2二维页表323中的表项指向的宿主机 物理内存而不能修改, 并且当#2虚拟机尝试写内存时, 能够引起异常, 导致虚拟机退出事 件, 由虚拟机监视器截获以进行处理。 0052 通过上述的图3所示的虚拟机运行时共享内核物理内存的结构示意图, #1虚拟机 和#2虚拟机, 在启动时共享母虚拟机。

39、的内核内存, 这样相同的内核代码段、 内核常量等内容 只需要占用一段内存, 第二虚拟机在启动时映射到同一内存区, 从而减少多虚拟机内核占 据的内存空间, 提升了宿主机中物理内存的利用率。 当一台物理机中运行成百上千个虚拟 机, 需要启动这些虚拟机时, 通过上述的方法, 该成百上千个虚拟机都能够映射到共享内核 的宿主机物理地址, 从而减少多虚拟机内核占据的内存空间。 例如, 若以10M内核大小为例, 多虚拟机的内核内存只要在宿主机物理内存中共享一份, 在几百乃至几千个轻量级虚拟机 的场景下, 可节省几G乃至几十G的内存。 0053 作为另一种实施方式, 如图3所示, #1虚拟机还可以具有TLB1。

40、 314, 该TLB1 314用 于#1虚拟机虚拟地址310到宿主机物理地址的映射, 该TLB1 314映射到母虚拟机的内核在 宿主机物理内存中的地址, 即共享内核的宿主机物理地址330, 使得#1虚拟机启动时, 能够 共享母虚拟机启动时的内核内存。 #2虚拟机还具有TLB2 324, 该TLB2 324用于#2虚拟机虚 拟地址320到宿主机物理地址的映射, 该TLB2映射到母虚拟机的内核在宿主机物理内存中 的地址, 即共享内核的宿主机物理地址330, 使得#2虚拟机启动时, 能够共享母虚拟机启动 时的内核内存。 其中, 在#1虚拟机和#2虚拟机启动阶段, 该TLB1 314和TLB2 324。

41、中的每一个 表项的权限初始化为只读, 使得在#1虚拟机和#2虚拟机启动时只能读取TLB1和TLB2中的表 项所指向的宿主机物理内存而不能修改, 并且当#1虚拟机和#2虚拟机尝试写内存时, 能够 引起异常, 导致虚拟机退出事件, 由虚拟机监视器截获以进行处理。 0054 如图4所示, 为本公开实施例提供的虚拟机启动后加载业务时分配物理内存地址 的示意图。 0055 如图所示, #2虚拟机具有#2虚拟机页表410和#2二维页表420, 该#2虚拟机页表410 能够将#2虚拟机虚拟地址430映射到#2虚拟机物理地址440, 该#2二维页表420能够将#1虚 拟机物理地址440映射到宿主机物理地址, 。

42、且能够映射到母虚拟机的内核在宿主机物理内 存中的地址, 即共享内核的宿主机物理地址450。 其中, 该#2二维页表420中的每一个表项的 权限初始化为只读, 使得在#2虚拟机启动时只能读取#2二维页表420中的表项所指向的宿 主机的物理内存而不能修改, 从而当#2虚拟机尝试写内存时, 能够引起异常, 导致虚拟机退 出事件, 由虚拟机监视器截获以进行处理。 0056 #2虚拟机的加载运行业务的过程: 当#2虚拟机加载运行业务逻辑时, 会触发写内 存操作, 此时由于#2二维页表420中的每一个表项的权限初始化为只读(R), 即, 表项指向的 宿主机物理内存不可写。 这时, 写内存操作将会导致vm-。

43、exit, 该vm-exit被hypervisor或 VMM截获, 此时hypervisor或VMM会按照写时拷贝(copy on write)方式在宿主机物理内存 中重新分配写内存操作的新内存页, 并将#2二维页表420对应的表项指向新内存页宿主机 物理地址460, 并将#2二维页表420中对应的表项的权限修改为可读可写(WR)。 从而实现业 务虚拟机在加载业务阶段, 能够通过copy on write在宿主机物理内存中重新分配写内存 操作的新内存页, 完成业务加载内容。 0057 作为另一种实施方式, #2虚拟机还具有TLB2 470, 当#2虚拟机加载运行业务逻辑 说明书 7/10 页 。

44、10 CN 111190752 A 10 时, 会触发写内存操作, 此时由于TLB2 470页表中的每一个表项的权限也初始为只读, 即, 表项指向的宿主机物理内存不可写。 这时, 写内存操作将会导致vm-exit, 该vm-exit被 hypervisor或VMM截获, 此时hypervisor或VMM会按照写时拷贝(copy on write)方式在宿 主机物理内存中重新分配写内存操作的新内存页, 并将TLB2 470对应的表项指向新内存也 宿主机物理地址, 并将TLB2 470中对应的表项的权限修改为可读可写。 从而实现业务虚拟 机在加载业务阶段, 能够通过copy on write方式在。

45、宿主机物理内存中重新分配写内存操 作的新内存页, 完成业务加载内容。 0058 下面将基于图1对应的虚拟机共享内核内存的方法的实施例中的相关描述对本公 开实施例提供的一种虚拟机共享内核内存的装置进行介绍。 以下实施例中与上述实施例相 关的技术术语、 概念等的说明可以参照上述的实施例。 0059 如图5所示, 为本公开实施例提供的一种虚拟机共享内核内存的装置的结构示意 图, 包括: 第一启动单元51、 第二启动单元52以及写内存操作处理单元53, 其中: 0060 第一启动单元51, 被配置用于启动第一虚拟机, 第一虚拟机具有用于第一虚拟机 物理地址到宿主机物理地址的映射的第一二维页表, 并且所。

46、述第一虚拟机的内核被加载和 锁定在宿主机物理内存中。 0061 作为一种实施方式, 可以将该第一虚拟机作为母虚拟机, 该母虚拟机中具有用于 母虚拟机物理地址到宿主机物理地址的映射的第一二维页表, 并且母虚拟机的内核被加载 和锁定在宿主机物理内存中, 这样其他进程需要分配物理内存时, 会分配其他的宿主机物 理内存, 而不会占用或覆盖母虚拟机的内核的宿主机物理内存。 0062 作为一种实施方式, 本公开实施例中通过内存锁定(mlock)方式启动母虚拟机, mlock机制会使得被锁定的物理内存在被解锁或进程退出前, 不会被内存页回收流程处理, 使得被锁定的物理内存, 不会被交换到其他设备, 当进程执。

47、行mlock操作时, 内核会立刻分 配物理内存。 由此能够实现母虚拟机的内核被加载和锁定在宿主机物理内存中。 0063 第二启动单元52, 被配置用于启动第二虚拟机, 第二虚拟机具有用于第二虚拟机 物理地址到宿主机物理地址的映射的第二二维页表, 第二二维页表映射到第一虚拟机的内 核在宿主机物理内存中的地址, 使得第一虚拟机和第二虚拟机共享内核内存。 0064 作为一种实施方式, 上述的第二虚拟机可以是业务虚拟机, 该业务虚拟机中具有 用于业务虚拟机物理地址到宿主机物理地址的映射的第二二维页表, 该第二二维页表映射 到母虚拟机的内核在宿主机物理内存中的地址, 从而使得业务虚拟机和母虚拟机能够共享。

48、 内核内存。 在一个实施例中, 第二虚拟机的二维页表可以与母虚拟机的二维页表一致或任 意其他方式, 只要相应的虚拟机虚拟地址可以映射到相同的宿主机物理内存地址。 0065 写内存操作处理单元53, 被配置用于当接收到所述第二虚拟机的写内存操作时, 在宿主机物理内存中分配用于写内存操作的新内存页, 并且更新第二二维页表。 0066 作为一种实施方式, 写内存操作处理单元53还被配置用于: 使得与写内存操作相 关的表项映射到所述新内存页的宿主机物理内存地址, 并修改所述表项的权限为可读可 写。 本公开实施例中, 在第二虚拟机加载或运行业务逻辑时, 会触发写内存操作, 在第二虚 拟机启动阶段, 可以。

49、将第二二维页表中的表项权限设置为只读, 即表项指向的宿主机物理 内存不可写。 这时, 写内存操作将引起异常, 出现vm-exit, 该vm-exit被hypervisor或VMM截 获, 需要重新在宿主机物理内存中分配新内存页, 将第二二维页表中的表项指向新内存页, 说明书 8/10 页 11 CN 111190752 A 11 同时将第二二维页表中的表项权限设置为可读可写, 以满足第二虚拟机加载或运行其他业 务的需求。 0067 本公开实施例中, 通过第二虚拟机在启动时共享第一虚拟机的内核内存, 这样相 同的内核代码段、 内核常量等内容只需要占用一段内存, 第二虚拟机在启动时映射到同一 内存。

50、区, 从而减少多虚拟机内核占据的内存空间, 提升了宿主机中物理内存的利用率。 0068 作为另一种实施方式, 第一启动单元51还被配置用于在启动第一虚拟机后暂停第 一虚拟机。 本公开实施例中, 在启动第一虚拟机后暂停第一虚拟机目的在于, 启动第一虚拟 机, 内核文件就加载到宿主机的物理内存中, 此时暂停第一虚拟机有利于后续启动的其他 虚拟机以其为模板复用相同内核, 减少多虚拟机内核占据的内存空间, 从而提升宿主机中 物理内存的利用率。 0069 作为另一种实施方式, 第二启动单元52还被配置用于将第二二维页表的每一个表 项的权限初始化为只读。 这里的初始化是指第二虚拟机启动阶段, 将第二二维页。

展开阅读全文
内容关键字: 虚拟机 共享 内核 内存 方法 装置
关于本文
本文标题:虚拟机共享内核内存的方法及装置.pdf
链接地址:https://www.zhuanlichaxun.net/pdf/10673621.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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