内存管理方法、装置以及系统

阅读: 评论:0

著录项
  • CN202111372469.4
  • 20211118
  • CN114265687A
  • 20220401
  • 阿里巴巴(中国)有限公司
  • 陶志恒
  • G06F9/50
  • G06F9/50

  • 浙江省杭州市滨江区长河街道网商路699号4号楼5楼508室
  • 浙江(33)
  • 北京智信禾专利代理有限公司
  • 赵杰
摘要
本说明书实施例提供内存管理方法、装置以及系统,其中内存管理方法包括:客户机可以获取内存申请指令,该内存申请指令携带申请标识,在申请标识为指定标识的情况下,说明需要申请大尺寸内存页,此时可以从客户机内存页中确定出第一尺寸标识对应的第一目标内存页,该第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识,之后向内存申请指令分配该第一目标内存页,如此客户机可以提供额外的内存分配支持,允许在申请内存时指明是否需要大尺寸宿主机内存页,从而使得客户机可以高效管理内存,大尺寸宿主机内存页可以分配给真正需要的申请指令,合理利用内存空间,优化大尺寸宿主机内存页的收益,提高内存利用效率。
权利要求

1.一种内存管理方法,应用于客户机,包括:

获取内存申请指令,所述内存申请指令携带申请标识;

在所述申请标识为指定标识的情况下,从客户机内存页中确定出第一尺寸标识对应的第一目标内存页,所述第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识;

向所述内存申请指令分配所述第一目标内存页。

2.根据权利要求1所述的内存管理方法,所述获取内存申请指令之前,还包括:

获取宿主机返回的内存映射信息,所述内存映射信息包括客户机内存页与宿主机内存页的尺寸标识之间的对应关系,所述尺寸标识包括第一尺寸标识和第二尺寸标识,所述第二尺寸标识为内存尺寸不大于预设尺寸阈值的宿主机内存页的标识;

根据所述内存映射信息,记录各个客户机内存页对应的宿主机内存页的尺寸标识。

3.根据权利要求2所述的内存管理方法,所述根据所述内存映射信息,记录各个客户机内存页对应的宿主机内存页的尺寸标识,包括:

确定所述各个客户机内存页对应的宿主机内存页的尺寸标识;

根据所述尺寸标识,设置比特位的数值,获得各个客户机内存页对应的比特位信息;

将所述各个客户机内存页对应的比特位信息存储在空闲内存中。

4.根据权利要求3所述的内存管理方法,所述从客户机内存页中确定出第一尺寸标识对应的第一目标内存页,包括:

获取各个客户机内存页对应的比特位信息;

从获取到的各个比特位信息中确定出表示第一尺寸标识的目标比特位信息;

将所述目标比特位信息对应的客户机内存页确定为所述第一目标内存页。

5.根据权利要求2所述的内存管理方法,所述根据所述内存映射信息,记录各个客户机内存页对应的宿主机内存页的尺寸标识,包括:

确定所述各个客户机内存页对应的宿主机内存页的尺寸标识;

在所述各个客户机内存页的页结构中添加对应的尺寸标识的描述字段。

6.根据权利要求5所述的内存管理方法,所述从客户机内存页中确定出第一尺寸标识对应的第一目标内存页,包括:

获取各个客户机内存页的页结构中添加的描述字段;

从获取到的各个描述字段中确定出第一尺寸标识对应的目标描述字段;

将所述目标描述字段所属的客户机内存页确定为所述第一目标内存页。

7.根据权利要求1-4任一项所述的内存管理方法,所述申请标识为宿主机内存页的尺寸标识;所述获取内存申请指令之后,还包括:

在所述尺寸标识为第一尺寸标识的情况下,确定所述申请标识为指定标识;

在所述尺寸标识为第二尺寸标识的情况下,确定所述申请标识不为指定标识。

8.根据权利要求1-4任一项所述的内存管理方法,所述申请标识为申请类型;所述获取内存申请指令之后,还包括:

在所述申请类型为预设申请类型的情况下,确定所述申请标识为指定标识;

在所述申请类型不为预设申请类型的情况下,确定所述申请标识不为指定标识。

9.根据权利要求1-4任一项所述的内存管理方法,所述向所述内存申请指令分配所述目标内存页之后,还包括:

接收内存访问指令,所述内存访问指令携带待访问的客户机虚拟地址;

根据预设地址转换表,确定所述客户机虚拟地址对应的宿主机物理地址;

根据所述宿主机物理地址执行所述内存访问指令。

10.一种内存管理方法,应用于宿主机,包括:

确定是否满足内存处理条件;

在满足内存处理条件的情况下,向客户机内存页分配对应的宿主机内存页,并确定所述宿主机内存页的尺寸标识,所述尺寸标识包括第一尺寸标识,所述第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识;

根据所述客户机内存页和对应的宿主机内存页的尺寸标识,生成内存映射信息,并将所述内存映射信息返回给所述客户机,所述内存映射信息用于指示客户机在内存申请指令携带指定标识的情况下,从客户机内存页中确定出第一尺寸标识对应的第一目标内存页进行分配。

11.一种内存管理装置,应用于客户机,包括:

获取模块,被配置为获取内存申请指令,所述内存申请指令携带申请标识;

第一确定模块,被配置为在所述申请标识为指定标识的情况下,从客户机内存页中确定出第一尺寸标识对应的第一目标内存页,所述第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识;

分配模块,被配置为向所述内存申请指令分配所述第一目标内存页。

12.一种内存管理装置,应用于宿主机,包括:

第二确定模块,被配置为确定是否满足内存处理条件;

第三确定模块,被配置为在满足内存处理条件的情况下,向客户机内存页分配对应的宿主机内存页,并确定所述宿主机内存页的尺寸标识,所述尺寸标识包括第一尺寸标识,所述第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识;

返回模块,被配置为根据所述客户机内存页和对应的宿主机内存页的尺寸标识,生成内存映射信息,并将所述内存映射信息返回给所述客户机,所述内存映射信息用于指示客户机在内存申请指令携带指定标识的情况下,从客户机内存页中确定出第一尺寸标识对应的第一目标内存页进行分配。

13.一种内存管理系统,包括宿主机和客户机;

所述宿主机,被配置为确定是否满足内存处理条件;在满足内存处理条件的情况下,向客户机内存页分配对应的宿主机内存页,并确定所述宿主机内存页的尺寸标识,所述尺寸标识包括第一尺寸标识,所述第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识;根据所述客户机内存页和对应的宿主机内存页的尺寸标识,生成内存映射信息,并将所述内存映射信息返回给所述客户机;

所述客户机,被配置为获取宿主机返回的内存映射信息,根据所述内存映射信息,记录各个客户机内存页对应的宿主机内存页的尺寸标识;获取内存申请指令,所述内存申请指令携带申请标识;在所述申请标识为指定标识的情况下,从客户机内存页中确定出第一尺寸标识对应的第一目标内存页,向所述内存申请指令分配所述第一目标内存页。

14.一种计算设备,包括:

存储器和处理器;

所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,以实现上述权利要求1-9任一项或者权利要求10所述的内存管理方法的操作步骤。

15.一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述权利要求1-9任一项或者权利要求10所述的内存管理方法的操作步骤。

说明书
技术领域

本说明书实施例涉及计算机技术领域,特别涉及一种内存管理方法。本说明书一个或者多个实施例同时涉及一种内存管理装置,一种内存管理系统,一种计算设备,以及一种计算机可读存储介质。

