虚拟机内存的调整方法和装置、存储介质及电子装置转让专利

申请号 : CN202310029630.0

文献号 : CN115794305B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 谢志勇张闯王敏

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本申请公开了一种虚拟机内存的调整方法和装置、存储介质及电子装置,涉及计算机领域,该虚拟机内存的调整方法包括:在多个虚拟机运行的过程中,获取多个虚拟机当前的整体内存状态,其中,多个虚拟机运行在同一主机下,整体内存状态用于指示多个虚拟机对主机所分配的内存的整体使用情况;根据整体内存状态和每个虚拟机的目标优先级为每个虚拟机分配目标内存状态,其中,目标优先级用于指示每个虚拟机在主机下使用内存的优先程度;根据目标内存状态调整每个虚拟机所分配到的内存,采用上述技术方案,解决了虚拟机内存分配与使用需求的匹配度低等问题。

权利要求 :

1.一种虚拟机内存的调整方法,其特征在于,包括:在多个虚拟机运行的过程中,获取所述多个虚拟机当前的整体内存状态,其中,所述多个虚拟机运行在同一主机下,所述整体内存状态用于指示所述多个虚拟机对所述主机所分配的内存的整体使用情况;

根据所述整体内存状态和每个虚拟机的目标优先级为所述每个虚拟机分配目标内存状态,其中,所述目标优先级用于指示所述每个虚拟机在所述主机下使用内存的优先程度;

根据所述目标内存状态调整所述每个虚拟机所分配到的内存;

其中,根据所述目标内存状态调整所述每个虚拟机所分配到的内存,包括:对于所述每个虚拟机作为目标虚拟机通过以下公式计算所述目标虚拟机内存调整量将所述目标虚拟机在所述主机下分配到的内存调整所述内存调整量;

其中,所述M1m为目标使用内存量,所述M2m为目标分配内存量,所述E(δ1m)为目标内存状态,所述目标分配内存量用于指示所述目标虚拟机在所述主机下当前分配到的内存大小,所述目标使用内存量用于指示所述目标虚拟机在当前分配到的内存中已使用的内存大小;

其中,根据使用总内存和分配总内存计算内存空闲比作为所述整体内存状态,包括:通过以下公式计算所述内存空闲比δ2:

其中,所述M1为所述使用总内存,所述M2为所述分配总内存;

其中,根据所述目标优先级确定所述每个虚拟机的调整比例,包括:通过以下公式计算所述调整比例K:

其中,PRm为第m个虚拟机的所述目标优先级;

其中,所述根据所述调整比例和所述整体内存状态确定所述目标内存状态,包括:通过以下公式计算第m个虚拟机的所述目标内存状态E(δ1m):E(δ1m)=Kδ2;

其中,所述δ2为所述整体内存状态,K为所述调整比例。

2.根据权利要求1所述的方法,其特征在于,所述获取所述多个虚拟机当前的整体内存状态,包括:读取所述每个虚拟机的内存量参数,得到内存量参数集合,其中,所述内存量参数集合用于记录具有对应关系的虚拟机和内存量参数;

根据所述内存量参数集合确定所述整体内存状态。

3.根据权利要求2所述的方法,其特征在于,所述读取所述每个虚拟机的内存量参数,得到内存量参数集合,包括:读取所述每个虚拟机的分配内存量和使用内存量作为所述内存量参数,其中,所述分配内存量用于指示所述每个虚拟机在所述主机下当前分配到的内存大小,所述使用内存量用于指示所述每个虚拟机在当前分配到的内存中已使用的内存大小;

构建具有对应关系的虚拟机、分配内存量和使用内存量得到所述内存量参数集合。

4.根据权利要求3所述的方法,其特征在于,所述根据所述内存量参数集合确定所述整体内存状态,包括:计算所述内存量参数集合中使用内存量的总和作为使用总内存;

计算所述内存量参数集合中分配内存量的总和作为分配总内存;

根据所述使用总内存和所述分配总内存计算内存空闲比作为所述整体内存状态。

5.根据权利要求4所述的方法,其特征在于,所述计算所述内存量参数集合中使用内存量的总和作为使用总内存,包括:通过以下公式计算所述使用总内存M1:

其中,所述多个虚拟机包括n个虚拟机,n为正整数,M1i为n个虚拟机中第i个虚拟机对应的使用内存量,i为正整数。

6.根据权利要求5所述的方法,其特征在于,所述计算所述内存量参数集合中分配内存量的总和作为分配总内存,包括:通过以下公式计算所述分配总内存M2:

其中,所述多个虚拟机包括n个虚拟机,n为正整数,M2i为n个虚拟机中第i个虚拟机对应的分配内存量,i为正整数。

7.根据权利要求1所述的方法,其特征在于,所述根据所述整体内存状态和每个虚拟机的目标优先级为所述每个虚拟机分配目标内存状态,包括:访问所述每个虚拟机的配置参数,得到所述每个虚拟机对应的所述目标优先级;

根据所述整体内存状态和所述目标优先级计算所述目标内存状态。

8.根据权利要求7所述的方法,其特征在于,所述根据所述整体内存状态和所述目标优先级计算所述目标内存状态,包括:根据所述目标优先级确定所述每个虚拟机的调整比例;

根据所述调整比例和所述整体内存状态确定所述目标内存状态。

9.根据权利要求1所述的方法,其特征在于,在所述根据所述整体内存状态和每个虚拟机的目标优先级为所述每个虚拟机分配目标内存状态之前,所述方法还包括:获取所述每个虚拟机处理的任务的目标任务属性参数,其中,所述目标任务属性参数用于指示处理所述任务需要的内存资源大小和算力资源大小;

根据所述目标任务属性参数配置所述每个虚拟机的优先级,得到所述目标优先级。

10.根据权利要求9所述的方法,其特征在于,所述根据所述目标任务属性参数配置所述每个虚拟机的优先级,得到所述目标优先级,包括:从具有对应关系的任务属性参数和优先级中确定所述目标任务属性参数对应的所述目标优先级;

将所述每个虚拟机的优先级参数配置为所述目标优先级。

