首页 / 专利库 / 专利权 / 申请 / 一种虚拟机内存回收方法及装置

一种虚拟机内存回收方法及装置

阅读:324发布:2023-02-28

专利汇可以提供一种虚拟机内存回收方法及装置专利检索,专利查询,专利分析的服务。并且本 申请 实施例 提供一种 虚拟机 内存回收 方法及装置,所述方法包括:监控虚拟机内存使用状态,确定处于未使用状态的内存;回收所述处于未使用状态的内存,更新内存分配信息。本申请实施例可以有效回收虚拟机占用的内存资源,实现内存资源的高效时分复用,提高系统运行效率。,下面是一种虚拟机内存回收方法及装置专利的具体信息内容。

1.一种虚拟机内存回收方法,其特征在于,包括:
监控虚拟机内存使用状态,确定处于未使用状态的内存;
回收所述处于未使用状态的内存,更新内存分配信息。
2.根据权利要求1所述的方法,其特征在于,所述监控虚拟机内存使用状态,确定处于未使用状态的内存包括:
利用虚拟机空闲内存链表记录内存使用状态,根据所述空闲内存链表记录确定处于未使用状态的内存。
3.根据权利要求1或2所述的方法,其特征在于,所述处于未使用状态的内存为通过匿名映射方式分配给虚拟机的内存。
4.根据权利要求1或2所述的方法,其特征在于,所述处于未使用状态的内存为分配时间大于第一设定阈值且使用频率低于第二设定阈值的内存。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
为首次分配给虚拟机且处于未使用状态的内存设置第一标志位;
所述根据所述空闲内存链表记录确定处于未使用状态的内存包括:
将除设置第一标志位之外的未使用内存确定为处于未使用状态的内存。
6.根据权利要求1所述的方法,其特征在于,所述回收所述处于未使用状态的内存,更新内存分配信息包括:
定所述处于未使用状态的内存,将所述内存进行置零处理,释放所述内存;
更新内存分配信息,解锁所述内存,以便于重新分配所述内存。
7.一种虚拟机内存回收装置,其特征在于,所述装置包括:
确定模,用于监控虚拟机内存使用状态,确定处于未使用状态的内存;
回收模块,用于回收所述处于未使用状态的内存,更新内存分配信息。
8.根据权利要求7所述的装置,其特征在于,所述确定模块具体用于:
利用虚拟机空闲内存链表记录内存使用状态,根据所述空闲内存链表记录确定处于未使用状态的内存。
9.根据权利要求7所述的装置,其特征在于,所述回收模块具体用于:
锁定所述处于未使用状态的内存,将所述内存进行置零处理,释放所述内存;更新内存分配信息,解锁所述内存,以便于重新分配所述内存。
10.一种用于虚拟机内存回收的装置,其特征在于,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
监控虚拟机内存使用状态,确定处于未使用状态的内存;
回收所述处于未使用状态的内存,更新内存分配信息。

说明书全文

一种虚拟机内存回收方法及装置

技术领域

[0001] 本申请涉及计算机技术领域,尤其涉及一种虚拟机内存回收方法及装置。

背景技术

