一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种云平台虚拟机内存缩容方法、装置及存储介质与流程

2022-11-09 21:49:12 来源:中国专利 TAG:


1.本发明涉及内存缩容技术领域,尤其涉及一种云平台虚拟机内存缩容方法、装置及存储介质。


背景技术:

2.通过虚拟机软件,可以在物理计算机上虚拟出多个虚拟机(virtual machine),这些虚拟机完全就像真正的计算机那样进行工作,例如,可以安装操作系统、安装应用程序、访问网络资源等。虚拟机是运行在物理计算机上的一个应用程序,但是对于虚拟机中运行的应用程序而言,虚拟机就是一个真正的计算机。
3.随着虚拟机技术的快速发展,与虚拟机有关的技术也越来越多,内存伸缩技术和设备直通技术是针对虚拟机内存的技术。其中,内存伸缩技术是指:可以将虚拟机的内存释放出来给宿主机(本文将虚拟机所在的物理计算机称为宿主机)使用,或者,可以将宿主机的内存给虚拟机使用,从而实现虚拟机内存的伸缩。目前,虚拟机缩放容多是通过修改虚拟机内存页表实现,其实现过程繁复。


技术实现要素:

4.为了解决上述技术问题或者至少部分地解决上述技术问题,本发明提供一种云平台虚拟机内存缩容方法、装置及存储介质。
5.第一方面,本发明提供一种云平台虚拟机内存缩容方法,包括:在虚拟机的操作系统中配置memtool,在虚拟机能够进行缩容且收到缩容指令时,memtool向内核申请缩容指令所指示缩容容量大小的目标客户机物理内存地址,所述目标客户机物理内存地址为虚拟机中连续或非连续空闲内存的客户机物理内存地址;memtool除实际占用客户机物理内存地址外虚拟占用所分配的目标客户机物理内存地址,memtool运行时仅利用实际占用的客户机物理内存地址,而被虚拟占用的目标客户机物理内存地址空闲;目标客户机物理内存地址转换得到对应的目标宿主机物理内存地址,将目标宿主机物理内存地址释放给宿主机使用。
6.更进一步地,虚拟机内存恢复时,将目标宿主机物理内存地址重新分配给相应的虚拟机,根据目标宿主机物理内存地址匹配待恢复内存的虚拟机,向待恢复内存的虚拟机的memtool发送内存恢复指令,memtool将虚拟占用的目标客户机物理内存地址释放给虚拟机的内核。
7.更进一步地,将目标宿主机物理内存地址从宿主机重新分配给相应的虚拟机前,宿主机对目标宿主机物理内存地址中的内存进行一次复写。
8.更进一步地,判断虚拟机能够进行缩容的方法包括:memtool响应缩容指令采集虚拟机自身的内核、应用程序当前内存占用情况,获取虚拟机自身的空闲内存容量;memtool从缩容指令获取缩容容量;memtool比较缩容容量是否大于各自虚拟机的空闲内存容量,若大于,则虚拟机memtool反馈该虚拟机不满足缩容条件,无法缩容;若小于,则memtool向内
核申请缩容指令所指示缩容容量大小的目标客户机物理内存地址。
9.更进一步地,所述目标客户机物理内存地址转换得到对应的目标宿主机物理内存地址包括:memtool将自身和虚拟机中内核、应用程序的内存占用情况反馈给虚拟机监控器,其中,memtool自身的内存占用情况包含memtool对目标客户机物理内存地址的虚拟占用情况和memtool对客户机物理内存地址的实际占用情况;虚拟机监控器基于预配的客户机物理内存地址空间和宿主机物理内存地址空间之间的映射关系,根据目标客户机物理内存地址得到目标宿主机物理内存地址。
10.更进一步地,监控宿主机所运行业务的内存占比,宿主机所运行业务占用内存占比在设定的第一持续时间内始终高于第一占比阈值时,自动触发给被内存缩容的虚拟机的memtool发送缩容指令。
11.更进一步地,宿主机所运行业务占用内存占比在设定的第二持续时间内始终低于第二占比阈值时,自动触发给被内存缩容的虚拟机的memtool发送内存恢复指令。
12.更进一步地,监控被内存缩容的虚拟机内核和应用程序内存占用情况,内存占用比例在设定的第三持续时间内始终高于第三占比阈值时,自动触发给该虚拟机的memtool发送内存恢复指令。
13.第二方面,本发明提供一种云平台虚拟机内存缩容装置,包括:处理单元,总线单元和存储单元,其中,所述存储单元包括物理内存,所述总线单元连接存储单元、处理单元,所述存储单元存储计算机程序,计算机程序被处理单元执行时实现所述的云平台虚拟机内存缩容方法。
14.第三方面,本发明提供一种实现云平台虚拟机内存缩容方法的存储介质,所述存储介质存储计算机程序,所述计算机程序被处理器执行时实现所述的云平台虚拟机内存缩容方法。
15.本发明实施例提供的上述技术方案与现有技术相比具有如下优点:
16.本发明的一种云平台虚拟机内存缩容方法通过memtool虚拟占用虚拟机的客户机物理内存地址的方式,一方面,通过内核给memtool分配客户机物理内存地址就能够实现对虚拟机内存的缩容,而内核分配内存是内核的基本功能,因此,本技术无需对内核本身和内核可分配的客户机物理内存地址进行任何的修改,仅构建memtool就能够实现内存的缩容;另一方面,通过memtool虚拟占用客户机物理内存地址,实际上是利用memtool对内存的占用来对每个虚拟机缩容释放给宿主机的客户机物理内存地址进行管理。
17.虚拟机内存恢复的时候,memtool释放客户机物理内存地址给内核,memtool释放的客户机物理内存地址与宿主机物理内存地址之间的映射关系并未发生任何改变。
附图说明
18.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
19.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
20.图1为本发明实施例提供的一种云平台虚拟机内存缩容方法中缩容过程的流程
图;
21.图2为本发明实施例提供的在虚拟机能够进行缩容且收到缩容指令时,memtool向内核申请缩容指令所指示缩容容量大小的目标客户机物理内存地址的流程图;
22.图3为本发明实施例提供的目标客户机物理内存地址转换得到对应的目标宿主机物理内存地址,将目标宿主机物理内存地址释放给宿主机使用的流程图;
23.图4为本发明实施例提供的一种云平台虚拟机内存缩容方法中恢复过程的流程图;
24.图5为发明实施例提供的一种云平台虚拟机内存缩容装置的示意图;
25.图6为本发明实施例提供的一种云平台虚拟机内存缩容方法架构示意图。
具体实施方式
26.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
27.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
28.hpervisor:计算虚拟化的软件层,即虚拟化层,也叫虚拟机监控器(virtual machine monitor,vmm),负责虚拟机操作系统的所有硬件资源调用。
29.虚拟内存virtual memory:操作系统中的内存管理很复杂,最重要的就是虚拟内存。虚拟内存一方面是用来扩充空间,使进程拥有“更多的内存”,另一方面,虚拟内存为每个进程提供了一个一致、私有的地址空间,让进程似乎在“独享主存”。在虚拟机中运行的操作系统的虚拟内存需要通过虚拟化技术来对virtual memory(虚拟内存)进行虚拟化。
30.在虚拟化的环境中,宿主机的物理内存供多个虚拟机操作系统同时使用,但真实的物理内存只有一份,无法满足每个虚拟机的物理地址从零开始的需求,在这种情况下,需要虚拟机监控器实现内存虚拟化。虚拟机监控器掌握宿主机实际的物理内存,并且需要分配和管理每个虚拟机的物理内存。虚拟机监控器为虚拟机提供客户机物理内存地址空间(guest physical address,gpa),虚拟机操作系统将gpa当做其物理内存地址,虚拟机使用宿主机的物理内存时,虚拟机监控器将gpa通过映射关系转换为宿主机物理内存地址空间(host physical address,hpa),然后根据hpa使用相应的物理内存。
31.内存虚拟化技术有一种如下完成gpa和hpa地址空间转换的方法:对于给定的任一虚拟机,维护其gpa和hpa之间的映射。虚拟机操作系统操作客户页表维护了虚拟机中使用的客户机虚拟地址(guest virtual address)到客户机物理地址的转换,虚拟机内存管理负责维护客户机物理地址到宿主机物理地址之间的动态映射关系,经过两层转换,虚拟机所使用的客户机虚拟地址均转换成物理处理器可以执行的宿主机物理地址。
32.实施例1
33.参阅图1所示,本发明提供一种云平台虚拟机内存缩容方法,包括:
34.s100,在虚拟机的操作系统中配置可虚拟占用内存的memtool。memtool除实际占用客户机物理内存地址外,还可虚拟占用的目标客户机物理内存地址,memtool运行时仅利用实际占用的客户机物理内存地址,而不占用memtool虚拟占用的内存,使得memtool虚拟占用的目标客户机物理内存地址所对应的宿主机物理内存地址空闲。虚拟机正常运行时,memtool虚拟占用极小的内存容量。参阅图6所示,所述memtool能够与虚拟机监控器通讯。
35.s200,在虚拟机能够进行缩容且收到缩容指令时,memtool向内核申请缩容指令所指示缩容容量大小的目标客户机物理内存地址。其中,所述目标客户机物理内存地址为虚拟机中连续或非连续空闲内存的客户机物理内存地址。
36.具体实施过程中,参阅图2所示,步骤s200包括:
37.s201,每个虚拟机的memtool响应缩容指令采集虚拟机自身的内核、应用程序当前内存占用情况,获取虚拟机自身的空闲内存容量。当虚拟机监控器给每个虚拟机的memtool发送内存缩容指令后,每个虚拟机的memtool响应缩容指令采集虚拟机自身的内核、应用程序当前内存占用情况,获取虚拟机自身的空闲内存容量。
38.具体实施过程中,在宿主机所运行业务需要更多内存时自动或人为配置虚拟机缩容时手动通过虚拟机监控器给每个虚拟机的memtool发送内存缩容指令。在一种实施例中,监控宿主机所运行业务的内存占比,宿主机所运行业务占用内存占比在设定的第一持续时间内始终高于第一占比阈值时,自动触发虚拟机监控器给每个虚拟机的memtool发送缩容指令。在一种实施例中,人为控制虚拟机监控器给每个虚拟机的memtool或者目标虚拟机的memtool发送缩容指令。
39.所述缩容指令中包含预设的缩容容量。在一种实施例中,虚拟机监控器按照预设的缩容容量配置生成相应的缩容指令。在一种实施例中,虚拟机监控器根据各虚拟机中空闲内存容量情况动态的配置缩容容量,具体的包括:虚拟机监控器获取各个虚拟机空闲内存容量,计算各个虚拟机空闲内存容量占总空闲内存容量的比例,根据业务运行需求获取需要释放的总缩容容量,总缩容容量加权所述比例得到每个虚拟机各自的缩容容量。
40.s202,每个虚拟机的memtool从缩容指令获取缩容容量并比较缩容容量与各自虚拟机的空闲内存容量。若一虚拟机的memtool检测到该虚拟机的空闲内存容量小于所述缩容容量时,执行s203,若一虚拟机的memtool检测到该虚拟机的空闲内存容量大于所述缩容容量时,则执行s204。
41.s203,memtool向虚拟机监控器反馈该虚拟机不满足缩容条件,无法缩容。
42.s204,memtool缩容指令所指示缩容容量大小的目标客户机物理内存地址。具体实施过程中,memtool向内核申请目标客户机物理内存地址,内核将总共为缩容容量大小的连续或非连续的空闲内存的客户机物理内存地址作为目标客户机物理内存地址分配给memtool。
43.s205,目标客户机物理内存地址被分配完成后,memtool将分配得到的目标客户机物理内存地址虚拟占用,以使虚拟机的内核无法将被虚拟占用的目标客户机物理内存地址分配给其他进程。
44.s300,目标客户机物理内存地址转换得到对应的目标宿主机物理内存地址,将目标宿主机物理内存地址释放给宿主机使用。
45.具体实施过程中,参阅图3所示,s300包括:
46.s301,memtool将自身和虚拟机中内核、应用程序的内存占用情况反馈给虚拟机监控器。其中,memtool自身的内存占用情况包含memtool对目标客户机物理内存地址的虚拟占用情况和memtool对客户机物理内存地址的的实际占用情况。
47.s302,虚拟机监控器根据每个虚拟机中memtool虚拟占用的目标客户机物理内存地址得到相应的宿主机物理内存地址,将得到的宿主机物理内存地址作为目标宿主机物理内存地址。具体实施过程中,虚拟机监控器根据memtool反馈的memtool对目标客户机物理内存地址的虚拟占用情况,得到被虚拟占用的目标客户机物理内存地址,虚拟机监控器通过预设的客户机物理内存地址与宿主机物理内存地址的映射关系得到相应的宿主机物理内存地址作为目标宿主机物理内存地址。
48.s303,虚拟机监控器将目标宿主机物理内存地址释放给宿主机。在虚拟机内存恢复前,宿主机可运用缩容虚拟机内存得到的目标宿主机物理内存地址进行业务处理。
49.参阅图4所示,本发明提供的一种云平台虚拟机内存缩容方法,还包括:
50.s10,虚拟机监控器将目标宿主机物理内存地址从宿主机重新分配给相应的虚拟机前,宿主机对目标宿主机物理内存地址中的内存进行一次复写,以保证内存数据的安全。
51.s20,虚拟机内存恢复时,将目标宿主机物理内存地址重新分配给相应的虚拟机,并向虚拟发送内存恢复指令。具体实施过程中,虚拟机监控器将目标宿主机物理内存地址从宿主机重新分配给相应的虚拟机,根据目标宿主机物理内存地址匹配待恢复内存的虚拟机,目标宿主机物理内存地址被重新分配给待恢复内存的虚拟机后,虚拟机监控器给虚拟机的memtool发送内存恢复指令。
52.s30,虚拟机的memtool接收并响应内存恢复指令,将自身虚拟占用的目标客户机物理内存地址释放给内核,使得内核可以将memtool释放的目标客户机物理内存地址对应的客户机虚拟内存地址分配给其他进程使用。
53.具体实施过程中,在宿主机所运行业务无需更多内存时自动,或人为配置虚拟机恢复时手动,或基于虚拟机业务的更多内存需求自动通过虚拟机监控器给虚拟机的memtool发送内存恢复指令。
54.在一种实施例中,宿主机所运行业务占用内存占比在设定的第二持续时间内始终低于第二占比阈值时,自动触发虚拟机监控器给被内存缩容的虚拟机的memtool发送内存恢复指令。
55.在一种实施例中,人为配置目标虚拟机内存恢复时,手动通过虚拟机监控器给被内存缩容的虚拟机的memtool发送内存恢复指令。
56.在一种实施例中,虚拟机监控器监控虚拟机内核和应用程序内存占用情况,内存占用比例在设定的第三持续时间内始终高于第三占比阈值时,自动触发虚拟机监控给该虚拟机的memtool发送内存恢复指令。达到将部分业务繁忙虚拟机内存恢复的效果,兼顾虚拟机和宿主机业务。
57.实施例2
58.参阅图5所示,本发明提供一种云平台虚拟机内存缩容装置,包括:处理单元,总线单元和存储单元,其中,所述存储单元包括物理内存,所述总线单元连接存储单元、处理单元,所述存储单元存储计算机程序,计算机程序被处理单元执行时实现所述的云平台虚拟
机内存缩容方法。
59.实施例3
60.本发明实施例提供一种实现云平台虚拟机内存缩容方法的存储介质,所述存储介质存储计算机程序,所述计算机程序被处理器执行时实现所述的云平台虚拟机内存缩容方法。
61.在本发明所提供的实施例中,应该理解到,所揭露的结构和方法,可以通过其它的方式实现。例如,以上所描述的结构实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,结构或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
62.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
63.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
64.以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献