11.根据权利要求1所述的方法,其特征在于,所述根据所述目标内存状态调整所述每个虚拟机所分配到的内存,包括:对于所述每个虚拟机作为目标虚拟机获取所述目标虚拟机当前的初始内存状态,其中,所述初始内存状态用于指示所述目标虚拟机当前的内存占用情况,所述初始内存状态包括所述目标分配内存量和所述目标使用内存量;

根据所述初始内存状态和所述目标内存状态确定内存调整量。

12.根据权利要求11所述的方法,其特征在于,所述对于所述每个虚拟机作为目标虚拟机获取所述目标虚拟机当前的初始内存状态,包括:从读取到的内存量参数集合中查找所述目标虚拟机对应的目标内存量参数,其中,所述内存量参数集合记录了具有对应关系的虚拟机和内存量参数,所述内存量参数集合用于确定所述整体内存状态。

13.根据权利要求12所述的方法,其特征在于,所述根据所述初始内存状态和所述目标内存状态确定内存调整量,包括:获取所述目标内存量参数所包括的目标分配内存量和目标使用内存量作为所述初始内存状态。

14.根据权利要求1所述的方法,其特征在于,所述将所述目标虚拟机在所述主机下分配到的内存调整所述内存调整量,包括:在所述内存调整量为正的情况下,将所述目标虚拟机在所述主机下分配到的内存扩大所述内存调整量所指示的内存调整值;

在所述内存调整量为负的情况下,将所述目标虚拟机在所述主机下分配到的内存缩减所述内存调整量所指示的内存调整值。

15.根据权利要求1所述的方法,其特征在于,所述将所述目标虚拟机在所述主机下分配到的内存调整所述内存调整量,包括:获取所述主机对应的调整量阈值;

比对所述内存调整量与所述调整量阈值;

在所述内存调整量大于或者等于所述调整量阈值的情况下,将所述目标虚拟机在所述主机下分配到的内存调整所述内存调整量;

在所述内存调整量小于所述调整量阈值的情况下,保持所述目标虚拟机在所述主机下分配到的内存不变。

16.一种虚拟机内存的调整装置,其特征在于,包括:第一获取模块,用于在多个虚拟机运行的过程中,获取所述多个虚拟机当前的整体内存状态,其中,所述多个虚拟机运行在同一主机下,所述整体内存状态用于指示所述多个虚拟机对所述主机所分配的内存的整体使用情况;

分配模块,用于根据所述整体内存状态和每个虚拟机的目标优先级为所述每个虚拟机分配目标内存状态,其中,所述目标优先级用于指示所述每个虚拟机在所述主机下使用内存的优先程度;

调整模块,用于根据所述目标内存状态调整所述每个虚拟机所分配到的内存;

其中,根据所述目标内存状态调整所述每个虚拟机所分配到的内存,包括:对于所述每个虚拟机作为目标虚拟机通过以下公式计算所述目标虚拟机内存调整量将所述目标虚拟机在所述主机下分配到的内存调整所述内存调整量;

其中,所述M1m为目标使用内存量,所述M2m为目标分配内存量,所述E(δ1m)为目标内存状态,所述目标分配内存量用于指示所述目标虚拟机在所述主机下当前分配到的内存大小,所述目标使用内存量用于指示所述目标虚拟机在当前分配到的内存中已使用的内存大小;

其中,根据使用总内存和分配总内存计算内存空闲比作为所述整体内存状态,包括:通过以下公式计算所述内存空闲比δ2:

其中,所述M1为所述使用总内存,所述M2为所述分配总内存;

其中,根据所述目标优先级确定所述每个虚拟机的调整比例,包括:通过以下公式计算所述调整比例K:

其中,PRm为第m个虚拟机的所述目标优先级;

其中,所述根据所述调整比例和所述整体内存状态确定所述目标内存状态,包括:通过以下公式计算第m个虚拟机的所述目标内存状态E(δ1m):E(δ1m)=Kδ2;

其中,所述δ2为所述整体内存状态,K为所述调整比例。

17.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行权利要求1至15中任一项所述的方法。

18.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行权利要求1至15中任一项所述的方法。

说明书 :

虚拟机内存的调整方法和装置、存储介质及电子装置

技术领域

[0001] 本申请实施例涉及计算机领域,具体而言,涉及一种虚拟机内存的调整方法和装置、存储介质及电子装置。

背景技术

[0002] 在现代数据中心,虚拟化技术在资源管理、服务器整合、提高资源利用率等方面发挥了巨大的作用,已成为云计算架构中关键的抽象层次和重要的支撑性技术。随着虚拟化技术的不断发展,云计算的不断使用,虚拟机与物理机的性能差距不断减少。随着虚拟化技术的发展,虚拟化系统的部署已经越来越多,由于虚拟机系统并非一直有效地利用其分配到的内存,并且宿主机上客户机一般也不会同时运行在较高的的内存使用率的条件下,所以虚拟化系统内存过载分配是可行的。
[0003] 在现有的云计算环境中,一般管理员静态指定虚拟机内存大小。当管理员给虚拟机分配了过多的内存,而虚拟机系统不需要使用这么多内存,这势必造成资源浪费。当用户的关键应用运行在虚拟化服务器上的虚拟机中时,某些特定时刻虚拟机需要较多的内存。虚拟机系统内存不足时,虚拟机系统的性能将严重下降,上述内存分配过程中,存在分配精准度较差的情况,也就是实际分配的内存与实际的使用需求不匹配,导致资源浪费或者分配不足的情况出现。
[0004] 针对相关技术中,虚拟机内存分配与使用需求的匹配度低等问题,缺少有效的解决方案。

发明内容

