内存规整方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:38131310 阅读:8 留言:0更新日期:2023-07-08 09:39
本公开提供内存规整方法、装置、设备及存储介质,所述方法包括:根据内存块的使用状态及位置,确定规整目标对象和规整源对象;规整目标对象包括零散已换出内存块集合,对应的规整源对象包括与连续已换出空间相邻的冷块集合;规整目标对象包括零散空闲内存块集合,对应的规整源对象包括与连续空闲空间相邻的冷块集合;零散已换出内存块集合中,连续的已换出内存块的数量小于第一阈值;连续已换出空间中,连续的已换出内存块的数量大于或等于第一阈值;零散空闲内存块集合中,连续的空闲内存块的数量小于第二阈值;连续空闲空间中,连续的空闲内存块的数量大于或等于第二阈值;将规整目标对象的使用状态与对应的规整源对象的使用状态进行置换。使用状态进行置换。使用状态进行置换。

【技术实现步骤摘要】
内存规整方法、装置、计算机设备及存储介质


[0001]本公开涉及计算机
,尤其涉及内存规整方法、装置、计算机设备及存储介质。

技术介绍

[0002]操作系统对于每个运行的进程,会为其分配一定数量的内存块。为了灵活使用内存,对于已分配给各个进程的各个内存块,操作系统的内存管理模块会记录这些内存块的冷热状态信息,针对进程不频繁使用的内存,可以通过内存交换解决内存空间紧张的问题。然而,随着内存交换的进行,可能导致内存碎片化越来越严重,出现大量零散的空闲内存,而无法分配连续的大段内存。

技术实现思路

[0003]为克服相关技术中存在的问题,本公开提供了内存规整方法、装置、计算机设备及存储介质。
[0004]根据本公开实施例的第一方面,提供一种内存规整方法,所述方法包括:
[0005]根据待规整存储空间中各内存块的使用状态以及在所述待规整存储空间中的位置,确定规整目标对象和对应的规整源对象;其中,所述规整目标对象包括零散已换出内存块集合,对应的规整源对象包括与连续已换出空间相邻的冷块集合;和/或,所述规整目标对象包括零散空闲内存块集合,对应的规整源对象包括与连续空闲空间相邻的冷块集合;所述零散已换出内存块集合中,连续的已换出内存块的数量小于第一阈值;所述连续已换出空间中,连续的已换出内存块的数量大于或等于第一阈值;所述零散空闲内存块集合中,连续的空闲内存块的数量小于第二阈值;所述连续空闲空间中,连续的空闲内存块的数量大于或等于第二阈值;
[0006]将所述规整目标对象的使用状态与所述对应的规整源对象的使用状态进行置换。
[0007]根据本公开实施例的第二方面,提供一种内存规整装置,包括:
[0008]确定模块,用于根据待规整存储空间中各内存块的使用状态以及在所述待规整存储空间中的位置,确定规整目标对象和对应的规整源对象;其中,所述规整目标对象包括零散已换出内存块集合,对应的规整源对象包括与连续已换出空间相邻的冷块集合;和/或,所述规整目标对象包括零散空闲内存块集合,对应的规整源对象包括与连续空闲空间相邻的冷块集合;所述零散已换出内存块集合中,连续的已换出内存块的数量小于第一阈值;所述连续已换出空间中,连续的已换出内存块的数量大于或等于第一阈值;所述零散空闲内存块集合中,连续的空闲内存块的数量小于第二阈值;所述连续空闲空间中,连续的空闲内存块的数量大于或等于第二阈值;
[0009]置换模块,用于将所述规整目标对象的使用状态与所述对应的规整源对象的使用状态进行置换。
[0010]根据本公开实施例的第三方面,提供一种计算机设备,包括存储器、处理器及存储
在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现前述第一方面所述内存规整方法实施例的步骤。
[0011]根据本公开实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述第一方面所述内存规整方法实施例的步骤。
[0012]本公开的实施例提供的技术方案可以包括以下有益效果:
[0013]本公开实施例中,通过获取待规整存储空间中各内存块的使用状态以及在所述待规整存储空间中的位置,能够确定出零散已换出内存块,以及对应的与连续已换出空间相邻的冷块;通过将两者置换,形成连续的一大段已换出内存块,这大段已换出内存块就可以被内存管理模块回收以分配出连续的大段内存。或者,本实施例也能够确定出零散空闲内存块,以及对应的与连续空闲空间相邻的冷块;通过将两者置换,能够形成连续空闲空间。本实施例能够对内存进行规整,尽量以地址连续的形式换出内存,同时针对碎片内存的情况进行主动的内存规整,保证空闲内存尽量连续。
[0014]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
[0015]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
[0016]图1是本说明书根据一示例性实施例示出的一种预留内存场景的示意图。
[0017]图2A是本说明书根据一示例性实施例示出的一种内存规整方法的流程图。
[0018]图2B是本说明书根据一示例性实施例示出的一种NUMA架构的示意图。
[0019]图2C是本说明书根据一示例性实施例示出的内存的一段存储空间的示意图。
[0020]图3是本说明书根据一示例性实施例示出的一种内存规整装置所在设备的框图。
[0021]图4是本说明书根据一示例性实施例示出的一种内存规整装置的框图。
具体实施方式
[0022]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
[0023]在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0024]应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或