随着计算机技术和互联网技术的快速发展,数据存储需求急剧增长,计算机内存容量也随之爆发式增长,为了满足日益增长的数据处理和数据存储需求,相应诞生了虚拟技术,虚拟技术是一种通过组合或分区现有的计算机资源(中央处理器、内存、磁盘空间等),使得这些资源表现为一个或多个操作环境,从而提供优于原有资源配置的访问方式的技术,也即虚拟技术就是把物理资源转变为逻辑上可以管理的资源,以打破物理结构之间的壁垒。基于虚拟技术,可以通过软件模拟具有完整硬件系统功能的、运行在一个完全隔离环境中的虚拟机,该虚拟机可以运行于宿主机之上。

现有技术中,虚拟机在运行过程中可以申请使用内存,宿主机可以为虚拟机分配相应的物理内存,以供虚拟机使用,然而目前虚拟机在申请内存时往往无法合理利用内存空间,因而需要一种更合理的内存管理方法。

有鉴于此,本说明书实施例提供了一种内存管理方法。本说明书一个或者多个实施例同时涉及一种内存管理装置,一种内存管理系统,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。

根据本说明书实施例的第一方面,提供了一种内存管理方法,应用于客户机,包括:

获取内存申请指令,内存申请指令携带申请标识;

在申请标识为指定标识的情况下,从客户机内存页中确定出第一尺寸标识对应的第一目标内存页,第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识;

向内存申请指令分配第一目标内存页。

可选地,获取内存申请指令之前,还包括:

获取宿主机返回的内存映射信息,内存映射信息包括客户机内存页与宿主机内存页的尺寸标识之间的对应关系,尺寸标识包括第一尺寸标识和第二尺寸标识,第二尺寸标识为内存尺寸不大于预设尺寸阈值的宿主机内存页的标识;

根据内存映射信息,记录各个客户机内存页对应的宿主机内存页的尺寸标识。

可选地,根据内存映射信息,记录各个客户机内存页对应的宿主机内存页的尺寸标识,包括:

确定所述各个客户机内存页对应的宿主机内存页的尺寸标识;

根据所述尺寸标识,设置比特位的数值,获得各个客户机内存页对应的比特位信息;

将所述各个客户机内存页对应的比特位信息存储在空闲内存中。

可选地,从客户机内存页中确定出第一尺寸标识对应的第一目标内存页,包括:

获取各个客户机内存页对应的比特位信息;

从获取到的各个比特位信息中确定出表示第一尺寸标识的目标比特位信息;

将所述目标比特位信息对应的客户机内存页确定为所述第一目标内存页。

可选地,根据内存映射信息,记录各个客户机内存页对应的宿主机内存页的尺寸标识,包括:

确定各个客户机内存页对应的宿主机内存页的尺寸标识;

在各个客户机内存页的页结构中添加对应的尺寸标识的描述字段。

可选地,从客户机内存页中确定出第一尺寸标识对应的第一目标内存页,包括:

获取各个客户机内存页的页结构中添加的描述字段;

从各个描述字段中确定出第一尺寸标识对应的目标描述字段;

将目标描述字段所属的客户机内存页确定为第一目标内存页。

可选地,申请标识为宿主机内存页的尺寸标识;获取内存申请指令之后,还包括:

在尺寸标识为第一尺寸标识的情况下,确定申请标识为指定标识;

在尺寸标识为第二尺寸标识的情况下,确定申请标识不为指定标识。

可选地,申请标识为申请类型;获取内存申请指令之后,还包括:

在申请类型为预设申请类型的情况下,确定申请标识为指定标识;

在申请类型不为预设申请类型的情况下,确定申请标识不为指定标识。

可选地,向内存申请指令分配目标内存页之后,还包括:

接收内存访问指令,内存访问指令携带待访问的客户机虚拟地址;

根据预设地址转换表,确定客户机虚拟地址对应的宿主机物理地址;

根据宿主机物理地址执行内存访问指令。

根据本说明书实施例的第二方面,提供了一种内存管理方法,应用于宿主机,包括:

确定是否满足内存处理条件;

在满足内存处理条件的情况下,向客户机内存页分配对应的宿主机内存页,并确定宿主机内存页的尺寸标识,尺寸标识包括第一尺寸标识,第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识;

根据客户机内存页和对应的宿主机内存页的尺寸标识,生成内存映射信息,并将内存映射信息返回给客户机,内存映射信息用于指示客户机在内存申请指令携带指定标识的情况下,从客户机内存页中确定出第一尺寸标识对应的第一目标内存页进行分配。

根据本说明书实施例的第三方面,提供了一种内存管理装置,应用于客户机,包括:

获取模块,被配置为获取内存申请指令,内存申请指令携带申请标识;

第一确定模块,被配置为在申请标识为指定标识的情况下,从客户机内存页中确定出第一尺寸标识对应的第一目标内存页,第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识;

分配模块,被配置为向内存申请指令分配第一目标内存页。

根据本说明书实施例的第四方面,提供了一种内存管理装置,应用于宿主机,包括:

第二确定模块,被配置为确定是否满足内存处理条件;

第三确定模块,被配置为在满足内存处理条件的情况下,向客户机内存页分配对应的宿主机内存页,并确定宿主机内存页的尺寸标识,尺寸标识包括第一尺寸标识,第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识;

返回模块,被配置为根据客户机内存页和对应的宿主机内存页的尺寸标识,生成内存映射信息,并将内存映射信息返回给客户机,内存映射信息用于指示客户机在内存申请指令携带指定标识的情况下,从客户机内存页中确定出第一尺寸标识对应的第一目标内存页进行分配。

根据本说明书实施例的第五方面,提供了一种内存管理系统,包括宿主机和客户机;

宿主机,被配置为确定是否满足内存处理条件;在满足内存处理条件的情况下,向客户机内存页分配对应的宿主机内存页,并确定宿主机内存页的尺寸标识,尺寸标识包括第一尺寸标识,第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识;根据客户机内存页和对应的宿主机内存页的尺寸标识,生成内存映射信息,并将内存映射信息返回给客户机;

客户机,被配置为获取宿主机返回的内存映射信息,根据内存映射信息,记录各个客户机内存页对应的宿主机内存页的尺寸标识;获取内存申请指令,内存申请指令携带申请标识;在申请标识为指定标识的情况下,从客户机内存页中确定出第一尺寸标识对应的第一目标内存页,向内存申请指令分配第一目标内存页。

根据本说明书实施例的第六方面,提供了一种计算设备,包括:

存储器和处理器;

存储器用于存储计算机可执行指令,处理器用于执行计算机可执行指令,以实现上述任意一项内存管理方法的操作步骤。

根据本说明书实施例的第七方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现任意一项内存管理方法的操作步骤。

本说明书一个实施例提供了一种内存管理方法,客户机可以获取内存申请指令,该内存申请指令携带申请标识,在申请标识为指定标识的情况下,说明需要申请大尺寸内存页,此时可以从客户机内存页中确定出第一尺寸标识对应的第一目标内存页,该第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识,也即可以从客户机内存页中确定出对应于大尺寸宿主机内存页的第一目标内存页,之后向内存申请指令分配该第一目标内存页。这种情况下,客户机在申请内存时,可以携带申请标识,以指明需要申请哪一尺寸类型的内存页,从而在真正需要大尺寸内存页时,再分配客户机内存页中对应于大尺寸宿主机内存页的第一目标内存页;也即是,客户机可以提供额外的内存分配支持,允许在申请内存时指明是否需要大尺寸宿主机内存页,从而使得客户机可以高效管理内存,大尺寸宿主机内存页可以分配给真正需要的申请指令,合理利用内存空间,优化大尺寸宿主机内存页的收益,提高内存利用效率。