[0005] 本申请实施例提供了一种虚拟机内存的调整方法和装置、存储介质及电子装置,以至少解决相关技术中,虚拟机内存分配与使用需求的匹配度低等问题。
[0006] 根据本申请实施例的一个实施例,提供了一种虚拟机内存的调整方法,包括:
[0007] 在多个虚拟机运行的过程中,获取所述多个虚拟机当前的整体内存状态,其中,所述多个虚拟机运行在同一主机下,所述整体内存状态用于指示所述多个虚拟机对所述主机所分配的内存的整体使用情况;
[0008] 根据所述整体内存状态和每个虚拟机的目标优先级为所述每个虚拟机分配目标内存状态,其中,所述目标优先级用于指示所述每个虚拟机在所述主机下使用内存的优先程度;
[0009] 根据所述目标内存状态调整所述每个虚拟机所分配到的内存。
[0010] 可选的,所述获取所述多个虚拟机当前的整体内存状态,包括:
[0011] 读取所述每个虚拟机的内存量参数,得到内存量参数集合,其中,所述内存量参数集合用于记录具有对应关系的虚拟机和内存量参数;
[0012] 根据所述内存量参数集合确定所述整体内存状态。
[0013] 可选的,所述读取所述每个虚拟机的内存量参数,得到内存量参数集合,包括:
[0014] 读取所述每个虚拟机的分配内存量和使用内存量作为所述内存量参数,其中,所述分配内存量用于指示所述每个虚拟机在所述主机下当前分配到的内存大小,所述使用内存量用于指示所述每个虚拟机在当前分配到的内存中已使用的内存大小;
[0015] 构建具有对应关系的虚拟机、分配内存量和使用内存量得到所述内存量参数集合。
[0016] 可选的,所述根据所述内存量参数集合确定所述整体内存状态,包括:
[0017] 计算所述内存量参数集合中使用内存量的总和作为使用总内存;
[0018] 计算所述内存量参数集合中分配内存量的总和作为分配总内存;
[0019] 根据所述使用总内存和所述分配总内存计算内存空闲比作为所述整体内存状态。
[0020] 可选的,所述计算所述内存量参数集合中使用内存量的总和作为使用总内存,包括:
[0021] 通过以下公式计算所述使用总内存 :
[0022]
[0023] 其中,所述多个虚拟机包括n个虚拟机,n为正整数, 为n个虚拟机中第i个虚拟机对应的使用内存量,i为正整数。
[0024] 可选的,所述计算所述内存量参数集合中分配内存量的总和作为分配总内存,包括:
[0025] 通过以下公式计算所述分配总内存 :
[0026]
[0027] 其中,所述多个虚拟机包括n个虚拟机,n为正整数,  为n个虚拟机中第i个虚拟机对应的分配内存量,i为正整数。
[0028] 可选的,所述根据所述使用总内存和所述分配总内存计算内存空闲比作为所述整体内存状态,包括:
[0029] 通过以下公式计算所述内存空闲比 :
[0030]
[0031] 其中,所述 为所述使用总内存,所述 为所述分配总内存。
[0032] 可选的,所述根据所述整体内存状态和每个虚拟机的目标优先级为所述每个虚拟机分配目标内存状态,包括:
[0033] 访问所述每个虚拟机的配置参数,得到所述每个虚拟机对应的所述目标优先级;
[0034] 根据所述整体内存状态和所述目标优先级计算所述目标内存状态。
[0035] 可选的,所述根据所述整体内存状态和所述目标优先级计算所述目标内存状态,包括:
[0036] 根据所述目标优先级确定所述每个虚拟机的调整比例;
[0037] 根据所述调整比例和所述整体内存状态确定所述目标内存状态。
[0038] 可选的,所述根据所述目标优先级确定所述每个虚拟机的调整比例,包括:
[0039] 通过以下公式计算所述调整比例K:
[0040]
[0041] 其中, 为第m个虚拟机的所述目标优先级。
[0042] 可选的,所述根据所述调整比例和所述整体内存状态确定所述目标内存状态,包括:
[0043] 通过以下公式计算第m个虚拟机的所述目标内存状态
[0044] 其中,所述 为所述整体内存状态,K为所述调整比例。
[0045] 可选的,在所述根据所述整体内存状态和每个虚拟机的目标优先级为所述每个虚拟机分配目标内存状态之前,所述方法还包括:
[0046] 获取所述每个虚拟机处理的任务的目标任务属性参数,其中,所述目标任务属性参数用于指示处理所述任务需要的内存资源大小和算力资源大小;
[0047] 根据所述目标任务属性参数配置所述每个虚拟机的优先级,得到所述目标优先级。
[0048] 可选的,所述根据所述目标任务属性参数配置所述每个虚拟机的优先级,得到所述目标优先级,包括:
[0049] 从具有对应关系的任务属性参数和优先级中确定所述目标任务属性参数对应的所述目标优先级;
[0050] 将所述每个虚拟机的优先级参数配置为所述目标优先级。
[0051] 可选的,所述根据所述目标内存状态调整所述每个虚拟机所分配到的内存,包括:
[0052] 对于所述每个虚拟机作为目标虚拟机获取所述目标虚拟机当前的初始内存状态,其中,所述初始内存状态用于指示所述目标虚拟机当前的内存占用情况;
[0053] 根据所述初始内存状态和所述目标内存状态确定内存调整量;
[0054] 将所述目标虚拟机在所述主机下分配到的内存调整所述内存调整量。
[0055] 可选的,所述对于所述每个虚拟机作为目标虚拟机获取所述目标虚拟机当前的初始内存状态,包括:
[0056] 从读取到的内存量参数集合中查找所述目标虚拟机对应的目标内存量参数,其中,所述内存量参数集合记录了具有对应关系的虚拟机和内存量参数,所述内存量参数集合用于确定所述整体内存状态。
[0057] 可选的,所述根据所述初始内存状态和所述目标内存状态确定内存调整量,包括:
[0058] 获取所述目标内存量参数所包括的目标分配内存量和目标使用内存量作为所述初始内存状态,其中,所述目标分配内存量用于指示所述目标虚拟机在所述主机下当前分配到的内存大小,所述目标使用内存量用于指示所述目标虚拟机在当前分配到的内存中已使用的内存大小;
[0059] 根据所述目标分配内存量,所述目标使用内存量和所述目标内存状态计算所述内存调整量。
[0060] 可选的,所述根据所述目标分配内存量,所述目标使用内存量和所述目标内存状态计算所述内存调整量,包括:
[0061] 通过以下公式计算所述内存调整量
[0062]
[0063] 其中,所述 为所述目标使用内存量,所述 为所述目标分配内存量,所述为所述目标内存状态。
[0064] 可选的,所述将所述目标虚拟机在所述主机下分配到的内存调整所述内存调整量,包括:
[0065] 在所述内存调整量为正的情况下,将所述目标虚拟机在所述主机下分配到的内存扩大所述内存调整量所指示的内存调整值;
[0066] 在所述内存调整量为负的情况下,将所述目标虚拟机在所述主机下分配到的内存缩减所述内存调整量所指示的内存调整值。
[0067] 可选的,所述将所述目标虚拟机在所述主机下分配到的内存调整所述内存调整量,包括:
[0068] 获取所述主机对应的调整量阈值;
[0069] 比对所述内存调整量与所述调整量阈值;
[0070] 在所述内存调整量大于或者等于所述调整量阈值的情况下,将所述目标虚拟机在所述主机下分配到的内存调整所述内存调整量;
[0071] 在所述内存调整量小于所述调整量阈值的情况下,保持所述目标虚拟机在所述主机下分配到的内存不变。
[0072] 根据本申请实施例的另一个实施例,还提供了一种虚拟机内存的调整装置,包括:
[0073] 第一获取模块,用于在多个虚拟机运行的过程中,获取所述多个虚拟机当前的整体内存状态,其中,所述多个虚拟机运行在同一主机下,所述整体内存状态用于指示所述多个虚拟机对所述主机所分配的内存的整体使用情况;
[0074] 分配模块,用于根据所述整体内存状态和每个虚拟机的目标优先级为所述每个虚拟机分配目标内存状态,其中,所述目标优先级用于指示所述每个虚拟机在所述主机下使用内存的优先程度;
[0075] 调整模块,用于根据所述目标内存状态调整所述每个虚拟机所分配到的内存。
[0076] 根据本申请实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述虚拟机内存的调整方法。
[0077] 根据本申请实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的虚拟机内存的调整方法。
[0078] 在本申请实施例中,在多个虚拟机运行的过程中,获取多个虚拟机当前的整体内存状态,其中,多个虚拟机运行在同一主机下,整体内存状态用于指示多个虚拟机对主机所分配的内存的整体使用情况;根据整体内存状态和每个虚拟机的目标优先级为每个虚拟机分配目标内存状态,其中,目标优先级用于指示每个虚拟机在主机下使用内存的优先程度;根据目标内存状态调整每个虚拟机所分配到的内存,即,在多个虚拟机运行在同一主机下的过程中,首先,获取多个虚拟机当前的整体内存状态,整体内存状态用于指示多个虚拟机对主机所分配的内存的整体使用情况;然后,根据整体内存状态和每个虚拟机的目标优先级为每个虚拟机分配目标内存状态,目标优先级用于指示每个虚拟机在主机下使用内存的优先程度;根据目标内存状态调整每个虚拟机所分配到的内存,也就是说,每个虚拟机所分配到的内存与每个虚拟机在主机下使用内存的优先程度匹配。采用上述技术方案,解决了相关技术中,虚拟机内存分配与使用需求的匹配度低等问题,实现了提高虚拟机内存分配与使用需求的匹配度的技术效果。