……
时”或“响应于确定”。
[0025]操作系统的内存管理模块会将内存按设定的管理粒度进行划分,每一管理粒度可称为页(page),或者也可称为块。在一些例子中,计算机设备可以采用传统的内存管理架构,即由操作系统管理整个内存。在另一些场景中,例如虚拟机场景下,计算机设备可以采用预留内存的内存分配架构,如图1所示,是本说明书根据一示例性示出的预留内存场景的示意图,在该架构中,宿主机的内存可以包括多种存储空间,如图1中采用不同填充方式示出了内存的其中两个存储空间,包括供内核使用的非预留存储空间a(图中采用斜线填充),以及供虚拟机使用的预留存储空间b(图中采用网格线填充)。也即是,非预留存储空间a用于供图中的内核使用,内核对该存储空间的划分粒度通常较小,例如4KB(Kilobyte,千字节)等;运行于操作系统上的应用(如图中示例的应用1至应用3)可使用该非预留存储空间a。而预留存储空间b则可供虚拟机(VM,Virtual Machine)使用,如图中示出的VM1至VMn共n个虚拟机。两个存储空间可以采用不同的管理粒度,即对内存的划分方式可以是不同的。本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存规整方法,所述方法包括:根据待规整存储空间中各内存块的使用状态以及在所述待规整存储空间中的位置,确定规整目标对象和对应的规整源对象;其中,所述规整目标对象包括零散已换出内存块集合,对应的规整源对象包括与连续已换出空间相邻的冷块集合;和/或,所述规整目标对象包括零散空闲内存块集合,对应的规整源对象包括与连续空闲空间相邻的冷块集合;所述零散已换出内存块集合中,连续的已换出内存块的数量小于第一阈值;所述连续已换出空间中,连续的已换出内存块的数量大于或等于第一阈值;所述零散空闲内存块集合中,连续的空闲内存块的数量小于第二阈值;所述连续空闲空间中,连续的空闲内存块的数量大于或等于第二阈值;将所述规整目标对象的使用状态与对应的规整源对象的使用状态进行置换。2.根据权利要求1所述的方法,所述根据待规整存储空间中各内存块的使用状态以及在内存中的位置,确定规整目标对象和对应的规整源对象,包括:根据待规整存储空间中内存块的数量,生成未置位的位图;获取所述待规整存储空间的元数据,根据所述元数据中记录的内存块在内存中的位置,确定所述内存块在所述位图中的对应比特,根据所述元数据中记录的内存块的使用状态,对所述内存块在所述位图中的对应比特进行置位;根据所述位图的各比特,确定规整源对象和对应的规整目标对象。3.根据权利要求2所述的方法,所述位图包括表示内存块的使用状态为交换情况的交换位图,所述交换位图中比特是否置位表示对应内存块是否为已交换内存块;所述规整目标对象,通过如下方式确定:根据所述交换位图,生成零散已换出位图;其中,所述零散已换出位图中置位的比特,与所述交换位图中连续置位的比特位数小于第一阈值的比特对应;根据所述零散已换出位图中置位的比特,确定所述零散已换出内存块集合;和/或,所述位图包括表示内存块的使用状态为空闲情况的空闲位图,所述空闲位图中置位的比特表示对应内存块为空闲内存块;所述规整目标对象,通过如下方式确定:根据所述空闲位图,生成零散空闲位图;其中,所述零散空闲位图中置位的比特,与所述空闲位图中连续置位的比特位数小于第二阈值的比特对应;根据所述零散空闲位图中置位的比特,确定所述零散空闲内存块集合。4.根据权利要求3所述的方法,所述规整源对象,通过如下方式确定:利用所述交换位图和所述零散已换出位图,生成连续已换出位图,所述连续已换出位图中置位的比特表示连续已换出空间;针对所述交换位图中未置位的比特,查询对应内存块是否属于冷块,根据查询结果生成第一冷块位图;所述第一冷块位图中置位的比特表示对应内存块为冷块;根据所述连续已换出位图和所述第一冷块位图,确定与所述连续已换出空间相邻的冷块集合;和/或,利用所述空闲位图和所述零散空闲位图,生成连续空闲位图,所述连续空闲位图中置
位的比特表示连续空闲空间;针对所述空闲位图中未置位的比特,查询对应内存块是否属于冷块,根据查询结果生成第二冷块位图;所述第二冷块位图中置位的比特表示对应内存块为冷块;根据所述连续空闲位图和所述第二冷块位图,确定与所述连续空闲空间相邻的冷块集合。5.根据...

【专利技术属性】
技术研发人员:郑豪
申请(专利权)人:阿里云计算有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1