图1是本说明书一个实施例提供的一种内存管理方法的流程图;

图2是本说明书一个实施例提供的一种内存映射信息的示意图;

图3是本说明书一个实施例提供的另一种内存管理方法的流程图;

图4是本说明书一个实施例提供的又一种内存管理方法的流程图;

图5是本说明书一个实施例提供的一种内存管理装置的结构示意图;

图6是本说明书一个实施例提供的另一种内存管理装置的结构示意图;

图7是本说明书一个实施例提供的一种内存管理系统的结构示意图;

图8是本说明书一个实施例提供的一种计算设备的结构框图。

在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。

在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先,对本说明书一个或多个实施例涉及的名词术语进行解释。

宿主机:真实的物理机、服务器。

客户机:运行于宿主机上的虚拟机。

TLB:Translation Lookaside Buffer,旁路转换缓存,缓存虚拟地址到物理地址的映射,TLB是一个小的,虚拟寻址的缓存,其中每一行都保存着一个由单个PTE(PageTable Entry,页表项)组成的块。TLB又称为快表技术,由于“页表”存储在主存储器中,查询页表所付出的代价很大,由此产生了TLB,如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址和取数据。

EPT:Extended Page Table,扩展页表,将客户机的物理地址转换为宿主机的物理地址。

巨页:2M或1G的连续物理内存,一般指2M连续物理内存。需要说明的是,巨页可以为大多数工作负载提供显著的性能提升,特别是对于基于云的服务应用。巨页可以用于描述大于最小尺寸页面的任何尺寸页面,最小尺寸页面即特定架构可以处理的小页面或其标准页面尺寸。例如,特定架构的最小页面大小或标准页面大小可以是4K,而巨页可以是2M。在其他实施方式中,巨页可以是8K、64K、256K、1M、2M,4M、16M、256M、512M、1G或更大,或其间的任何大小,如巨页可以是4K的任何整数倍n,即n*4K,并且在某些实施例中,可以是标准页面大小的两倍的任何幂。

比特位:即Bit,是计算机最小的存储单位,以0或1来表示比特位的值,愈多的比特位数可以表现愈复杂的信息。

需要说明的是,随着计算机技术和互联网技术的快速发展,数据存储需求急剧增长,计算机内存容量也随之爆发式增长。但是TLB的扩展没有赶上内存容量的增长,客户机虚拟地址到宿主机物理地址的转换开销已经成为应用性能的一个主要瓶颈,在虚拟化环境中这种开销会更显著,因为将客户机虚拟地址最终转换为宿主机物理地址涉及的层级更多,使用巨页可以有效的减少TLB失败率,降低地址转换的开销,从而提升访存性能。

现有技术中,两种常见的虚拟化技术,一种是SPT(Shadow Page Table,影子页表),是客户机虚拟地址到宿主机物理地址的直接转换页表,从TLB获取宿主机物理地址失败时,可以访问该影子页表,查询待访问的虚拟地址对应的宿主机物理地址,然而该影子页表维护开销较大,且需要额外占用内存。另一种是EPT(Extended Page Table,扩展页表),是客户机物理地址到宿主机物理地址的转换页表,通过该方式,地址转换需要由硬件完成,访问客户机内存时存需要额外查一次扩展页表,操作繁琐,影响了访问内存的效率。

实际应用中,中央处理器访问客户机内存时需要将客户机的虚拟地址转换为宿主机的物理地址,TLB可以缓存一部分地址转换关系;若地址转换未命中TLB,则需要查询一到多次页表(如SPT或EPT),相比命中有较大开销。由于巨页需要的页表项更少,TLB可以覆盖更大地址范围,因而使用巨页可以使地址转换更容易命中TLB。

然而,虚拟化屏蔽了宿主机的内存信息,客户机不感知自身内存是否在宿主机中映射为真实巨页。若客户机内存页在宿主机中全部映射为真实巨页或物理机小页时,客户机怎样使用内存没有差别,但在一个运行较久的机器上,宿主机没有足够巨页,很容易出现客户机只有部分内存在宿主机中映射于真实巨页的情况,此时客户机不合理的内存使用无法优化宿主机的巨页优势,如以小页方式使用真实巨页,而以巨页方式使用物理机小页。

因而,本说明书实施例中提供了一种内存管理方法,宿主机可以将自身的巨页映射信息向上透传给客户机,使得客户机可以感知自身内存是否映射为宿主机的真实巨页,以使客户机可以供额外的内存分配支持,允许在申请内存时指明是否需要真实巨页,从而使得客户机在分配内存时可以有所区分,将映射于宿主机中真实巨页的内存用在对性能影响显著的地方,从而使得客户机可以高效管理内存,合理利用内存空间,优化巨页收益,提高内存利用效率。

在本说明书中,提供了一种内存管理方法,本说明书同时涉及一种内存管理装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。

需要说明的是,本说明书实施例提供的内存管理方法可以在虚拟化环境中实现,包括虚拟机、安全容器等涉及内存虚拟化的产品,如运行于宿主机之上的客户机。

图1示出了根据本说明书一个实施例提供的一种内存管理方法的流程图,应用于客户机,包括以下步骤:

步骤102:获取内存申请指令,内存申请指令携带申请标识。

具体的,客户机可以是指运行于宿主机上的虚拟机,虚拟机可以是指通过软件模拟具有完整硬件系统功能的、运行在一个完全隔离环境中的计算机系统。内存申请指令可以是指客户机内部申请使用内存页的指令,该内存申请指令中可以携带申请标识,该申请标识可以是指预先设置的、用于指示客户机内存页映射的宿主机内存页的尺寸类型的标识。

需要说明的是,客户机运行于宿主机之上,因而客户机内部申请使用客户机内存页时,实际上是申请使用客户机内存页映射的宿主机内存页,后续访问客户机内存时,实际上也是访问对应的宿主机内存,因而该申请标识可以用于指示客户机内存页映射的宿主机内存页的尺寸类型。也即是,客户机内部可以申请使用客户机内存页,客户机向其分配对应的客户机内存页后,该客户机内存页映射于宿主机中对应的宿主机内存页。

实际应用中,在连续存储管理方式中,固定分区会产生内部碎片,动态分区会产生外部碎片,这两种技术对内存的利用率都比较低,而分页式存储管理方式可以把内存空间划分为页,进程在执行时,以页为单位逐个申请内存中的内存页。至于内存页的大小可以分为小页和巨页,小页可以是指最小尺寸页面,最小尺寸页面即特定架构可以处理的小页面或其标准页面尺寸,如特定架构的最小页面大小或标准页面大小可以是4K;巨页可以是指大于最小尺寸页面的任何尺寸页面,如巨页可以是8K、64K、256K、1M、2M,4M、16M、256M、512M、1G或更大,或其间的任何大小的页面。

一种可能的实现方式,内存申请指令中携带的申请标识可以用于指示需要申请的客户机内存页在宿主机中映射于宿主机巨页还是宿主机小页,从而使得后续客户机可以基于该申请标识,向其分配相应类型的客户机内存页,即所需尺寸的宿主机内存页。