[0002] 随着计算机技术和互联网的快速发展,操作系统虚拟化技术日益成熟,虚拟化系统允许多个操作系统并发运行在同一台物理主机(以下简称物理机)上,所述多个操作系统使用相同的硬件且彼此互不影响。然而,不同的计算机硬件资源在使用时有着不同的特点。对于中央处理器CPU和输入输出(I/O)等天然的时分复用型资源,在使用完毕后,这些资源由虚拟机监控器(英文简称为VMM,英文全称为Virtual Machine Monitor)收回,不会处于继续使用的状态。但对于内存等空间型资源来说,虚拟机第一次使用某个内存页时,会向VMM申请资源,但实际的内存使用情况VMM无法感知,也无法释放掉未使用的内存页,这会造成一些不必要的页面交换和页面合并的开销,影响虚拟机的性能。
[0003] 现有技术中,内核虚拟机(英文简称为KVM,英文全称为Kenel-based Virtual Machine)为了简化虚拟机资源的管理,把虚拟机抽象成了系统中的一个进程,采用峰值分配的方法限定虚拟机内存分配的上限。这种分配方式会因为内存分配给虚拟机后,内存资源占而不用造成一些不必要的损耗,影响虚拟机的性能。发明内容
[0004] 本申请实施例提供了一种虚拟机内存回收方法及装置,可以有效回收虚拟机占用的内存资源,实现内存资源的高效时分复用,提高系统运行效率。
[0005] 为此,本申请实施例提供如下技术方案:
[0006] 第一方面,本申请实施例提供了一种虚拟机内存回收方法,包括:监控虚拟机内存使用状态,确定处于未使用状态的内存;回收所述处于未使用状态的内存,更新内存分配信息。
[0007] 在一些实施方式中,所述监控虚拟机内存使用状态,确定处于未使用状态的内存包括:利用虚拟机空闲内存链表记录内存使用状态,根据所述空闲内存链表记录确定处于未使用状态的内存。
[0008] 在一些实施方式中,所述处于未使用状态的内存为通过匿名映射方式分配给虚拟机的内存。
[0009] 在一些实施方式中,所述处于未使用状态的内存为分配时间大于第一设定阈值且使用频率低于第二设定阈值的内存。
[0010] 在一些实施方式中,所述方法还包括:为首次分配给虚拟机且处于未使用状态的内存设置第一标志位;所述根据所述空闲内存链表记录确定处于未使用状态的内存包括:将除设置第一标志位之外的未使用内存确定为处于未使用状态的内存。
[0011] 在一些实施方式中,所述回收所述处于未使用状态的内存,更新内存分配信息包括:定所述处于未使用状态的内存,将所述内存进行置零处理,释放所述内存;更新内存分配信息,解锁所述内存,以便于重新分配所述内存。
[0012] 第二方面,本申请实施例提供了一种虚拟机内存回收装置,包括:确定模,用于监控虚拟机内存使用状态,确定处于未使用状态的内存;回收模块,用于回收所述处于未使用状态的内存,更新内存分配信息。
[0013] 在一些实施方式中,所述确定模块具体用于:利用虚拟机空闲内存链表记录内存使用状态,根据所述空闲内存链表记录确定处于未使用状态的内存。
[0014] 在一些实施方式中,所述回收模块具体用于:锁定所述处于未使用状态的内存,将所述内存进行置零处理,释放所述内存;更新内存分配信息,解锁所述内存,以便于重新分配所述内存。
[0015] 第三方面,本申请实施例提供了一种用于虚拟机内存回收的装置,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:监控虚拟机内存使用状态,确定处于未使用状态的内存;回收所述处于未使用状态的内存,更新内存分配信息。
[0016] 本申请实施例提供的虚拟机内存回收方法及装置,可以监控虚拟机内存使用状态,确定处于未使用状态的内存,并回收所述处于未使用状态的内存,更新内存分配信息,以便重新分配回收的内存。由此,可以有效地对回收分配给虚拟机占而不用的内存,实现内存资源的高效时分复用,提高系统的运行效率。附图说明
[0017] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0018] 图1为本申请实施例提供的虚拟机内存回收方法示意图;
[0019] 图2为本申请实施例提供的虚拟机内存回收架构示意图;
[0020] 图3为本申请实施例提供的虚拟机内存回收装置示意图;
[0021] 图4为本申请实施例提供的用于虚拟机内存回收的装置的示意图。

具体实施方式