附图说明

[0079] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
[0080] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0081] 图1是根据本申请实施例的一种虚拟机内存的调整方法的硬件环境示意图;
[0082] 图2是根据本申请实施例的一种虚拟机内存的调整方法的流程图;
[0083] 图3是根据本申请实施例的一种内存量参数集合的生成方法的示意图;
[0084] 图4是根据本申请实施例的一种虚拟机内存的调整流程的示意图;
[0085] 图5是根据本申请实施例的一种虚拟机内存的调整装置的结构框图。

具体实施方式

[0086] 为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0087] 需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0088] 本申请实施例所提供的方法实施例可以在计算机终端、设备终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是根据本申请实施例的一种虚拟机内存的调整方法的硬件环境示意图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,在一个示例性实施例中,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示等同功能或比图1所示功能更多的不同的配置。
[0089] 存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的虚拟机内存的调整方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器
102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0090] 传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
[0091] 在本实施例中提供了一种虚拟机内存的调整方法,应用于上述计算机终端,图2是根据本申请实施例的一种虚拟机内存的调整方法的流程图,如图2所示,该流程包括如下步骤:
[0092] 步骤S202,在多个虚拟机运行的过程中,获取所述多个虚拟机当前的整体内存状态,其中,所述多个虚拟机运行在同一主机下,所述整体内存状态用于指示所述多个虚拟机对所述主机所分配的内存的整体使用情况;
[0093] 步骤S204,根据所述整体内存状态和每个虚拟机的目标优先级为所述每个虚拟机分配目标内存状态,其中,所述目标优先级用于指示所述每个虚拟机在所述主机下使用内存的优先程度;
[0094] 步骤S206,根据所述目标内存状态调整所述每个虚拟机所分配到的内存。
[0095] 通过上述步骤,在多个虚拟机运行在同一主机下的过程中,首先,获取多个虚拟机当前的整体内存状态,整体内存状态用于指示多个虚拟机对主机所分配的内存的整体使用情况;然后,根据整体内存状态和每个虚拟机的目标优先级为每个虚拟机分配目标内存状态,目标优先级用于指示每个虚拟机在主机下使用内存的优先程度;根据目标内存状态调整每个虚拟机所分配到的内存,也就是说,每个虚拟机所分配到的内存与每个虚拟机在主机下使用内存的优先程度匹配。采用上述技术方案,解决了相关技术中,虚拟机内存分配与使用需求的匹配度低等问题,实现了提高虚拟机内存分配与使用需求的匹配度的技术效果。
[0096] 当前为了解决内存分配过程中,存在分配精准度较差的情况,也就是实际分配的内存与实际的使用需求不匹配,导致资源浪费或者分配不足的情况出现,主流方案由管理员关闭虚拟机重新调整虚拟机的内存大小配置;也有技术方案通过给虚拟机的内存使用量设定上限阈值和下限阈值,实时监控虚拟机的运行状态获取内存使用量,当内存使用量大于上限阈值时线上动态扩展虚拟机内存,当内存使用量小于下限阈值则进行线上收缩虚拟机内存。
[0097] 但是,管理员手动调整方案不能实时线上动态的调整各虚拟机的内存,而设定上限、下限阈值动态调整的方案在多个虚拟机内存需要调整的时候,当空闲内存不够时,按优先级和幅值进行调整,由于优先级和幅值也是静态设置的,存在虚拟机需要多次调整扩展才能满足虚拟机需要的情况以及优先级反转的情况,即由于优先级低的虚拟机提前调整占用内存但未超过上限,后面需要内存扩展的优先级高的虚拟机却得不到内存。
[0098] 在上述步骤S202提供的技术方案中,多个虚拟机运行在同一主机下,因此在分配之前,首选获取多个虚拟机当前的整体内存状态,根据整体内存状态可以知道当前多个虚拟机对所述主机所分配的内存的整体使用情况。
[0099] 在一个示例性实施例中,可以但不限于通过以下方式获取所述多个虚拟机当前的整体内存状态:读取所述每个虚拟机的内存量参数,得到内存量参数集合,其中,所述内存量参数集合用于记录具有对应关系的虚拟机和内存量参数;根据所述内存量参数集合确定所述整体内存状态。
[0100] 可选地,在本实施例中,图3是根据本申请实施例的一种内存量参数集合的生成方法的示意图,如图3所示,虚拟机1至虚拟机n运行在同一主机下,读取每一个虚拟机的内存参数,得到内存量参数集合(内存量参数1至内存量参数n),根据内存量参数集合可以确定整体内存状态。
[0101] 在一个示例性实施例中,可以但不限于通过以下方式读取所述每个虚拟机的内存量参数,得到内存量参数集合:读取所述每个虚拟机的分配内存量和使用内存量作为所述内存量参数,其中,所述分配内存量用于指示所述每个虚拟机在所述主机下当前分配到的内存大小,所述使用内存量用于指示所述每个虚拟机在当前分配到的内存中已使用的内存大小;构建具有对应关系的虚拟机、分配内存量和使用内存量得到所述内存量参数集合。
[0102] 可选地,在本实施例中,内存量参数可以但不限于包括每个虚拟机的分配内存量和使用内存量,分配内存量可以用于指示所述每个虚拟机在所述主机下当前分配到的内存大小,使用内存量用于指示所述每个虚拟机在当前分配到的内存中已使用的内存大小,因此根据内存量参数集合可以知道每一个虚拟机对应的分配内存量和使用内存量。
[0103] 在一个示例性实施例中,可以但不限于通过以下方式根据所述内存量参数集合确定所述整体内存状态:计算所述内存量参数集合中使用内存量的总和作为使用总内存;计算所述内存量参数集合中分配内存量的总和作为分配总内存;根据所述使用总内存和所述分配总内存计算内存空闲比作为所述整体内存状态。
[0104] 可选地,在本实施例中,整体内存状态可以但不限于用于指示整体内存的使用情况,因此可以将使用总内存和分配总内存计算内存空闲比作为所述整体内存状态。
[0105] 在一个示例性实施例中,可以但不限于通过以下方式计算所述内存量参数集合中使用内存量的总和作为使用总内存:通过以下公式计算所述使用总内存 :
[0106]
[0107] 其中,所述多个虚拟机包括n个虚拟机,n为正整数, 为n个虚拟机中第i个虚拟机对应的使用内存量,i为正整数。
[0108] 可选地,在本实施例中,可以将内存量参数集合中使用内存量的总和作为使用总内存,也就是将每一个虚拟机的使用内存量进行累加,得到使用总内存 。
[0109] 在一个示例性实施例中,可以但不限于通过以下方式计算所述内存量参数集合中分配内存量的总和作为分配总内存:通过以下公式计算所述分配总内存 :
[0110]
[0111] 其中,所述多个虚拟机包括n个虚拟机,n为正整数, 为n个虚拟机中第i个虚拟机对应的分配内存量,i为正整数。
[0112] 可选地,在本实施例中,可以将内存量参数集合中分配内存量的总和作为分配总内存,也就是将每一个虚拟机的分配内存量进行累加,得到分配总内存 。
[0113] 在一个示例性实施例中,可以但不限于通过以下方式根据所述使用总内存和所述分配总内存计算内存空闲比作为所述整体内存状态:通过以下公式计算所述内存空闲比 :
[0114]
[0115] 其中,所述 为所述使用总内存,所述 为所述分配总内存。
[0116] 可选地,在本实施例中,内存空闲比 可以指示整体内存状态,内存空闲比 越大,即表征当前整体内存状态为内存使用率较低,整体处于较为空闲的状态,内存空闲比越小,即表征当前整体内存状态为内存使用率较高,整体处于较为忙碌的状态。
[0117] 在上述步骤S204提供的技术方案中,整体内存状态可以指示整体所包括的多个虚拟机的内存平均使用情况,也就是说,整体内存状态是指示平均内存使用情况的一个指标,但是如果仅仅将每一个虚拟机都调整至整体内存状态是不合适的,更为合理的一种方式是基于整体内存状态,并考虑各自虚拟机的目标优先级进行针对性调整,比如,某些目标优先级更高的虚拟机,需要使用更多的内存,因此可以在整体内存状态指示的平均内存使用指标基础上分配更多的内存,而对于目标优先级更低的虚拟机,不需要使用更多的内存,因此可以将其维持在整体内存状态。
[0118] 在一个示例性实施例中,可以但不限于通过以下方式根据所述整体内存状态和每个虚拟机的目标优先级为所述每个虚拟机分配目标内存状态:访问所述每个虚拟机的配置参数,得到所述每个虚拟机对应的所述目标优先级;根据所述整体内存状态和所述目标优先级计算所述目标内存状态。
[0119] 可选地,在本实施例中,同一主机下运行多个虚拟机,每一个虚拟机对应执行的任务和功能可能不同,因此内存的使用需求也不同,可以预先配置每个虚拟机的配置参数,对于处理的任务内存的使用需求更大的虚拟机可以配置更高的目标优先级。
[0120] 在一个示例性实施例中,可以但不限于通过以下方式根据所述整体内存状态和所述目标优先级计算所述目标内存状态:根据所述目标优先级确定所述每个虚拟机的调整比例;根据所述调整比例和所述整体内存状态确定所述目标内存状态。
[0121] 可选地,在本实施例中,对于多个虚拟机中的每一个虚拟机进行内存调整的过程中,都是基于整体内存状态进行比例调整,其中,调整比例的大小与各自的目标优先级相关,目标优先级较低,调整比例较小,目标优先级较高,调整比例较大。
[0122] 在一个示例性实施例中,可以但不限于通过以下方式根据所述目标优先级确定所述每个虚拟机的调整比例:通过以下公式计算所述调整比例K:
[0123]
[0124] 其中, 为第m个虚拟机的所述目标优先级。
[0125] 可选地,在本实施例中,在目标优先级 趋近于0的情况下,调整比例K趋近于1,在目标优先级 趋近于正无穷的情况下,调整比例K趋近于1.5。
[0126] 可选地,在本实施例中,公式的实际可以根据实际需求进行调整,目的在于控制调整比例的大小与各自的目标优先级挂钩,目标优先级较低,调整比例较小,目标优先级较高,调整比例较大。
[0127] 在一个示例性实施例中,可以但不限于通过以下方式根据所述调整比例和所述整体内存状态确定所述目标内存状态:通过以下公式计算第m个虚拟机的所述目标内存状态:
[0128]
[0129] 其中,所述 为所述整体内存状态,K为所述调整比例。
[0130] 可选地,在本实施例中,调整比例是基于整体内存状态而言的,当调整比例为1的情况下,目标内存状态与整体内存状态一致,当调整比例大于1的情况下,目标内存状态大于整体内存状态,分配内存高于整体内存状态。
[0131] 在一个示例性实施例中,在所述根据所述整体内存状态和每个虚拟机的目标优先级为所述每个虚拟机分配目标内存状态之前,还可以但不限于包括以下方式获取所述每个虚拟机处理的任务的目标任务属性参数,其中,所述目标任务属性参数用于指示处理所述任务需要的内存资源大小和算力资源大小;根据所述目标任务属性参数配置所述每个虚拟机的优先级,得到所述目标优先级。
[0132] 可选地,在本实施例中,目标优先级的配置方式是根据虚拟机处理任务需要的内存资源大小和算力资源大小确定出的,当虚拟机处理任务需要的内存资源大小和算力资源大小较大的情况下,可以配置更高的目标优先级,当虚拟机处理任务需要的内存资源大小和算力资源大小较小的情况下,可以配置更低的目标优先级。
[0133] 在一个示例性实施例中,可以但不限于通过以下方式根据所述目标任务属性参数配置所述每个虚拟机的优先级,得到所述目标优先级:从具有对应关系的任务属性参数和优先级中确定所述目标任务属性参数对应的所述目标优先级;将所述每个虚拟机的优先级参数配置为所述目标优先级。
[0134] 可选地,在本实施例中,在已知目标任务属性参数的情况下,可以从具有对应关系的任务属性参数和优先级中确定目标任务属性参数对应的目标优先级。
[0135] 在上述步骤S206提供的技术方案中,在确定目标内存状态之后,将每个虚拟机所分配到的内存调整至目标内存状态即可。
[0136] 在一个示例性实施例中,可以但不限于通过以下方式根据所述目标内存状态调整所述每个虚拟机所分配到的内存:对于所述每个虚拟机作为目标虚拟机获取所述目标虚拟机当前的初始内存状态,其中,所述初始内存状态用于指示所述目标虚拟机当前的内存占用情况;根据所述初始内存状态和所述目标内存状态确定内存调整量;将所述目标虚拟机在所述主机下分配到的内存调整所述内存调整量。
[0137] 可选地,在本实施例中,多个虚拟机运行在同一主机上,获取目标虚拟机当前的初始内存状态,根据初始内存状态可以知道目标虚拟机当前的内存占用情况,经过上述目标内存状态可以确定出内存调整量;将所述目标虚拟机在所述主机下分配到的内存调整所述内存调整量。即可以保证目标虚拟机达到目标内存状态。
[0138] 在一个示例性实施例中,可以但不限于通过以下方式对于所述每个虚拟机作为目标虚拟机获取所述目标虚拟机当前的初始内存状态:从读取到的内存量参数集合中查找所述目标虚拟机对应的目标内存量参数,其中,所述内存量参数集合记录了具有对应关系的虚拟机和内存量参数,所述内存量参数集合用于确定所述整体内存状态。
[0139] 可选地,在本实施例中,由于内存量参数集合记录了具有对应关系的虚拟机和内存量参数,因此可以从读取到的内存量参数集合中查找目标虚拟机对应的目标内存量参数,进而获取目标虚拟机当前的初始内存状态。
[0140] 在一个示例性实施例中,可以但不限于通过以下方式根据所述初始内存状态和所述目标内存状态确定内存调整量:获取所述目标内存量参数所包括的目标分配内存量和目标使用内存量作为所述初始内存状态,其中,所述目标分配内存量用于指示所述目标虚拟机在所述主机下当前分配到的内存大小,所述目标使用内存量用于指示所述目标虚拟机在当前分配到的内存中已使用的内存大小;根据所述目标分配内存量,所述目标使用内存量和所述目标内存状态计算所述内存调整量。
[0141] 可选地,在本实施例中,目标内存状态指示目标虚拟机待达到的内存状态,根据目标分配内存量,目标使用内存量和目标内存状态计算内存调整量。
[0142] 在一个示例性实施例中,可以但不限于通过以下方式根据所述目标分配内存量,所述目标使用内存量和所述目标内存状态计算所述内存调整量:通过以下公式计算所述内存调整量
[0143]
[0144] 其中,所述 为所述目标使用内存量,所述 为所述目标分配内存量,所述为所述目标内存状态。
[0145] 可选地,在本实施例中,内存调整量 为虚拟机期望扩大或缩减的内存量。
[0146] 在一个示例性实施例中,可以但不限于通过以下方式将所述目标虚拟机在所述主机下分配到的内存调整所述内存调整量:在所述内存调整量为正的情况下,将所述目标虚拟机在所述主机下分配到的内存扩大所述内存调整量所指示的内存调整值;在所述内存调整量为负的情况下,将所述目标虚拟机在所述主机下分配到的内存缩减所述内存调整量所指示的内存调整值。
[0147] 可选地,在本实施例中,内存调整量 为虚拟机期望扩大或缩减的内存量,在所述内存调整量为正的情况下,将所述目标虚拟机在所述主机下分配到的内存扩大所述内存调整量所指示的内存调整值,在所述内存调整量为负的情况下,将所述目标虚拟机在所述主机下分配到的内存缩减所述内存调整量所指示的内存调整值。
[0148] 在一个示例性实施例中,可以但不限于通过以下方式将所述目标虚拟机在所述主机下分配到的内存调整所述内存调整量:获取所述主机对应的调整量阈值;比对所述内存调整量与所述调整量阈值;在所述内存调整量大于或者等于所述调整量阈值的情况下,将所述目标虚拟机在所述主机下分配到的内存调整所述内存调整量;在所述内存调整量小于所述调整量阈值的情况下,保持所述目标虚拟机在所述主机下分配到的内存不变。
[0149] 可选地,在本实施例中,由于经过评估计算出的内存调整量 可能达不到最小内存调整值MAmin,因此,需要进行比较判断。当期望扩大或缩减的内存量大小大于等于MAmin,才需要进行调整。因此,虚拟机内存调整量为:
[0150]
[0151] 为了更好的理解上述虚拟机内存的调整的过程,以下再结合可选实施例对上述虚拟机内存的调整流程进行说明,但不用于限定本申请实施例的技术方案。
[0152] 在本实施例中提供了一种虚拟机内存的调整方法,图4是根据本申请实施例的一种虚拟机内存的调整流程的示意图,如图4所示,主要包括如下步骤:
[0153] 步骤S401:配置步骤,读取各虚拟机设定的内存容量初始值(初始内存状态),配置虚拟机优先级PRm(1至10)、最小内存调整值MAmin和调整时间间隔T,假设是物理主机上所有可用内存,V是所有运行的虚拟机的集合,n为虚拟机数量;
[0154] 步骤S402:数据采集步骤,实时收集各虚拟机使用内存的大小以及当前内存容量的数据,虚拟机VMm使用内存大小为M1m和当前容量M2m;
[0155] 步骤S403:评估步骤,计算所有虚拟机的整体的内存空闲比和各虚拟机的内存空闲比;
[0156] 步骤S404:输出步骤,由于经过评估计算出的虚拟机VMm期望扩大或缩减的内存量大小 可能达不到最小内存调整值MAmin,因此,需要进行比较判断。当期望扩大或缩减的内存量大小 大于等于MAmin,才需要进行调整;
[0157] 步骤S405:调配步骤,根据评估步骤中计算虚拟机VMm实际应扩大或缩减的内存量 ,由虚拟机内存管理器发送指令给虚拟机监控器对所述虚拟机进行内存调整。
[0158] 本发明多个虚拟机运行的主机使用类Unix系统(操作系统),包括但不限于FreeBSD、OpenBSD、Solaris和Linux等。宿主机的虚拟化平台为QEMU‑KVM。虚拟机内存动态管理器是基于libvirt(虚拟化管理软件)虚拟化库提供的接口开发的,由于libvirt是一个管理虚拟化平台的开源API,因此本发明同时也支持QEMU(虚拟操作系统模拟器)、KVM(Keyboard Video Mouse,键盘、视频或鼠标)、VMware等支持libvirt的一系列虚拟化平台。
[0159] 虚拟机内存动态管理器包括配置模块、采集模块、评估模块、输出模块、执行模块。配置模块负责读取各虚拟机的配置文件获取虚拟机的内存容量初始大小,读取最小内存调整值MAmin和调整时间间隔T;采集模块通过libvirt接口周期读取各虚拟机的当前内容容量以及实际使用内存的大小;评估模块以时间间隔T周期进行运算计算所有虚拟机的整体的内存空闲比和各虚拟机的内存空闲比、虚拟机VMi期望扩大或缩减的内存量 输出模块将虚拟机VMi期望扩大或缩减的内存量 与MAmin进行比较,得到实际扩大或缩减的内存量;控制模块当发现某个虚拟机的实际扩大或缩减的内存量不为零需要调整内存时,发送指令通过libvirt接口和内存气球技术,扩展或缩小虚拟机的内存。
[0160] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。
[0161] 图5是根据本申请实施例的一种虚拟机内存的调整装置的结构框图;如图5所示,包括:
[0162] 第一获取模块502,用于在多个虚拟机运行的过程中,获取所述多个虚拟机当前的整体内存状态,其中,所述多个虚拟机运行在同一主机下,所述整体内存状态用于指示所述多个虚拟机对所述主机所分配的内存的整体使用情况;
[0163] 分配模块504,用于根据所述整体内存状态和每个虚拟机的目标优先级为所述每个虚拟机分配目标内存状态,其中,所述目标优先级用于指示所述每个虚拟机在所述主机下使用内存的优先程度;
[0164] 调整模块506,用于根据所述目标内存状态调整所述每个虚拟机所分配到的内存。
[0165] 需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
[0166] 通过上述实施例,在多个虚拟机运行在同一主机下的过程中,首先,获取多个虚拟机当前的整体内存状态,整体内存状态用于指示多个虚拟机对主机所分配的内存的整体使用情况;然后,根据整体内存状态和每个虚拟机的目标优先级为每个虚拟机分配目标内存状态,目标优先级用于指示每个虚拟机在主机下使用内存的优先程度;根据目标内存状态调整每个虚拟机所分配到的内存,也就是说,每个虚拟机所分配到的内存与每个虚拟机在主机下使用内存的优先程度匹配。采用上述技术方案,解决了相关技术中,虚拟机内存分配与使用需求的匹配度低等问题,实现了提高虚拟机内存分配与使用需求的匹配度的技术效果。
[0167] 在一个可选的实施例中,所述第一获取模块,包括:
[0168] 读取单元,用于读取所述每个虚拟机的内存量参数,得到内存量参数集合,其中,所述内存量参数集合用于记录具有对应关系的虚拟机和内存量参数;
[0169] 第一确定单元,用于根据所述内存量参数集合确定所述整体内存状态。
[0170] 在一个可选的实施例中,所述读取单元,还用于:
[0171] 读取所述每个虚拟机的分配内存量和使用内存量作为所述内存量参数,其中,所述分配内存量用于指示所述每个虚拟机在所述主机下当前分配到的内存大小,所述使用内存量用于指示所述每个虚拟机在当前分配到的内存中已使用的内存大小;
[0172] 构建具有对应关系的虚拟机、分配内存量和使用内存量得到所述内存量参数集合。
[0173] 在一个可选的实施例中,所述第一确定单元,还用于:
[0174] 计算所述内存量参数集合中使用内存量的总和作为使用总内存;
[0175] 计算所述内存量参数集合中分配内存量的总和作为分配总内存;
[0176] 根据所述使用总内存和所述分配总内存计算内存空闲比作为所述整体内存状态。
[0177] 在一个可选的实施例中,所述第一确定单元,还用于:
[0178] 通过以下公式计算所述使用总内存 :
[0179]
[0180] 其中,所述多个虚拟机包括n个虚拟机,n为正整数, 为n个虚拟机中第i个虚拟机对应的使用内存量,i为正整数。
[0181] 在一个可选的实施例中,所述第一确定单元,还用于:
[0182] 通过以下公式计算所述分配总内存 :
[0183]
[0184] 其中,所述多个虚拟机包括n个虚拟机,n为正整数, 为n个虚拟机中第i个虚拟机对应的分配内存量,i为正整数。
[0185] 在一个可选的实施例中,所述第一确定单元,还用于:
[0186] 通过以下公式计算所述内存空闲比 :
[0187]
[0188] 其中,所述 为所述使用总内存,所述 为所述分配总内存。
[0189] 在一个可选的实施例中,所述分配模块,包括:
[0190] 访问单元,用于访问所述每个虚拟机的配置参数,得到所述每个虚拟机对应的所述目标优先级;
[0191] 计算单元,用于根据所述整体内存状态和所述目标优先级计算所述目标内存状态。
[0192] 在一个可选的实施例中,所述计算单元,还用于:
[0193] 根据所述目标优先级确定所述每个虚拟机的调整比例;
[0194] 根据所述调整比例和所述整体内存状态确定所述目标内存状态。
[0195] 在一个可选的实施例中,所述计算单元,还用于:
[0196] 通过以下公式计算所述调整比例K:
[0197]
[0198] 其中, 为所述目标优先级。
[0199] 在一个可选的实施例中,所述计算单元,还用于:
[0200] 通过以下公式计算所述目标内存状态 :
[0201] 其中,所述 为所述整体内存状态,K为所述调整比例。
[0202] 在一个可选的实施例中,所述装置还包括:
[0203] 第二获取模块,用于在所述根据所述整体内存状态和每个虚拟机的目标优先级为所述每个虚拟机分配目标内存状态之前,获取所述每个虚拟机处理的任务的目标任务属性参数,其中,所述目标任务属性参数用于指示处理所述任务需要的内存资源大小和算力资源大小;
[0204] 配置模块,用于根据所述目标任务属性参数配置所述每个虚拟机的优先级,得到所述目标优先级。
[0205] 在一个可选的实施例中,所述配置模块,包括:
[0206] 从具有对应关系的任务属性参数和优先级中确定所述目标任务属性参数对应的所述目标优先级;
[0207] 将所述每个虚拟机的优先级参数配置为所述目标优先级。
[0208] 在一个可选的实施例中,所述调整模块,包括:
[0209] 获取单元,用于对于所述每个虚拟机作为目标虚拟机获取所述目标虚拟机当前的初始内存状态,其中,所述初始内存状态用于指示所述目标虚拟机当前的内存占用情况;
[0210] 第二确定单元,用于根据所述初始内存状态和所述目标内存状态确定内存调整量;
[0211] 调整单元,用于将所述目标虚拟机在所述主机下分配到的内存调整所述内存调整量。
[0212] 在一个可选的实施例中,所述获取单元,还用于:
[0213] 从读取到的内存量参数集合中查找所述目标虚拟机对应的目标内存量参数,其中,所述内存量参数集合记录了具有对应关系的虚拟机和内存量参数,所述内存量参数集合用于确定所述整体内存状态。
[0214] 在一个可选的实施例中,所述第二确定单元,还用于:
[0215] 获取所述目标内存量参数所包括的目标分配内存量和目标使用内存量作为所述初始内存状态,其中,所述目标分配内存量用于指示所述目标虚拟机在所述主机下当前分配到的内存大小,所述目标使用内存量用于指示所述目标虚拟机在当前分配到的内存中已使用的内存大小;
[0216] 根据所述目标分配内存量,所述目标使用内存量和所述目标内存状态计算所述内存调整量。
[0217] 在一个可选的实施例中,所述第二确定单元,还用于:
[0218] 通过以下公式计算所述内存调整量 :
[0219]
[0220] 其中,所述 为所述目标使用内存量,所述 为所述目标分配内存量,所述为所述目标内存状态。
[0221] 在一个可选的实施例中,所述调整单元,还用于:
[0222] 在所述内存调整量为正的情况下,将所述目标虚拟机在所述主机下分配到的内存扩大所述内存调整量所指示的内存调整值;
[0223] 在所述内存调整量为负的情况下,将所述目标虚拟机在所述主机下分配到的内存缩减所述内存调整量所指示的内存调整值。
[0224] 在一个可选的实施例中,所述调整单元,还用于:
[0225] 获取所述主机对应的调整量阈值;
[0226] 比对所述内存调整量与所述调整量阈值;
[0227] 在所述内存调整量大于或者等于所述调整量阈值的情况下,将所述目标虚拟机在所述主机下分配到的内存调整所述内存调整量;
[0228] 在所述内存调整量小于所述调整量阈值的情况下,保持所述目标虚拟机在所述主机下分配到的内存不变。
[0229] 本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
[0230] 在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read‑Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
[0231] 本申请的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
[0232] 在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0233] 本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
[0234] 显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
[0235] 以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。