本说明书实施例中,客户机在申请使用内存时,可以在内存申请指令中携带申请标识,以指明需要申请哪一种尺寸类型的内存页,从而使得后续客户机可以根据内存申请指令中携带的申请标识,向其分配真正所需的内存页。如此,允许客户机在申请内存时指明是否需要大尺寸宿主机内存页,使得客户机可以提供额外的内存分配支持,从而使得客户机可以高效管理内存,大尺寸宿主机内存页可以分配给真正需要的申请指令,合理利用内存空间,优化大尺寸宿主机内存页的收益,提高内存利用效率。

本实施例一个可选的实施方式中,为了使得客户机获取到内存申请指令后,可以基于内存申请指令携带的申请标识,向其分配真正所需的内存页,客户机中需要维护客户机内存页与宿主机内存页的尺寸标识之间的对应关系,也即客户机获取内存申请指令之前,还可以包括:

获取宿主机返回的内存映射信息,内存映射信息包括客户机内存页与宿主机内存页的尺寸标识之间的对应关系,尺寸标识包括第一尺寸标识和第二尺寸标识,第二尺寸标识为内存尺寸不大于预设尺寸阈值的宿主机内存页的标识;

根据内存映射信息,记录各个客户机内存页对应的宿主机内存页的尺寸标识。

具体的,内存映射信息可以是指宿主机生成的、用于指示客户机内存页和对应的宿主机内存页的尺寸标识之间的对应关系的信息,其中,宿主机内存页的尺寸标识可以包括第一尺寸标识和第二尺寸标识,第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识,第二尺寸标识为内存尺寸不大于预设尺寸阈值的宿主机内存页的标识,预设尺寸阈值可以是指预先设置的判断内存页尺寸大小的阈值,如该预设尺寸阈值可以是指特定架构可以处理的小页面或其标准页面尺寸,如4K。作为一种示例,第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识,即第一尺寸标识可以为宿主机中巨页的标识,第二尺寸标识为内存尺寸不大于预设尺寸阈值的宿主机内存页的标识,即第二尺寸标识可以为宿主机中小页的标识。

需要说明的是,客户机运行于宿主机之上时,宿主机可以为客户机分配对应的宿主机内存,或者在满足内存规整的触发条件时(如达到预设时间、内存不足时),宿主机可以对运行于自身之上的客户机的内存进行规整、拆分等。

实际应用中,宿主机在为客户机分配内存或者对客户机内存进行规整、拆分时,可以为每个客户机内存页分配对应的宿主机内存页,分配的宿主机内存页可能为第一尺寸标识的内存页(即大尺寸的内存页,巨页),也可能为第二尺寸标识的内存页(即小尺寸的内存页,小页)。宿主机在向客户机内存页分配对应的宿主机内存页之后,还可以确定分配的各个宿主机内存页的尺寸标识,并基于客户机内存页和对应的宿主机内存页的尺寸标识,生成内存映射信息,将该内存映射信息返回给客户机。客户机可以根据接收到的内存映射信息,记录各个客户机内存页对应的宿主机内存页的尺寸标识,从而维护客户机内存页在宿主机中映射于宿主机巨页还是宿主机小页,以供后续申请内存时作为内存分配的依据,高效管理内存。

一种可能的实现方式中,在虚拟化环境中,访问内存涉及到多次地址转换,开销更大,巨页可以有效的提升访存性能。虚拟化涉及两种巨页,一是客户机内部的巨页,即客户机页表的巨页;二是宿主机上的巨页,即EPT的巨页,表示客户机内存映射在宿主机的巨页内存上。也即是,客户机内存页可以为巨页或小页,宿主机内存页也可以为巨页或小页,本说明书实施例中可以确定客户机内存页对应的宿主机内存页为巨页还是小页。

示例的,图2是本说明书一个实施例提供的一种内存映射信息的示意图,如图2所示,客户机包括客户机内存页X1-X5,其中客户机内存页X1、X2、X5为巨页,X3、X4为小页,宿主机内存包括宿主机内存页Y1-Y10,其中Y1、Y2、Y5、Y7、Y8、Y10为巨页,Y3、Y4、Y6、Y9为小页。假设宿主机在为该客户机分配内存时,将宿主机内存页Y1分配给客户机内存页X1、将宿主机内存页Y2分配给客户机内存页X2、将宿主机内存页Y5分配给客户机内存页X3、将宿主机内存页Y6分配给客户机内存页X4、将宿主机内存页Y9分配给客户机内存页X5。此时,客户机内存页X1、X2、X3在宿主机中映射的宿主机内存页为巨页,客户机内存页X4和X5在宿主机中映射的宿主机内存页为小页;也即是,客户机内存页X1、X2、X3均对应于宿主机巨页,而客户机内存页X4和X5对应于宿主机小页。

本说明书实施例中,宿主机可以将基于客户机内存页和对应的宿主机内存页的尺寸标识生成的内存映射信息向上透传给客户机,使得客户机可以感知客户机内存页映射的宿主机内存页的尺寸类型,从而使得客户机可以供额外的内存分配支持,允许在申请内存时指明需要哪种尺寸类型的内存页,从而使得客户机在分配内存时可以有所区分,将大尺寸宿主机内存页分配给真正需要的申请指令,从而高效管理内存,合理利用内存空间,优化大尺寸内存页的收益,提高内存利用效率。

本实施例一个可选的实施方式中,可以通过比特位来记录客户机内存页对应的宿主机内存页的尺寸标识,也即根据内存映射信息,记录各个客户机内存页对应的宿主机内存页的尺寸标识,具体实现过程可以如下:

确定各个客户机内存页对应的宿主机内存页的尺寸标识;

根据尺寸标识,设置比特位的数值,获得各个客户机内存页对应的比特位信息;

将各个客户机内存页对应的比特位信息存储在空闲内存中。

具体的,比特位可以是计算机最小的存储单位,以0或1来表示比特位的数值,愈多的比特位数可以表现愈复杂的信息。需要说明的是,比特位的数值为0或1可以表示不同的信息,因而可以通过连续的多个比特位的数值来记录客户机内存页对应的宿主机内存页的尺寸标识。

一种可能的实现方式中,可以使用多个比特位来描述客户机内存页对应的宿主机内存页的尺寸标识,如一个比特位可以表示一个4K的内存页,以第一尺寸标识的内存页(即巨页)为2M的内存页进行说明,那么该第一尺寸标识的内存页为2048K的内存页,一个比特位表示4K的内存页,第一尺寸标识的内存页(即巨页)是由连续的内存组成,因而该第一尺寸标识的内存页需要512个连续的比特位进行描述,即可以将512个连续的比特位的数值设置为1,获得该客户机内存页对应的比特位信息,该比特位信息包括512个连续为1的比特位。后续,只要某个客户机内存页对应的比特位信息中包括512个连续为1的比特位,该客户机内存页对应的宿主机内存页即为第一尺寸标识的内存页),若某个客户机内存页对应的比特位信息中连续为1的比特位不足512个,即数值为1的比特位分散排列,那么该客户机内存页对应的宿主机内存页即为第二尺寸标识的内存页。