[0022] 本申请实施例提供了一种虚拟机内存回收方法及装置,可以有效回收虚拟机占用的内存资源,实现内存资源的高效时分复用,提高系统运行效率。
[0023] 为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0024] 在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0025] 其中,本申请实施例涉及的技术术语“物理机”一般用于表示物理实体计算机,为虚拟机提供硬件环境。
[0026] 其中,本申请实施例涉及的技术术语“虚拟机”(英文全称为Virtual Machine)一般指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。一般地,通过物理机和虚拟机的配合,一台计算机上可以安装上多个操作系统,并且多个操作系统间互不影响。
[0027] 下面将结合附图1至附图2对本申请示例性实施例示出的虚拟机内存回收方法进行介绍。
[0028] 参见图1,为本申请一实施例提供的虚拟机内存回收方法流程图。如图1所示,可以包括:
[0029] S101,监控虚拟机内存使用状态,确定处于未使用状态的内存。
[0030] 在本申请具体实现时,可以监控虚拟机(也可以称之为客户机)内存使用状态,并可以回收虚拟机中处于未使用状态的内存。
[0031] 在一些实施方式中,所述处于未使用状态的内存为通过匿名映射方式分配给虚拟机且处于未使用状态的内存。以Linux操作系统为例进行说明。在Linnux系统中中,一般有两种内存申请方式,分别对应mmap(一般用于将一个文件或者对象映射到内存)和brk(一般用于调用动态内存)两个系统调用。其中,mmap用于将硬盘上的文件映像加载到内存,常用于加载程序和文件,是缓存机制的重要环节。Brk所申请的内存是匿名映射的内存,用于程序动态申请内存的分配,与缓存无关,此类内存大量存在于各种应用程序的内存映射中,可以被回收的也是这部分内存。虚拟机向物理机申请内存成功,若使用完毕所述内存,在虚拟机内部释放掉内存后,这部分内存就处于未使用状态。现有技术中,物理机并不能够感知虚拟机内部内存的使用状态。在本申请中,可以监控虚拟机的内存使用状态,并对处于未使用状态的内存进行分配。具体地,可以通过安装在虚拟机内部的驱动程序,收集整理处于未使用状态的内存,并可以通过一定的筛选机制,去除刚分配但未使用的内存部分,确定已被虚拟机使用过但当前不再使用的内存,并通知物理机回收所述已被虚拟机使用过但当前不再使用的内存,并对内存资源进行再分配。
[0032] 具体实现时,可以利用虚拟机空闲内存链表记录内存使用状态,根据所述空闲内存链表记录确定处于未使用状态的内存。举例说明,所述虚拟机空闲内存链表可以记录分配给虚拟机的内存的信息。所述内存的信息可以包括分配给虚拟机的内存的地址、内存的使用状态以及内存是否回收等信息。其中,可以通过记录内存的访问频率,将访问频率小于第二设定阈值的内存标记为处于未使用状态。当然,也可以通过其他方式确定出演未使用状态的内存。在内存信息发生改变时,本申请实施例可以通过增量更新的方式更新所述虚拟机空闲内存链表的信息。
[0033] 在一些实施方式中,为了避免刚分配给虚拟机但未使用的内存被回收,可以设置所述处于未使用状态的内存为分配时间大于第一设定阈值且使用频率低于第二设定阈值的内存。通过所述设置,可以排除刚分配未使用的内存,由此实现内存资源的有效利用。当然,在一些实施方式中,还可以采用其他方式避免刚分配给虚拟机但未使用的内存被回收。例如,可以为首次分配给虚拟机且处于未使用状态的内存设置第一标志位。在确定处于未使用状态的内存时,将除设置第一标志位之外的未使用内存确定为处于未使用状态的内存。
[0034] 在具体实现时,可以由虚拟机内部的驱动模块监控虚拟机内存使用状态。在内存资源紧张时,被标记为处于未使用状态的内存,不论其是否真实占用物理机的物理内存页面,都可以通知VMM,对其进行释放。
[0035] S102,回收所述处于未使用状态的内存,更新内存分配信息。
[0036] 在本申请具体实现时,所述回收所述处于未使用状态的内存,更新内存分配信息包括:锁定所述处于未使用状态的内存,将所述内存进行置零处理,释放所述内存;更新内存分配信息,解锁所述内存,以便于重新分配所述内存。
[0037] 举例说明,对于已经记录的处于未使用状态、需要释放的物理内存,出于安全的考虑,可以首先使用down_write函数对该区间内存执行锁定操作。执行锁定操作可以有效避免对所述内存的访问出错。进一步的,在释放物理内存页面前可以先对该区域内存执行置零处理,使所述内存恢复到原始状态,然后对所述内存执行释放操作。在释放操作后,可以通过物理机内存管理单元及时更新物理机的块表,所述块表一般用于记录内存分配信息。最后用up_write函数解除对该内存区域的锁定,从而实现了与其他超量使用内存策略的兼容。
[0038] 参见图2,为本申请一实施例提供的内存回收架构示意图。如图2所示,物理机内存管理单元用于分配内存给虚拟机(又可以称之为客户机)。虚拟机内部已经使用的内存释放后即成为已经分配处于未使用状态的内存。KVM(VVM的一种)模块可以收集虚拟机中处于未使用状态的内存,并在满足第一设定条件时释放所述内存,由物理机内存管理单元对释放的内存进行重新分配。所述第一设定条件可以为确定内存资源紧张时,例如内存占用大于设定阈值时。所述第一设定条件可以为确定内存超量占用时,例如分配给虚拟机的内存总量大于设定阈值。具体的条件可以是非常灵活的,在此不进行限定。
[0039] 在本申请一个具体实施场景中,可以在虚拟机中安装相关驱动,并部署修改后的KVM内核代码,其中KVM内核修改需要定位释放的内存地址,锁定内存,释放并解锁,完成对内存资源的释放。具体实施时,可以部署修改KVM内存代码回收代码后的KVM环境,安装虚拟机操作系统,在虚拟机中安装相关驱动,正常运行程序。在系统内存资源紧张时会出发内存回收机制,这时,可以通过驱动监控虚拟机内存使用状态,确定处于未使用状态的内存,并通知KVM,由KVM回收所述处于未使用状态的内存,物理机内存管理单元更新内存分配信息。
[0040] 当然,以上仅为示例性说明,不视为对本申请的限制。
[0041] 下面对本申请实施例提供的方法对应的设备进行介绍。
[0042] 参见图3,为本申请一实施例提供的虚拟机内存回收装置示意图。
[0043] 一种虚拟机内存回收装置300,包括:
[0044] 确定模块301,用于监控虚拟机内存使用状态,确定处于未使用状态的内存.[0045] 回收模块302,用于回收所述处于未使用状态的内存,更新内存分配信息。
[0046] 在一些实施方式中,所述确定模块301具体用于:利用虚拟机空闲内存链表记录内存使用状态,根据所述空闲内存链表记录确定处于未使用状态的内存。
[0047] 在一些实施方式中,所述确定模块301具体用于:将所述空闲内存链表记录中通过匿名映射方式分配给虚拟机且未使用的内存确定为处于未使用状态的内存。
[0048] 在一些实施方式中,所述确定模块301具体用于:根据所述空闲内存链表记录确定分配时间大于第一设定阈值且使用频率低于第二设定阈值的内存为处于未使用状态的内存。
[0049] 在一些实施方式中,所述装置还包括:
[0050] 设置单元,用于为首次分配给虚拟机且处于未使用状态的内存设置第一标志位;
[0051] 在一些实施方式中,所述确定模块301具体用于:将除设置第一标志位之外的未使用内存确定为处于未使用状态的内存。
[0052] 在一些实施方式中,所述回收模块302具体用于:
[0053] 锁定所述处于未使用状态的内存,将所述内存进行置零处理,释放所述内存;更新内存分配信息,解锁所述内存,以便于重新分配所述内存。
[0054] 在一些实施方式中,本申请装置各单元或模块的设置可以参照图1至图2所示的方法而实现,在此不赘述。
[0055] 参见图4,是本申请另一实施例提供的虚拟机内存回收的装置的框图。包括:至少一个处理器401(例如CPU),存储器402和至少一个通信总线403,用于实现这些装置之间的连接通信。处理器401用于执行存储器402中存储的可执行模块,例如计算机程序。存储器402可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器401执行所述一个或者一个以上程序包含用于进行以下操作的指令:
[0056] 监控虚拟机内存使用状态,确定处于未使用状态的内存;
[0057] 回收所述处于未使用状态的内存,更新内存分配信息。
[0058] 在一些实施方式中,处理器401具体用于执行所述一个或者一个以上程序包含用于进行以下操作的指令:
[0059] 利用虚拟机空闲内存链表记录内存使用状态,根据所述空闲内存链表记录确定处于未使用状态的内存。
[0060] 在一些实施方式中,处理器401具体用于执行所述一个或者一个以上程序包含用于进行以下操作的指令:
[0061] 锁定所述处于未使用状态的内存,将所述内存进行置零处理,释放所述内存;
[0062] 更新内存分配信息,解锁所述内存,以便于重新分配所述内存。
[0063] 在一些实施方式中,处理器401具体用于执行所述一个或者一个以上程序包含用于进行以下操作的指令:
[0064] 为首次分配给虚拟机且处于未使用状态的内存设置第一标志位;
[0065] 将除设置第一标志位之外的未使用内存确定为处于未使用状态的内存。
[0066] 在一些实施方式中,处理器401具体用于执行所述一个或者一个以上程序包含用于进行以下操作的指令:
[0067] 将所述空闲内存链表记录中通过匿名映射方式分配给虚拟机且未使用的内存确定为处于未使用状态的内存。
[0068] 在一些实施方式中,处理器401具体用于执行所述一个或者一个以上程序包含用于进行以下操作的指令:
[0069] 根据所述空闲内存链表记录确定分配时间大于第一设定阈值且使用频率低于第二设定阈值的内存为处于未使用状态的内存。
[0070] 本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
[0071] 应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制[0072] 以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
[0073] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0074] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,在一些实施方式中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择在一些实施方式中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