另一种可能的实现方式,可以仅使用一个比特位来描述客户机内存页对应的宿主机内存页的尺寸标识,若某个客户机内存页对应的宿主机内存页的尺寸标识为第一尺寸标识(即客户机内存页对应的宿主机内存页为巨页),此时可以设置比特位的数值为1;若某个客户机内存页对应的宿主机内存页的尺寸标识为第二尺寸标识(即客户机内存页对应的宿主机内存页为小页),此时可以设置比特位的数值为0;也即是,各个客户机内存页对应的比特位信息均仅包括一个比特位。后续,若某个客户机内存页对应的比特位信息中包括的是数值为1的比特位,那么该客户机内存页对应的宿主机内存页的尺寸标识为第一尺寸标识;若某个客户机内存页对应的比特位信息中包括的是数值为0的比特位,那么该客户机内存页对应的宿主机内存页的尺寸标识为第二尺寸标识。

本说明书实施例中,可以根据各个客户机内存页对应的宿主机内存页的尺寸标识,设置对应的比特位的数值,从而获得各个客户机内存页对应的比特位信息,将各个客户机内存页对应的比特位信息存储在空闲内存中,该比特位信息占用的内存空间较小,通过客户机中极小一部分空闲的内存空间,即可维护客户机内存页与宿主机内存页的尺寸标识之间的对应关系,减少了资源浪费,且各个客户机内存页对应的比特位信息存储在空闲内存中,既不会干扰其他内存的使用,也避免了信息丢失。

本实施例一个可选的实施方式中,还可以直接通过客户机内存页的页结构记录客户机内存页对应的宿主机内存页的尺寸标识,也即根据内存映射信息,记录各个客户机内存页对应的宿主机内存页的尺寸标识,具体实现过程可以如下:

确定各个客户机内存页对应的宿主机内存页的尺寸标识;

在各个客户机内存页的页结构中添加对应的尺寸标识的描述字段。

需要说明的是,每个客户机内存页都对应有页结构,该页结构可以记录客户机内存页的相关信息,如使用情况、内存页信息等。因而,在客户机基于宿主机返回的内存映射信息,确定出客户机内存页对应的宿主机内存页的尺寸标识之后,可以在该客户机内存页的页结构中增加描述字段,通过描述字段描述该客户机内存页对应的宿主机内存页的尺寸标识。如此,可以直接将尺寸标识写入客户机内存页的页结构中,后续直接通过查询各个客户机的页结构,即可确定出客户机对应的宿主机内存页的尺寸标识,无需消其他内存,来维护记录客户机内存页与宿主机内存页的尺寸标识之间的对应关系,简单方便,且可以节省存储空间。

本实施例一个可选的实施方式中,可以在内存申请指令中直接指定所需申请的客户机内存页对应的宿主机内存页的尺寸标识,也即申请标识为宿主机内存页的尺寸标识,此时获取内存申请指令之后,还可以包括:

在尺寸标识为第一尺寸标识的情况下,确定申请标识为指定标识;

在尺寸标识为第二尺寸标识的情况下,确定申请标识不为指定标识。

需要说明的是,指定标识可以是指预先设置的标识,该指定标识用于指示所要申请的客户机内存页对应于第一尺寸标识的宿主机内存页;也即是,若客户机获取到的内存申请指令中携带的申请标识为第一尺寸标识,那么说明申请标识为指定标识,后续需要为其分配的客户机内存页映射于第一尺寸标识的宿主机内存页(即需要宿主机中真正的巨页)。另外,若客户机获取到的内存申请指令中携带的申请标识为第二尺寸标识,那么说明申请标识不为指定标识,后续需要为其分配的客户机内存页映射于第二尺寸标识的宿主机内存页(即需要宿主机中小页)。

一种可能的实现方式中,可以在内存申请指令中增加新的二进制标志位,基于该二进制标志位为0或1,来表示该内存申请指令中携带的申请标识是否为指定标识,如若该二进制标志位为1,则说明该内存申请指令中携带的申请标识为指定标识,此时需要申请的客户机内存页对应于第一尺寸标识的宿主机内存页;若该二进制标志位为0,则说明该内存申请指令中携带的申请标识不为指定标识,此时需要申请的客户机内存页对应于第二尺寸标识的宿主机内存页(即小页)。

另一种可能的实现方式中,在内存申请指令中增加新的尺寸描述字段,基于该尺寸描述字段为HUGEPAGE或PAGE,来表示该内存申请指令中携带的申请标识是否为指定标识,如若该尺寸描述字段为HUGEPAGE,则说明该内存申请指令中携带的申请标识为指定标识,此时需要申请的客户机内存页对应于第一尺寸标识的宿主机内存页;若该尺寸描述字段为PAGE,则说明该内存申请指令中携带的申请标识不为指定标识,此时需要申请的客户机内存页对应于第二尺寸标识的宿主机内存页(即小页)。

本说明书实施例中可以直接在内存申请指令中指定宿主机内存页的尺寸标识,从而表明需要映射于哪种尺寸宿主机内存页的客户机内存页,从而使得后续客户机可以根据内存申请指令中指定的尺寸标识,向其分配真正所需的内存页。如此,允许客户机在申请内存时指明是否需要大尺寸宿主机内存页,使得客户机可以提供额外的内存分配支持,从而使得客户机可以高效管理内存,大尺寸宿主机内存页可以分配给真正需要的申请指令,合理利用内存空间,优化大尺寸宿主机内存页的收益,提高内存利用效率。

本实施例一个可选的实施方式中,可以在内存申请指令中携带申请类型,基于该申请类型确定所需申请的客户机内存页对应的宿主机内存页的尺寸标识,也即申请标识为申请类型,此时获取内存申请指令之后,还可以包括:

在申请类型为预设申请类型的情况下,确定申请标识为指定标识;

在申请类型不为预设申请类型的情况下,确定申请标识不为指定标识。

具体的,预设申请类型可以是预先设置的、需要申请的客户机内存页对应于第一尺寸标识的宿主机内存页的申请类型,该预设申请类型可以为申请经常访问的内存的类型,如kernel内存,java堆内存等,或者该预设申请类型还可以为申请不可移动内存的类型,如直通设备的内存等。

需要说明的是,申请经常访问的内存时,使用第一尺寸标识的宿主机内存页(即真实巨页)可以提升访存性能,申请不可移动的内存时,使用第一尺寸标识的宿主机内存页可以避免影响宿主机的内存规整,有利于规整出更多巨页,提高内存利用效率。

实际应用中,若客户机获取到的内存申请指令中携带的申请标识为预设申请类型,那么说明申请标识为指定标识,后续需要为其分配的客户机内存页映射于第一尺寸标识的宿主机内存页(即需要宿主机中真正的巨页)。另外,若客户机获取到的内存申请指令中携带的申请标识不为预设申请类型,那么说明申请标识不为指定标识,后续需要为其分配的客户机内存页映射于第二尺寸标识的宿主机内存页(即需要宿主机中小页)。

另外,还可以结合尺寸标识和申请类型,指定所需要申请的内存页的类型。

沿用上例,如图2所示,申请kernel内存、java堆内存等经常访问的内存时,以及申请直通设备的内存DMA等不可移动内存时,可以在内存申请指令中携带HUGEPAGE标识,如内存申请指令可以为alloc_ept_HUGEPAGE,根据内存映射信息(即记录的各个客户机内存页对应的宿主机内存页的尺寸标识),可以确定出分配的客户机内存页(如客户机内存页X1),该客户机内存页对应于宿主机内存页(如宿主机内存页Y1)。申请普通内存时,可以在内存申请指令中携带PAGE标识,如内存申请指令可以为alloc_PAGE,根据内存映射信息,可以确定出分配的客户机内存页(如客户机内存页X5),该客户机内存页对应于宿主机内存页(如宿主机内存页Y9)。

本说明书实施例可以基于申请内存的类型来表明需要映射于哪种尺寸宿主机内存页的客户机内存页,从而使得后续客户机可以根据内存申请指令中指定的尺寸标识,向其分配真正所需的内存页。如此,允许客户机在申请内存时指明是否需要大尺寸宿主机内存页,使得客户机可以提供额外的内存分配支持,从而使得客户机可以高效管理内存,大尺寸宿主机内存页可以分配给真正需要的申请指令,合理利用内存空间,优化大尺寸宿主机内存页的收益,提高内存利用效率。

步骤104:在申请标识为指定标识的情况下,从客户机内存页中确定出第一尺寸标识对应的第一目标内存页,第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识。

具体的,在获取内存申请指令的基础上,还可以基于内存申请指令携带的申请标识,确定申请标识是否为指定标识,进一步地,在申请标识为指定标识的情况下,可以从客户机内存页中确定出第一尺寸标识对应的第一目标内存页。

需要说明的是,在确定出申请标识为指定标识的情况下,说明需要申请的客户机内存页对应于第一尺寸标识的宿主机内存页,即需要申请宿主机中的真实巨页,由于客户机预先基于宿主机返回的内存映射信息,记录了各个客户机内存页对应的宿主机内存页的尺寸标识,因而客户机可以从各个客户机内存页中选择出对应于第一尺寸标识的宿主机内存页的第一目标内存页。也即是,各个客户机内存页中的第一目标内存页对应于第一尺寸标识的宿主机内存页,即第一目标内存页在宿主机中对应于真实巨页。

沿用上例,客户机共包括5个客户机内存页,其中客户机内存页X1、X2、X3在宿主机中映射的宿主机内存页为巨页,因而此时可以将客户机内存页X1、X2、X3确定为第一目标内存页。

本说明书实施例中客户机在申请使用内存时,若在内存申请指令中指明了需要大尺寸内存页,则客户机可以从各个客户机内存页中确定出对应于大尺寸宿主机内存页的目标内存页,以进行分配。如此,允许客户机在申请内存时指明是否需要大尺寸宿主机内存页,使得客户机可以提供额外的内存分配支持,从而使得客户机可以高效管理内存,大尺寸宿主机内存页可以分配给真正需要的申请指令,合理利用内存空间,优化大尺寸宿主机内存页的收益,提高内存利用效率。

本实施例一个可选的实施方式中,若客户机通过比特位来记录客户机内存页对应的宿主机内存页的尺寸标识,则可以基于各个客户机内存页的比特位信息,来确定第一目标内存页,也即从客户机内存页中确定出第一尺寸标识对应的第一目标内存页,具体实现过程可以如下:

获取各个客户机内存页对应的比特位信息;

从获取到的各个比特位信息中确定出表示第一尺寸标识的目标比特位信息;

将目标比特位信息对应的客户机内存页确定为第一目标内存页。

需要说明的是,可以从空闲内存中获取各个客户机内存页对应的比特位信息,然后确定各个比特位信息中包括的比特位的数值,基于该数值确定描述第一尺寸标识的目标比特位信息,从而确定出对应的第一目标内存页。

一种可能的实现方式中,若使用多个比特位来描述客户机内存页对应的宿主机内存页的尺寸标识,那么则可以确定各个比特位信息中包括512个连续为1的比特位的目标比特位信息,该目标比特位信息对应的客户机内存页即为第一目标内存页,映射于第一尺寸标识的宿主机内存页。

另一种可能的实现方式中,若仅使用一个比特位来描述客户机内存页对应的宿主机内存页的尺寸标识,那么则可以确定各个比特位信息中比特位的数值为1的目标比特位信息,该目标比特位信息对应的客户机内存页即为第一目标内存页,映射于第一尺寸标识的宿主机内存页。

本说明书实施例中,可以通过比特位信息来记录客户机内存页对应的宿主机内存页的尺寸标识,后续可以直接通过各个客户机内存页对应的比特位信息,来确定出可以分配的第一目标内存页,确定出的第一目标内存页映射于第一尺寸标识的宿主机内存页,使得客户机可以供额外的内存分配支持,在分配内存时可以有所区分,将大尺寸宿主机内存页分配给真正需要的申请指令,从而高效管理内存,合理利用内存空间,优化大尺寸内存页的收益,提高内存利用效率。

本实施例一个可选的实施方式中,若客户机直接通过客户机内存页的页结构记录客户机内存页对应的宿主机内存页的尺寸标识,那么可以直接基于客户机内存页的页结构,来确定第一目标内存页,也即从客户机内存页中确定出第一尺寸标识对应的第一目标内存页,具体实现过程可以如下:

获取各个客户机内存页的页结构中添加的描述字段;

从获取到的各个描述字段中确定出第一尺寸标识对应的目标描述字段;

将目标描述字段所属的客户机内存页确定为第一目标内存页。

需要说明的是,可以直接查询各个客户机内存页的页结构,获取各个页结构中添加的描述字段,然后从各个描述字段中确定出第一尺寸标识对应的目标描述字段,该目标描述字段所属的客户机内存页即为第一目标内存页,映射于第一尺寸标识的宿主机内存页,使得客户机可以供额外的内存分配支持,在分配内存时可以有所区分,将大尺寸宿主机内存页分配给真正需要的申请指令,从而高效管理内存,合理利用内存空间,优化大尺寸内存页的收益,提高内存利用效率。

进一步地,在确定出申请标识不为指定标识的情况下,可以从客户机内存页中确定出第二尺寸标识对应的第二目标内存页。需要说明的是,在确定出申请标识不为指定标识的情况下,说明需要申请的客户机内存页对应于第二尺寸标识的宿主机内存页,即申请宿主机中的小页即可,由于客户机预先基于宿主机返回的内存映射信息,记录了各个客户机内存页对应的宿主机内存页的尺寸标识,因而客户机可以从各个客户机内存页中选择出对应于第二尺寸标识的宿主机内存页的第二目标内存页,以进行分配,从而可以将第一尺寸标识的宿主机内存页留给真正需要的申请指令,高效管理内存,合理利用内存空间,优化大尺寸宿主机内存页的收益,提高内存利用效率。

步骤106:向该内存申请指令分配第一目标内存页。

具体的,在从客户机内存页中确定出第一尺寸标识对应的第一目标内存页的基础上,进一步地,将向该内存申请指令分配第一目标内存页。需要说明的是,第一目标内存页对应于第一尺寸标识的宿主机内存页,即第一目标内存页在宿主机中映射于真实巨页,因而客户机从各个客户机内存页中确定出的第一目标内存页可能有多个,客户机可以随机选择一个空闲的第一目标内存页分配给该内存申请指令。

本实施例一个可选的实施方式中,向内存申请指令分配目标内存页之后,还可以包括:

接收内存访问指令,内存访问指令携带待访问的客户机虚拟地址;

根据预设地址转换表,确定客户机虚拟地址对应的宿主机物理地址;

根据宿主机物理地址执行内存访问指令。

需要说明的是,预设地址转换表可以为TLB,在TLB未命中的情况下,还可以SPT或者EPT。实际应用中,访问客户机内存时需要将客户机的虚拟地址转换为宿主机的物理地址,TLB会缓存一部分客户机虚拟地址到宿主机物理地址的地址转换关系,若TLB命中,则可以直接获取到客户机虚拟地址对应的宿主机物理地址,无需二次查表,由于第二尺寸标识的内存页(即巨页)需要的页表项更少,TLB可以覆盖更大地址范围,因而使用巨页可以使地址转换更容易命中TLB。

本说明书一个实施例提供了一种内存管理方法,客户机可以获取内存申请指令,该内存申请指令携带申请标识,在申请标识为指定标识的情况下,说明需要申请大尺寸内存页,此时可以从客户机内存页中确定出第一尺寸标识对应的第一目标内存页,该第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识,也即可以从客户机内存页中确定出对应于大尺寸宿主机内存页的第一目标内存页,之后向内存申请指令分配该第一目标内存页。这种情况下,客户机在申请内存时,可以携带申请标识,以指明需要申请哪一尺寸类型的内存页,从而在真正需要大尺寸内存页时,再分配客户机内存页中对应于大尺寸宿主机内存页的第一目标内存页;也即是,客户机可以提供额外的内存分配支持,允许在申请内存时指明是否需要大尺寸宿主机内存页,从而使得客户机可以高效管理内存,大尺寸宿主机内存页可以分配给真正需要的申请指令,合理利用内存空间,优化大尺寸宿主机内存页的收益,提高内存利用效率。

图3示出了根据本说明书一个实施例提供的另一种内存管理方法的流程图,应用于宿主机,包括以下步骤:

步骤302:确定是否满足内存处理条件。

需要说明的是,内存处理条件可以是指为客户机分配内存的条件或者对客户机内存进行规整、拆分的条件;也就是说,满足内存处理条件,即是满足为客户机分配内存或对客户机内存进行规整、拆分需要满足的条件。

一种可能的实现方式中,内存处理条件可以为在宿主机上创建了新的客户机,此时宿主机可以确定满足内存处理条件,后续宿主机可以为该客户机分配内存;另一种可能的实现方式中,内存处理条件可以为客户机向宿主机发送内存处理请求,宿主机接收到该内存处理请求时,确定满足内存处理条件,后续可以为该客户机分配内存;又一种可能的实现方式中,内存处理条件可以为触发内存规整(如达到预设时间、内存不足时),此时宿主机可以确定满足内存处理条件,后续宿主机可以为该客户机分配内存。

步骤304:在满足内存处理条件的情况下,向客户机内存页分配对应的宿主机内存页,并确定宿主机内存页的尺寸标识,尺寸标识包括第一尺寸标识,第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识。

需要说明的是,宿主机内存页的尺寸标识除了可以包括第一尺寸标识之外,还可以包括第二尺寸标识,第二尺寸标识为内存尺寸不大于预设尺寸阈值的宿主机内存页的标识。也即是说,宿主机内存页可以分为两种尺寸类型,一种为第一尺寸标识的宿主机内存页,另一种为第二尺寸标识的宿主机内存页,后续可以根据实际需求进行分配,以供使用。

步骤306:根据客户机内存页和对应的宿主机内存页的尺寸标识,生成内存映射信息,并将内存映射信息返回给客户机,内存映射信息用于指示客户机在内存申请指令携带指定标识的情况下,从客户机内存页中确定出第一尺寸标识对应的第一目标内存页进行分配。

实际应用中,宿主机在为客户机分配内存或者对客户机内存进行规整、拆分时,可以为每个客户机内存页分配对应的宿主机内存页,分配的宿主机内存页可能为第一尺寸标识的内存页(即大尺寸的内存页,巨页),也可能为第二尺寸标识的内存页(即小尺寸的内存页,小页)。宿主机在向客户机内存页分配对应的宿主机内存页之后,还可以确定分配的各个宿主机内存页的尺寸标识,并基于客户机内存页和对应的宿主机内存页的尺寸标识,生成内存映射信息,将该内存映射信息返回给客户机,使得客户机可以根据接收到的内存映射信息,记录各个客户机内存页对应的宿主机内存页的尺寸标识,从而维护客户机内存页在宿主机中映射于宿主机巨页还是宿主机小页,以供后续申请内存时作为内存分配的依据,高效管理内存。

本说明书一个实施例提供了一种内存管理方法,宿主机可以向客户机内存页分配对应的宿主机内存页,并确定宿主机内存页的尺寸标识,然后根据客户机内存页和对应的宿主机内存页的尺寸标识,生成内存映射信息,并将内存映射信息返回给客户机。如此,宿主机可以将基于客户机内存页和对应的宿主机内存页的尺寸标识生成的内存映射信息向上透传给客户机,使得客户机可以感知并记录客户机内存页映射的宿主机内存页的尺寸类型,从而使得客户机可以供额外的内存分配支持,允许在申请内存时指明需要哪种尺寸类型的内存页,使得客户机在分配内存时可以有所区分,将大尺寸宿主机内存页分配给真正需要的申请指令,从而高效管理内存,合理利用内存空间,优化大尺寸内存页的收益,提高内存利用效率。

图4示出了根据本说明书一个实施例提供的又一种内存管理方法的流程图,包括以下步骤:

步骤402:宿主机确定是否满足内存处理条件,在满足内存处理条件的情况下,向客户机内存页分配对应的宿主机内存页,并确定宿主机内存页的尺寸标识,该尺寸标识包括第一尺寸标识和第二尺寸标识,第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识,第二尺寸标识为内存尺寸不大于预设尺寸阈值的宿主机内存页的标识。

步骤404:宿主机根据客户机内存页和对应的宿主机内存页的尺寸标识,生成内存映射信息,并将内存映射信息返回给客户机。

步骤406:客户机获取宿主机返回的内存映射信息,根据内存映射信息,记录各个客户机内存页对应的宿主机内存页的尺寸标识。

步骤408:客户机获取内存申请指令,该内存申请指令携带申请标识。

步骤410:客户机在申请标识为指定标识的情况下,从客户机内存页中确定出第一尺寸标识对应的第一目标内存页,向内存申请指令分配第一目标内存页。

步骤412:客户机在申请标识不为指定标识的情况下,从客户机内存页中确定出第二尺寸标识对应的第二目标内存页,向内存申请指令分配第二目标内存页。

本说明书一个实施例提供了一种内存管理方法,宿主机可以将基于客户机内存页和对应的宿主机内存页的尺寸标识生成的内存映射信息向上透传给客户机,使得客户机可以感知并记录客户机内存页映射的宿主机内存页的尺寸类型,从而使得客户机可以供额外的内存分配支持,允许在申请内存时指明需要哪种尺寸类型的内存页,使得客户机在分配内存时可以有所区分,将大尺寸宿主机内存页分配给真正需要的申请指令,从而高效管理内存,合理利用内存空间,优化大尺寸内存页的收益,提高内存利用效率。

与上述方法实施例相对应,本说明书还提供了内存管理装置实施例,图5示出了本说明书一个实施例提供的一种内存管理装置的结构示意图,应用于客户机,如图5所示,该装置包括:

获取模块502,被配置为获取内存申请指令,内存申请指令携带申请标识;

第一确定模块504,被配置为在申请标识为指定标识的情况下,从客户机内存页中确定出第一尺寸标识对应的第一目标内存页,第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识;

分配模块506,被配置为向内存申请指令分配第一目标内存页。

可选地,该装置还包括记录模块,被配置为:

获取宿主机返回的内存映射信息,内存映射信息包括客户机内存页与宿主机内存页的尺寸标识之间的对应关系,尺寸标识包括第一尺寸标识和第二尺寸标识,第二尺寸标识为内存尺寸不大于预设尺寸阈值的宿主机内存页的标识;

根据内存映射信息,记录各个客户机内存页对应的宿主机内存页的尺寸标识。

可选地,记录模块进一步被配置为:

确定各个客户机内存页对应的宿主机内存页的尺寸标识;

根据尺寸标识,设置比特位的数值,获得各个客户机内存页对应的比特位信息;

将各个客户机内存页对应的比特位信息存储在空闲内存中。

可选地,第一确定模块504进一步被配置为:

获取各个客户机内存页对应的比特位信息;

从获取到的各个比特位信息中确定出表示第一尺寸标识的目标比特位信息;

将目标比特位信息对应的客户机内存页确定为第一目标内存页。

可选地,记录模块进一步被配置为:

确定各个客户机内存页对应的宿主机内存页的尺寸标识;

在各个客户机内存页的页结构中添加对应的尺寸标识的描述字段。

可选地,第一确定模块504进一步被配置为:

获取各个客户机内存页的页结构中添加的描述字段;

从获取到的各个描述字段中确定出第一尺寸标识对应的目标描述字段;

将目标描述字段所属的客户机内存页确定为第一目标内存页。

可选地,申请标识为宿主机内存页的尺寸标识;该装置包括第四确定模块,被配置为:

在尺寸标识为第一尺寸标识的情况下,确定申请标识为指定标识;

在尺寸标识为第二尺寸标识的情况下,确定申请标识不为指定标识。

可选地,申请标识为申请类型;该装置包括第五确定模块,被配置为:

在申请类型为预设申请类型的情况下,确定申请标识为指定标识;

在申请类型不为预设申请类型的情况下,确定申请标识不为指定标识。

可选地,该装置还包括执行模块,被配置为:

接收内存访问指令,内存访问指令携带待访问的客户机虚拟地址;

根据预设地址转换表,确定客户机虚拟地址对应的宿主机物理地址;

根据宿主机物理地址执行内存访问指令。

本说明书一个实施例提供了一种内存管理装置,客户机在申请内存时,可以携带申请标识,以指明需要申请哪一尺寸类型的内存页,从而在真正需要大尺寸内存页时,再分配客户机内存页中对应于大尺寸宿主机内存页的第一目标内存页;也即是,客户机可以提供额外的内存分配支持,允许在申请内存时指明是否需要大尺寸宿主机内存页,从而使得客户机可以高效管理内存,大尺寸宿主机内存页可以分配给真正需要的申请指令,合理利用内存空间,优化大尺寸宿主机内存页的收益,提高内存利用效率。

上述为本实施例的一种内存管理装置的示意性方案。需要说明的是,该内存管理装置的技术方案与上述的内存管理方法的技术方案属于同一构思,内存管理装置的技术方案未详细描述的细节内容,均可以参见上述内存管理方法的技术方案的描述。

与上述方法实施例相对应,本说明书还提供了另一种内存管理装置实施例,图6示出了本说明书一个实施例提供的另一种内存管理装置的结构示意图,应用于宿主机,如图6所示,该装置包括:

第二确定模块602,被配置为确定是否满足内存处理条件;

第三确定模块604,被配置为在满足内存处理条件的情况下,向客户机内存页分配对应的宿主机内存页,并确定宿主机内存页的尺寸标识,尺寸标识包括第一尺寸标识,第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识;

返回模块606,被配置为根据客户机内存页和对应的宿主机内存页的尺寸标识,生成内存映射信息,并将内存映射信息返回给客户机,内存映射信息用于指示客户机在内存申请指令携带指定标识的情况下,从客户机内存页中确定出第一尺寸标识对应的第一目标内存页进行分配。

本说明书一个实施例提供了一种内存管理装置,宿主机可以将基于客户机内存页和对应的宿主机内存页的尺寸标识生成的内存映射信息向上透传给客户机,使得客户机可以感知并记录客户机内存页映射的宿主机内存页的尺寸类型,从而使得客户机可以供额外的内存分配支持,允许在申请内存时指明需要哪种尺寸类型的内存页,使得客户机在分配内存时可以有所区分,将大尺寸宿主机内存页分配给真正需要的申请指令,从而高效管理内存,合理利用内存空间,优化大尺寸内存页的收益,提高内存利用效率。

上述为本实施例的一种内存管理装置的示意性方案。需要说明的是,该内存管理装置的技术方案与上述的内存管理方法的技术方案属于同一构思,内存管理装置的技术方案未详细描述的细节内容,均可以参见上述内存管理方法的技术方案的描述。

与上述方法实施例相对应,本说明书还提供了内存管理系统实施例,图7示出了本说明书一个实施例提供的一种内存管理系统的结构示意图,如图7所示,该系统包括:宿主机702和客户机704;

宿主机702,被配置为确定是否满足内存处理条件;在满足内存处理条件的情况下,向客户机内存页分配对应的宿主机内存页,并确定宿主机内存页的尺寸标识,尺寸标识包括第一尺寸标识,第一尺寸标识为内存尺寸大于预设尺寸阈值的宿主机内存页的标识;根据客户机内存页和对应的宿主机内存页的尺寸标识,生成内存映射信息,并将内存映射信息返回给客户机;

客户机704,被配置为获取宿主机返回的内存映射信息,根据内存映射信息,记录各个客户机内存页对应的宿主机内存页的尺寸标识;获取内存申请指令,内存申请指令携带申请标识;在申请标识为指定标识的情况下,从客户机内存页中确定出第一尺寸标识对应的第一目标内存页,向内存申请指令分配第一目标内存页。

本说明书一个实施例提供了一种内存管理系统,宿主机可以将基于客户机内存页和对应的宿主机内存页的尺寸标识生成的内存映射信息向上透传给客户机,使得客户机可以感知并记录客户机内存页映射的宿主机内存页的尺寸类型,从而使得客户机可以供额外的内存分配支持,允许在申请内存时指明需要哪种尺寸类型的内存页,使得客户机在分配内存时可以有所区分,将大尺寸宿主机内存页分配给真正需要的申请指令,从而高效管理内存,合理利用内存空间,优化大尺寸内存页的收益,提高内存利用效率。

上述为本实施例的一种内存管理系统的示意性方案。需要说明的是,该内存管理系统的技术方案与上述的内存管理方法的技术方案属于同一构思,内存管理系统的技术方案未详细描述的细节内容,均可以参见上述内存管理方法的技术方案的描述。

图8示出了根据本说明书一个实施例提供的一种计算设备的结构框图。该计算设备800的部件包括但不限于存储器810和处理器820。处理器820与存储器810通过总线830相连接,数据库850用于保存数据。

计算设备800还包括接入设备840,接入设备840使得计算设备800能够经由一个或多个网络860通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备840可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。

在本说明书的一个实施例中,计算设备800的上述部件以及图8中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图8所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。

计算设备800可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备800还可以是移动式或静止式的服务器。

其中,处理器820用于执行如下计算机可执行指令,以实现上述任意一项内存管理方法的操作步骤。

上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的内存管理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述内存管理方法的技术方案的描述。

本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于实现上述任意一项内存管理方法的操作步骤。

上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的内存管理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述内存管理方法的技术方案的描述。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

计算机指令包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

本文发布于:2023-04-13 09:21:35,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/3/85930.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图