CN116483740B - 内存数据的迁移方法、装置、存储介质及电子装置 - Google Patents

内存数据的迁移方法、装置、存储介质及电子装置 Download PDF

Info

Publication number
CN116483740B
CN116483740B CN202310743575.1A CN202310743575A CN116483740B CN 116483740 B CN116483740 B CN 116483740B CN 202310743575 A CN202310743575 A CN 202310743575A CN 116483740 B CN116483740 B CN 116483740B
Authority
CN
China
Prior art keywords
memory
memory space
target
parameter
space
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310743575.1A
Other languages
English (en)
Other versions
CN116483740A (zh
Inventor
王云
王兴隆
李金锋
王海梦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202310743575.1A priority Critical patent/CN116483740B/zh
Publication of CN116483740A publication Critical patent/CN116483740A/zh
Application granted granted Critical
Publication of CN116483740B publication Critical patent/CN116483740B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本申请实施例提供了一种内存数据的迁移方法、装置、存储介质及电子装置,其中,该方法包括:检测目标内存空间的内存使用参数,其中,目标内存空间是为待迁移内存数据的目标应用所分配的内存空间,目标内存空间中包括属于第一类型的第一内存空间和属于第二类型的第二内存空间,内存使用参数用于指示目标内存空间被使用的频率分布,目标应用对第一内存空间的操作效率高于目标应用对第二内存空间的操作效率;根据内存使用参数和目标迁移参数从第二内存空间中筛选出第三内存空间;将第三内存空间中所存储的第一内存数据迁移至第一内存空间。通过本申请,解决了内存使用的效率较低的问题,进而达到了提高内存使用的效率的效果。

Description

内存数据的迁移方法、装置、存储介质及电子装置
技术领域
本申请实施例涉及计算机领域,具体而言,涉及一种内存数据的迁移方法、装置、存储介质及电子装置。
背景技术
随着超大型数据中心出现破记录的增长趋势,内存需求问题应运而生。在这种情况下,为了满足应用在实现更丰富的功能时,能够提供足够的内存空间,CXL(ComputeExpress Link,计算快速连接)技术应运而生,CXL是一种开放的行业标准互连,在主机处理器和加速器、内存缓冲区和智能I/O设备(Input/Output,输入/输出)等等设备之间提供高带宽、低延迟的连接。目前,CXL技术最流行的应用领域便是拓展内存容量,但在完成了对内存容量的扩展后,对设备的本地内存与扩展的内存之间仍然缺少针对应用使用的过程中进行动态可伸缩式内存的管理和分层的方法。
针对相关技术中,内存使用的效率较低等问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种内存数据的迁移方法、装置、存储介质及电子装置,以至少解决相关技术中内存使用的效率较低的问题。
根据本申请的一个实施例,提供了一种内存数据的迁移方法,包括:
检测目标内存空间的内存使用参数,其中,所述目标内存空间是为待迁移内存数据的目标应用所分配的内存空间,所述目标内存空间中包括属于第一类型的第一内存空间和属于第二类型的第二内存空间,所述内存使用参数用于指示所述目标内存空间被使用的频率分布,所述目标应用对所述第一内存空间的操作效率高于所述目标应用对所述第二内存空间的操作效率;
根据所述内存使用参数和目标迁移参数从所述第二内存空间中筛选出第三内存空间,其中,所述目标迁移参数是根据所述目标内存空间的分配参数确定的,所述分配参数用于指示所述第一内存空间和所述第二内存空间在所述目标内存空间中的占比,所述目标迁移参数用于指示所述目标内存空间中允许迁移内存数据的内存空间的占比,所述第三内存空间是所述第二内存空间中被使用的频率高于第一频率阈值的内存空间;
将所述第三内存空间中所存储的第一内存数据迁移至所述第一内存空间。
在一个示例性实施例中,所述根据所述内存使用参数和目标迁移参数从所述第二内存空间中筛选出第三内存空间,包括:
按照使用参数由高至低提取多个内存单元中满足第一占比的内存单元作为第一内存单元集合,其中,所述多个内存单元是所述目标内存空间中已存储数据的内存单元,所述内存使用参数包括具有对应关系的内存单元和使用参数,所述使用参数用于指示对应的内存单元被使用的频率,所述目标迁移参数包括所述第一占比;
从所述第一内存单元集合中提取属于所述第二内存空间的内存单元,得到所述第三内存空间。
在一个示例性实施例中,在所述按照使用参数由高至低提取多个内存单元中满足第一占比的内存单元作为第一内存单元集合之前,所述方法还包括:
获取所述目标内存空间的所述分配参数;
根据所述分配参数确定所述第一占比。
在一个示例性实施例中,所述获取所述目标内存空间的所述分配参数,包括:获取所述第一内存空间在所述目标内存空间中的第一分配占比,其中,所述分配参数包括所述第一分配占比;
所述根据所述分配参数确定所述第一占比,包括:将所述第一分配占比与第一预设占比的差值确定为所述第一占比。
在一个示例性实施例中,所述根据所述内存使用参数和目标迁移参数从所述第二内存空间中筛选出第三内存空间,包括:
按照使用参数由高至低将多个内存单元划分为第一部分和第二部分,其中,所述第一部分与所述第二部分呈目标比例,所述多个内存单元是所述目标内存空间中已存储数据的内存单元,所述内存使用参数包括具有对应关系的内存单元和使用参数,所述使用参数用于指示对应的内存单元被使用的频率;
按照使用参数由低至高筛除所述第一部分中满足第二占比的内存单元得到第二内存单元集合,其中,所述目标迁移参数包括所述目标比例和所述第二占比;
从所述第二内存单元集合中提取属于所述第二内存空间的内存单元,得到所述第三内存空间。
在一个示例性实施例中,在所述按照使用参数由高至低将多个内存单元划分为第一部分和第二部分之前,所述方法还包括:
获取所述目标内存空间的所述分配参数;
根据所述分配参数确定所述目标比例和所述第二占比。
在一个示例性实施例中,所述获取所述目标内存空间的所述分配参数,包括:获取所述第一内存空间在所述目标内存空间中的第一分配占比,和所述第二内存空间在所述目标内存空间中的第二分配占比,其中,所述分配参数包括所述第一分配占比和所述第二分配占比;
所述根据所述分配参数确定所述目标比例和所述第二占比,包括:将所述第一分配占比与所述第二分配占比确定为所述目标比例;获取第二预设占比作为所述第二占比。
在一个示例性实施例中,在所述检测目标内存空间的内存使用参数之后,所述方法还包括:
根据所述内存使用参数和目标迁移参数从所述第一内存空间中筛选出第四内存空间,其中,所述第四内存空间是所述第一内存空间中被使用的频率低于第二频率阈值的内存空间;
将所述第四内存空间中所存储的第二内存数据迁移至所述第二内存空间。
在一个示例性实施例中,所述根据所述内存使用参数和目标迁移参数从所述第一内存空间中筛选出第四内存空间,包括:
按照使用参数由低至高提取多个内存单元中满足第三占比的内存单元作为第三内存单元集合,其中,所述多个内存单元是所述目标内存空间中已存储数据的内存单元,所述内存使用参数包括具有对应关系的内存单元和使用参数,所述使用参数用于指示对应的内存单元被使用的频率,所述目标迁移参数包括所述第三占比;
从所述第三内存单元集合中提取属于所述第一内存空间的内存单元得到所述第四内存空间。
在一个示例性实施例中,在所述按照使用参数由低至高提取多个内存单元中满足第三占比的内存单元作为第三内存单元集合之前,所述方法还包括:
获取所述目标内存空间的所述分配参数;
根据所述分配参数确定所述第三占比。
在一个示例性实施例中,所述获取所述目标内存空间的所述分配参数,包括:获取所述第二内存空间在所述目标内存空间中的第二分配占比,其中,所述分配参数包括所述第二分配占比;
所述根据所述分配参数确定所述第三占比,包括:将所述第二分配占比与第二预设占比的差值确定为所述第三占比。
在一个示例性实施例中,所述根据所述内存使用参数和目标迁移参数从所述第一内存空间中筛选出第四内存空间,包括:
按照使用参数由高至低将多个内存单元划分为第一部分和第二部分,其中,所述第一部分与所述第二部分呈目标比例,所述多个内存单元是所述目标内存空间中已存储数据的内存单元,所述内存使用参数包括具有对应关系的内存单元和使用参数,所述使用参数用于指示对应的内存单元被使用的频率;
按照所述使用参数由高至低筛除所述第二部分中满足第四占比的内存单元得到第四内存单元集合,其中,所述目标迁移参数包括所述目标比例和所述第四占比;
从所述第四内存单元集合中提取属于所述第一内存空间的内存单元得到所述第四内存空间。
在一个示例性实施例中,在所述按照使用参数由高至低将多个内存单元划分为第一部分和第二部分之前,所述方法还包括:
获取所述目标内存空间的所述分配参数;
根据所述分配参数确定所述目标比例和所述第四占比。
在一个示例性实施例中,所述获取所述目标内存空间的所述分配参数,包括:获取所述第一内存空间在所述目标内存空间中的第一分配占比,和所述第二内存空间在所述目标内存空间中的第二分配占比,其中,所述分配参数包括所述第一分配占比和所述第二分配占比;
所述根据所述分配参数确定所述目标比例和所述第四占比,包括:将所述第一分配占比与所述第二分配占比确定为所述目标比例;获取第四预设占比作为所述第四占比。
在一个示例性实施例中,所述将所述第三内存空间中所存储的第一内存数据迁移至所述第一内存空间,包括:
检测所述第一内存空间的参考剩余容量;
在所述第一内存数据的数据量大于所述参考剩余容量的情况下,从所述第一内存数据中全部被使用的内存单元中筛选数据量满足所述参考剩余容量的目标内存数据;
将所述目标内存数据迁移至所述第一内存空间。
在一个示例性实施例中,所述检测目标内存空间的内存使用参数,包括:
采集目标内存单元在一个或者多个时间段中每个时间段内的使用频次,得到一个或者多个使用频次,其中,所述目标内存单元是所述目标内存空间中已存储数据的多个内存单元中的每个内存单元;
根据所述一个或者多个使用频次计算所述目标内存单元所对应的使用参数,得到具有对应关系的内存单元和使用参数作为所述内存使用参数。
在一个示例性实施例中,所述根据所述一个或者多个使用频次计算所述目标内存单元所对应的使用参数,包括:
根据所述每个时间段与当前时间的距离为所述每个时间段分配权重,其中,所述每个时间段与当前时间的距离越小,所述每个时间段所对应的权重越大;
计算所述一个或者多个使用频次的加权和作为所述目标内存单元所对应的使用参数。
在一个示例性实施例中,在所述检测目标内存空间的内存使用参数之前,所述方法还包括:
检测为所述目标应用所分配的初始内存空间的使用率;
根据所述使用率与使用率阈值之间的关系,调整所述初始内存空间,得到所述目标内存空间。
在一个示例性实施例中,所述根据所述使用率与使用率阈值之间的关系,调整所述初始内存空间,得到所述目标内存空间,包括:
在所述使用率大于或者等于第一使用率阈值的情况下,为所述目标应用分配第一容量的附加内存空间,得到所述目标内存空间,其中,所述目标内存空间包括所述初始内存空间和所述附加内存空间;
在所述使用率小于或者等于第二使用率阈值的情况下,从所述目标内存空间中释放第二容量的内存空间,得到所述目标内存空间。
在一个示例性实施例中,所述调整所述初始内存空间,包括:
检测所述目标应用所使用的处理器核心的目标数量;
在所述目标数量大于或者等于数量阈值的情况下,使用第一内存工具调整所述初始内存空间;
在所述目标数量小于所述数量阈值的情况下,使用第二内存工具调整所述初始内存空间,其中,所述第二内存工具对内存空间的调整效率低于所述第一内存工具对内存空间的调整效率,但所述第二内存工具的运行负载小于所述第一内存工具的运行负载。
根据本申请的另一个实施例,提供了一种内存数据的迁移装置,包括:
第一检测模块,用于检测目标内存空间的内存使用参数,其中,所述目标内存空间是为待迁移内存数据的目标应用所分配的内存空间,所述目标内存空间中包括属于第一类型的第一内存空间和属于第二类型的第二内存空间,所述内存使用参数用于指示所述目标内存空间被使用的频率分布,所述目标应用对所述第一内存空间的操作效率高于所述目标应用对所述第二内存空间的操作效率;
第一筛选模块,用于根据所述内存使用参数和目标迁移参数从所述第二内存空间中筛选出第三内存空间,其中,所述目标迁移参数是根据所述目标内存空间的分配参数确定的,所述分配参数用于指示所述第一内存空间和所述第二内存空间在所述目标内存空间中的占比,所述目标迁移参数用于指示所述目标内存空间中允许迁移内存数据的内存空间的占比,所述第三内存空间是所述第二内存空间中被使用的频率高于第一频率阈值的内存空间;
第一迁移模块,用于将所述第三内存空间中所存储的第一内存数据迁移至所述第一内存空间。
根据本申请的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本申请,目标应用使用的目标内存空间包括第一内存空间和第二内存空间,根据目标内存空间中被使用的频率分布,以及目标内存空间的分配参数从目标内存空间中筛选出第二内存空间中被使用的频率高的内存空间即需要迁移的第三内存空间,由于目标应用对第一内存空间的操作效率高于目标应用对第二内存空间的操作效率,通过将第二内存空间中使用效率高的部分内存空间中存储的第一内存数据迁移至第一内存空间,提高了目标应用对使用效率高的内存数据的操作效率,从而提高了目标应用的操作效率。因此,可以解决内存使用的效率较低问题,达到提高内存使用的效率的效果。
附图说明
图1是根据本申请实施例的一种内存数据的迁移方法的移动终端的硬件结构框图;
图2是根据本申请实施例的一种内存数据的迁移方法的流程图;
图3是根据本申请实施例的一种内存使用参数确定过程的示意图;
图4是根据本申请实施例的为目标应用分配初始内存空间的流程图;
图5是根据本申请实施例的对内存空间进行动态分配的流程图;
图6是根据本申请实施例的从第一内存空间中筛选第四内存空间的示意图;
图7是根据本申请实施例的从第二内存空间中筛选第三内存空间的示意图;
图8是根据本申请实施例的在第一内存空间和第二内存空间中执行内存数据迁移的示意图;
图9是根据本申请实施例的一种内存数据的迁移装置的结构框图;
图10是根据本申请实施例的电子设备的示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是根据本申请实施例的一种内存数据的迁移方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的内存数据的迁移方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于上述移动终端的内存数据的迁移方法,图2是根据本申请实施例的一种内存数据的迁移方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,检测目标内存空间的内存使用参数,其中,所述目标内存空间是为待迁移内存数据的目标应用所分配的内存空间,所述目标内存空间中包括属于第一类型的第一内存空间和属于第二类型的第二内存空间,所述内存使用参数用于指示所述目标内存空间被使用的频率分布,所述目标应用对所述第一内存空间的操作效率高于所述目标应用对所述第二内存空间的操作效率;
步骤S204,根据所述内存使用参数和目标迁移参数从所述第二内存空间中筛选出第三内存空间,其中,所述目标迁移参数是根据所述目标内存空间的分配参数确定的,所述分配参数用于指示所述第一内存空间和所述第二内存空间在所述目标内存空间中的占比,所述目标迁移参数用于指示所述目标内存空间中允许迁移内存数据的内存空间的占比,所述第三内存空间是所述第二内存空间中被使用的频率高于第一频率阈值的内存空间;
步骤S206,将所述第三内存空间中所存储的第一内存数据迁移至所述第一内存空间。
通过上述步骤,目标应用使用的目标内存空间包括第一内存空间和第二内存空间,根据目标内存空间中被使用的频率分布,以及目标内存空间的分配参数从目标内存空间中筛选出第二内存空间中被使用的频率高的内存空间即需要迁移的第三内存空间,由于目标应用对第一内存空间的操作效率高于目标应用对第二内存空间的操作效率,通过将第二内存空间中使用效率高的部分内存空间中存储的第一内存数据迁移至第一内存空间,提高了目标应用对使用效率高的内存数据的操作效率,从而提高了目标应用的操作效率。因此,可以解决内存使用的效率较低问题,达到提高内存使用的效率的效果。
在上述步骤S202提供的技术方案中,上述内存数据的迁移方法可以但不限于是通过CXL协议实现对服务器硬件系统的内存扩展,比如:服务器硬件系统通过PCIe 5协议(Peripheral Component Interconnect Express 5,高速串行计算机扩展总线标准(第五代))实现远程共享非本地的DRAM(Dynamic Random Access Memory,动态随机存取存储器)以及共享IO设备,扩展计算机中处理器与DDR DRAM(Double Data Rate Dynamic RandomAccess Memory,双倍速率动态随机存取存储器)之间传输数据的方式,实现了远程共享内存为系统提供更高的内存容量和性能。
可选地,在本实施例中,上述内存数据的迁移方法可以但不限于应用于支持CXL协议的服务器硬件系统中,上述服务器硬件系统可以但不限于包括支持CXL协议的CPU(Central Processing Unit,中央处理器),支持CXL协议的芯片组,支持CXL协议的硬件设备和支持CXL协议的操作系统等等。上述CXL协议可以但不限于包括:CXL1.1协议,CXL1.0协议和CXL2.0协议等等。
可选地,在本实施例中,上述内存数据的迁移方法可以但不限于应用于支持CXL协议的操作系统,比如:Linux系统(GNU/Linux),Windows操作系统(Microsoft Windows,美国微软公司以图形用户界面为基础研发的操作系统),VMware ESXi系统(一款虚拟化支持windows平台运行的软件)等等。以Linux系统支持CXL协议且Linux系统包括本地内存和扩展的CXL内存为例,Linux系统可以但不限于通过以下方式管理扩展的CXL内存:
基于Linux6.2开发相应的驱动和与CXL内存相关的接口,根据SRAT(StaticResource Affinity Table,静态资源关联表)和e820(一种用于描述系统内存布局的数据结构)识别CXL内存容量和地址;在启动Linux操作系统时,将外接的CXL内存自动识别为RAM(Random Access Memory,随机存取存储器),自动识别并修改CXL内存属性为softreserved(一种内存属性,表示该内存区域已被分配但尚未使用);使用buddyinfo(一个Linux命令,用于查看系统中的Buddy Allocator信息)将本地内存与CXL内存进行区分,映射为不同的组别(NormalMemory,CxlMemory)即(本地内存,CXL内存);使用SLIT(SerialLinked Interface Technology,一种串行连接接口技术)读取CXL内存与主机处理器之间的距离,记录CXL内存使用的插槽数,根据CXL内存使用的插槽数计算CXL内存可以提供的带宽量;通过修改NUMA(Non-Uniform Memory Access,非均匀内存访问)节点API(Application Programming Interface,应用程序接口),使得用户能够在终端或程序中使用此API修改CXL内存的NUMA节点。
可选地,在本实施例中,上述目标应用可以但不限于是运行在支持CXL协议的服务器硬件系统中,上述支持CXL协议的服务器硬件系统能够运行一个或多个目标应用,可以但不限于将支持CXL协议的服务器硬件系统中运行的一个或者多个应用确定为目标应用。
可选地,在本实施例中,可以但不限于在系统启动的阶段为目标应用分配两种不同来源的内存空间得到目标内存空间。或者,可以但不限于在目标应用运行的过程中,根据目标应用对内存空间的需求,对目标应用的内存空间进行实时的调整,从而得到新的目标内存空间。
可选地,在本实施例中,属于第一类型的第一内存空间和属于第二类型的第二内存空间可以但不限于通过两种不同的方式接入目标应用所在的系统中的,上述第一类型和第二类型用于指示与第一内存空间和第二内存空间接入上述目标应用所在的系统中的方式不同。
可选地,在本实施例中,上述属于第一类型的第一内存空间可以但不限于是目标应用所在的系统的本地内存。上述属于第二类型的第二内存空间可以但不限于是目标应用所在的系统的外接内存,比如:CXL内存,可以但不限于通过CXL技术将远程内存视为本地内存使用。以外接内存为CXL内存为例,由于距离较近的CXL内存即主机处理器和远程内存之间的物理距离,能够提供更快速的数据传输速度和更低延迟,而较远的CXL内存则可能产生更高的访问延迟和更慢的数据传输速度,因此,目标应用对处于本地的第一内存空间的操作效率高于目标应用对距离较远的第二内存空间的操作效率。
可选地,在本实施例中,可以但不限于通过以下方式将上述第二类型的第二内存空间接入目标应用所在的系统中:将CXL内存(即第二内存空间)通过PCIe接口接入系统服务器,在服务器开机后,BIOS(Basic Input Output System,基本输入输出系统)识别CXL内存并记录相关CXL内存映射地址以及属性至SRAT表(Static Resource Affinity Table,网络静态资源关联表),并且记录NUMA节点距离。
可选地,在本实施例中,上述目标内存空间可以但不限于包括多个内存页,可以但不限于在内存页上执行数据的存储操作,上述属于第一类型的第一内存空间和属于第二类型的第二内存空间可以但不限于包括大小不同的多个内存页,比如:大小为2G的内存页,大小为1M的内存页,大小为2KB的内存页等等。可以但不限于根据目标应用需要存储的数据量的不同为目标应用分配相应大小以及数量的内存页。
可选地,在本实施例中,上述目标内存空间的内存使用参数用于指示目标内存空间被使用的频率分布。可以但不限于通过以下方法确定目标内存空间的内存使用参数:以目标内存空间中每个内存页为单位,检测目标内存空间中每个内存页在一段时间内使用的次数,再根据每个内存页在一段时间内使用的次数将内存页进行排序,得到目标内存空间中分布在使用频率较高区间的内存页,目标内存空间中分布在使用频率较低区间的内存页以及目标内存空间中分布在使用频率较为平稳的区间的内存页,将根据使用次数得到的区间确定为上述目标内存空间的内存使用参数。
在一个示例性实施例中,可以但不限于采用以下方式检测目标空间的内存使用参数:采集目标内存单元在一个或者多个时间段中每个时间段内的使用频次,得到一个或者多个使用频次,其中,所述目标内存单元是所述目标内存空间中已存储数据的多个内存单元中的每个内存单元;根据所述一个或者多个使用频次计算所述目标内存单元所对应的使用参数,得到具有对应关系的内存单元和使用参数作为所述内存使用参数。
可选地,在本实施例中,目标应用可以但不限于包括多个内存单元,可以但不限于将用于存储数据的内存页确定为上述内存单元。可以但不限于将目标应用中存储了数据的内存页确定为目标内存单元。
可选地,在本实施例中,可以但不限于将目标应用中存储了数据的内存页在一个或者多个时间段中每个时间段内使用的次数确定为目标内存单元的使用频次,比如:目标应用中包括N个存储了数据的内存页,N个存储了数据的内存页在一个时间段内使用了M次,因此将M次确定为目标内存单元的使用频次。或者,目标应用中包括N个存储了数据的内存页,N个存储了数据的内存页在P个时间段中每个时间段内使用了M1……MP次,因此将M1次……MP次都确定为目标内存单元的使用频次。
可选地,在本实施例中,可以但不限于根据目标内存单元的使用频次确定其所对应的使用参数,比如:目标应用中包括N个存储了数据的内存页,N个存储了数据的内存页在一个时间段内使用了M次,因此将M次确定为目标内存单元的使用频次,根据使用频次M确定其所对应的使用参数M。或者,目标应用中包括N个存储了数据的内存页,N个存储了数据的内存页在P个时间段中每个时间段内使用了M1……MP次,因此将M1次……MP次都确定为目标内存单元的使用频次,根据使用频次M1……MP确定其所对应的使用参数为M1……MP之和。
在一个示例性实施例中,可以但不限于采用以下方式根据所述一个或者多个使用频次计算所述目标内存单元所对应的使用参数:根据所述每个时间段与当前时间的距离为所述每个时间段分配权重,其中,所述每个时间段与当前时间的距离越小,所述每个时间段所对应的权重越大;计算所述一个或者多个使用频次的加权和作为所述目标内存单元所对应的使用参数。
可选地,在本实施例中,可以但不限于根据每个时间段与当前时间的距离确定每个时间段的权重,比如:目标应用中包括N个存储了数据的内存页,N个存储了数据的内存页在时间段P1,时间段P2和时间段P3分别使用了M1,M2和M3次,其对应的权重为T1,T2和T3,由于时间段P1距离当前时间最近,时间段P2与当前时间的距离长于时间段P1与当前时间的距离,时间段P3与当前时间的距离最远,因此T1>T2>T3。
在一个可选的实施方式中,提供了一种目标内存空间的内存使用参数确定过程的示例。图3是根据本申请实施例的一种内存使用参数确定过程的示意图,如图3所示,可以但不限于通过以下方式确定目标内存空间的内存使用参数:
采集目标内存单元在距当前时刻180秒内,确定每30秒为一个时间段的使用频次,得到距当前时刻180秒内每个时间段的使用频次P包括:P30,P60,P90,P120,P150和P180
根据每个时间段与当前时间时刻的距离为每个时间段分配权重T:T30,T60,T90,T120,T150和T180,其中,T30大于T60,T60大于T90,T90大于T120,T120大于T150,T150大于T180
将180秒内每个使用频次P的加权T和作为目标内存单元所对应的使用参数S:S=T180*P180+T150*P150+T120*P120+T90*P90+T60*P60+T30*P30
在一个示例性实施例中,在所述检测目标内存空间的内存使用参数之前,可以但不限于采用以下方式得到目标内存空间:检测为所述目标应用所分配的初始内存空间的使用率;根据所述使用率与使用率阈值之间的关系,调整所述初始内存空间,得到所述目标内存空间。
可选地,在本实施例中,目标应用所在的系统可以但不限于在启动该阶段自动为目标应用分配了初始内存空间,上述初始内存空间可以但不限包括属于第一类型的内存空间和属于第二类型的内存空间。
可选地,在本实施例中,上述目标应用的初始内存空间可以但不限于是特定的大小,比如:上述初始内存空间可以但不限于为M大小的第一类型的内存空间和M大小的第二类型的内存空间。或者,M大小的第一类型的内存空间和N大小的第二类型的内存空间,M和N为大于或者等于零的自然数并且M不等于N。
可选地,在本实施例中,上述目标应用的初始内存空间可以但不限于是根据目标应用占用内存的历史情况为其分配合适的初始内存空间,比如:根据目标应用在近期P次使用时对第一类型的内存空间和第二类型的内存空间的最大占用量,根据其最大占用量的中位数为目标应用分配初始内存空间。
可选地,在本实施例中,可以但不限于通过目标应用对内存空间的占用情况确定初始内存空间的使用率,比如:通过Bitmap(位图)管理内存,跟踪目标应用中内存块处于被使用的状态或者空闲的状态。
可选地,在本实施例中,可以但不限于根据目标应用对初始内存空间需求量是否超过初始内存空间确定初始内存空间的使用率。或者,可以但不限于根据目标应用对初始内存空间需求量是否远小于初始内存空间确定初始内存空间的使用率。
可选地,在本实施例中,上述使用率阈值可以但不限于是预先确定的,或者根据目标应用的内存情况实时进行修改的。上述使用率阈值可以但不限于用于确定上述目标应用对初始内存空间的占用情况是否处于平衡状态,比如:在目标应用的初始内存空间的使用率超过使用率阈值的情况下,确定目标应用对初始内存空间需求量大于初始内存空间的容量,用于指示对初始内存空间需要执行扩容操作。或者,在目标应用的初始内存空间的使用率小于使用率阈值的情况下,确定目标应用对初始内存空间需求量远小于初始内存空间的容量,用于指示可以对初始内存空间执行减少一定内容空间的操作。
在一个可选的实施方式中,提供了一种为目标应用分配初始内存空间的过程。图4是根据本申请实施例的为目标应用分配初始内存空间的流程图,如图4所示,可以但不限于通过以下方式为目标应用初始内存空间:
在系统首次启动时,根据设定的固定值针对目标应用分配预分配内存(初始内存空间)包括本地内存容量(第一类型的内存空间)和CXL内存容量(第二类型的内存空间),分配后的内存以红黑树数据结构实现,也就是优先使用距离近的CXL内存,通过应用表记录每个应用对本地内存和CXL内存最大的使用量并计算其中位数,此外也记录每个应用的使用核数均值。通过内存池表记录初始内存空间中各内存页的size_class(表示对于初始内存空间中分配的内存大小需要对齐的size)的个数和偏移量。
在系统非首次启动时,以从应用表获取目标应用在当前启动之前的P=20次使用时,对第一类型的内存空间和第二类型的内存空间的最大占用量为例,设置自动预分配内存(初始内存空间),分配容量为应用表保存的目标应用对第一类型的内存空间和第二类型的内存空间的最大占用量的中位数数据,若无中位数数据,默认设置为200MB本地内存和200MB的CXL内存。
在一个示例性实施例中,根据所述使用率与使用率阈值之间的关系,调整所述初始内存空间,可以但不限于采用以下方式得到所述目标内存空间:在所述使用率大于或者等于第一使用率阈值的情况下,为所述目标应用分配第一容量的附加内存空间,得到所述目标内存空间,其中,所述目标内存空间包括所述初始内存空间和所述附加内存空间;在所述使用率小于或者等于第二使用率阈值的情况下,从所述目标内存空间中释放第二容量的内存空间,得到所述目标内存空间。
可选地,在本实施例中,第一使用率阈值可以但不限于是预先确定的,或者根据目标应用的内存情况实时进行修改的。
可选地,在本实施例中,第一使用率阈值可以但不限于用于确定目标应用对初始内存空间的占用情况是否处于超载状态,比如:在目标应用的初始内存空间的使用率超过或者等于第一使用率阈值的情况下,确定目标应用对初始内存空间需求量大于初始内存空间的容量,对初始内存空间需要执行扩容操作。
可选地,在本实施例中,上述附加内存空间的第一容量可以但不限于根据目标应用对初始内存空间的占用情况确定的。或者,在使用率大于或者等于第一使用率阈值的情况下,为目标应用分配固定容量的附加内存空间,比如:在使用率大于或者等于第一使用率阈值的情况下,为目标应用分配200MB的附加内存空间。
可选地,在本实施例中,上述附加内存空间可以从第一类型的内存空间中获取的。或者,可以从属于第二类型的内存空间中获取的。
可选地,在本实施例中,第二使用率阈值可以但不限于是预先确定的,或者根据目标应用的内存情况实时进行修改的,第二使用率阈值可以但不限于用于指示一定时间内目标应用对内存的占用情况,比如:在一定时间内目标应用未使用初始内存空间的部分内存空间,即可以认为初始内存空间处于空载状态。或者,将在一定时间内初始内存空间中处于占用状态的内存小于或者等于初始内存空间的总容量与一定时间内初始内存空间未使用的部分内存空间的差值确定为第二使用率阈值。
可选地,在本实施例中,第二使用率阈值可以但不限于用于确定目标应用对初始内存空间的占用情况是否处于空载状态,比如:在目标应用的初始内存空间的使用率小于或者等于第二使用率阈值的情况下,确定初始内存空间的容量远大于目标应用对内存空间的需求量,对初始内存空间需要执行减少部分内存空间的操作。
可选地,在本实施例中,上述第二容量可以但不限于根据目标应用对初始内存空间的占用情况确定的。或者,在使用率小于或者等于第二使用率阈值的情况下,减少目标应用中固定容量的内存空间,比如:在使用率小于或者等于第二使用率阈值的情况下,从目标应用中减少200MB的内存空间。
在一个可选的实施方式中,提供了一种对目标应用的初始内存空间进行动态分配的过程,图5是根据本申请实施例的对内存空间进行动态分配的流程图,如图5所示,以设置2组BitMap管理内存池(初始内存空间)中内存的使用情况为例,可以但不限于通过以下过程对目标应用的初始内存空间进行动态分配,其中,2组BitMap分别为A组BitMap和B组BitMap:
A组BitMap实时检测内存是否被使用,应用运行时可弹性分配内存,可以但不限于实时监测内存池中内存的占用情况,如使用内存池(包括第一类型的内存空间和第二类型的内存空间)中的内存超过内存池中相应容量的90%(第一使用率阈值)时,调用内存分配API,增加200MB内存容量(第一容量)。
B组BitMap管理内存一定时间内的使用情况,如内存池中存在5min内未被使用的内存空间,且内存池(包括第一类型的内存空间和第二类型的内存空间)中处于占用状态的内存小于或者等于内存池的总容量与5min内未被使用的内存空间的90%(第二使用率阈值)的差值(第二使用率阈值),则释放未被使用的无用内存(第二容量)。
在一个示例性实施例中,可以但不限于采用以下方式调整所述初始内存空间:检测所述目标应用所使用的处理器核心的目标数量;在所述目标数量大于或者等于数量阈值的情况下,使用第一内存工具调整所述初始内存空间;在所述目标数量小于所述数量阈值的情况下,使用第二内存工具调整所述初始内存空间,其中,所述第二内存工具对内存空间的调整效率低于所述第一内存工具对内存空间的调整效率,但所述第二内存工具的运行负载小于所述第一内存工具的运行负载。
可选地,在本实施例中,上述数量阈值可以但不限于是预先设定的,用于根据目标应用所使用的处理器核心的目标数量选择调整内存空间的工具。
可选地,在本实施例中,第二内存工具对内存空间的调整效率低于第一内存工具对内存空间的调整效率,但第二内存工具的运行负载小于第一内存工具的运行负载,比如:第一内存工具可以但不限于为tcmalloc allocator(一种高效的内存分配器,可以更快速和高效地进行内存分配和释放操作),第二内存工具可以但不限于为jemalloc allocator(一种通用的、线程安全的内存分配器)。
在一个可选的实施方式中,提供了一种调整初始内存空间的过程,可以但不限于通过以下方式调整初始内存空间:通过表格记录每个应用所使用的处理器核心的均值,当应用使用处理器核心的数量不高于3时(数量阈值)使用tcmalloc allocator,当应用使用处理器核心的数量高于3时使用jemalloc allocator,若应用表中无记录则默认使用tcmalloc allocator。
在一个示例性实施例中,在检测目标内存空间的内存使用参数之后,可以但不限于采用以下方式:根据所述内存使用参数和目标迁移参数从所述第一内存空间中筛选出第四内存空间,其中,所述第四内存空间是所述第一内存空间中被使用的频率低于第二频率阈值的内存空间;将所述第四内存空间中所存储的第二内存数据迁移至所述第二内存空间。
可选地,在本实施例中,可以但不限于通过目标迁移参数将目标内存空间分为N个区间,用于指示目标内存空间中允许迁移的内存数据在内存空间中的占比,可以但不限于根据第一内存空间和第二内存空间在目标内存空间中的占比确定目标内存空间的目标迁移参数,比如:第一内存空间在目标内存空间的占比为A,第二内存空间在目标内存空间的占比为100-A,目标迁移参数为(A-10):20:(90-A)。或者,第一内存空间在目标内存空间的占比为A,第二内存空间在目标内存空间的占比为100-A,目标迁移参数为A:(100-A)。
可选地,在本实施例中,内存使用参数可以但不限于是根据目标内存空间的分配参数确定的,可以但不限于将第一内存空间和第二内存空间在目标内存空间中的占比确定为目标内存空间的分配参数,上述目标内存空间的分配参数可以但不限于是在为目标应用分配的目标内存空间时确定的,比如:为目标应用分配的目标内存空间包括A容量的第一内存空间以及B容量的第二内存空间,目标内存空间的分配参数包括第一内存空间在目标内存空间的占比A/(A+B)以及第二内存空间在目标内存空间的占比B/(A+B)。
可选地,在本实施例中,上述第二频率阈值可以但不限于是预先确定的,用于选择第二内存空间中被使用的频率较高的内存空间。
可选地,在本实施例中,可以但不限于将第一内存空间中使用频率较高的部分内存空间确定为第四内存空间,由于目标应用对第一内存空间的操作效率高于对第二内存空间的操作效率,因此将第一内存空间中使用频率低的部分内存空间迁移至第二内存空间使得目标应用的操作效率增高。
在一个示例性实施例中,可以但不限于采用以下方式根据所述内存使用参数和目标迁移参数从所述第一内存空间中筛选出第四内存空间:按照使用参数由低至高提取多个内存单元中满足第三占比的内存单元作为第三内存单元集合,其中,所述多个内存单元是所述目标内存空间中已存储数据的内存单元,所述内存使用参数包括具有对应关系的内存单元和使用参数,所述使用参数用于指示对应的内存单元被使用的频率,所述目标迁移参数包括所述第三占比;从所述第三内存单元集合中提取属于所述第一内存空间的内存单元得到所述第四内存空间。
可选地,在本实施例中,上述使用参数可以但不限于是目标应用的目标内存空间中的每个内存单元的使用频率,比如:目标内存空间中包括多个内存单元,内存单元在一个或者多个时间段内每进行一次操作(可以但不限于包括增加,删除,查找和修改等等)即对内存单元的使用次数+1,得到内存单元在一个或者多个时间段内使用次数的总和,再根据执行操作所在的时间段与当前时间的距离为执行操作次数之和给予权重,从而得到每个内存单元的使用参数。
可选地,在本实施例中,可以但不限于根据使用参数将多个内存单元进行排列,比如:根据使用参数将每个内存单元从高至低进行排列。或者,根据使用参数将每个内存单元从低至高进行排列。
可选地,在本实施例中,上述第三占比用于指示目标内存单元中满足一定比例的内存单元,可以但不限于根据目标迁移参数确定第三占比,比如:目标内存空间的标迁移参数为A:(100-A),可以但不限于将(100-A)确定为第三占比。或者,目标内存空间的标迁移参数为(A-10):20:(90-A),可以但不限于将(90-A)确定为第三占比。
可选地,在本实施例中,上述第三内存单元集合是目标内存单元中被使用的频率最低的且满足第三占比的内存单元,比如:以第三占比为20%,目标内存空间包括100个内存单元为例,根据内存单元被使用的频率将内存单元按照被使用的频率低的内存单元至被使用的频率低的顺序进行排列,从低至高选择被使用的频率最高的20个内存单元为第三内存单元集合。
可选地,在本实施例中,可以但不限于将被使用的频率最高内存单元中属于第一内存空间的内存单元确定为第四内存空间,比如:以第三内存单元集合包括100个内存单元为例,从第三内存单元集合中查找得到50个属于第一内存空间的内存单元,将第三内存单元集合中50个属于第一内存空间的内存单元确定为第四内存空间。
在一个示例性实施例中,在所述按照使用参数由低至高提取多个内存单元中满足第三占比的内存单元作为第三内存单元集合之前,可以但不限于采用以下方式确定第三占比:获取所述目标内存空间的所述分配参数;根据所述分配参数确定所述第三占比。
可选地,在本实施例中,上述目标内存空间的分配参数可以但不限于是第一内存空间和第二内存空间在目标内存空间中的占比,比如:目标内存空间包括占比为A%的第一内存空间和占比为(100%-A%)的第二内存空间,目标内存空间的分配参数包括A%和B%=(100%-A%)。
可选地,在本实施例中,可以但不限于将目标内存空间的分配参数确定为目标内存空间的第三占比,比如:以目标内存空间的分配参数包括A%和B%=(100%-A%)为例,可以但不限于根据使用参数将内存单元进行排列,(100%-A%)为第三占比,从低至高选择最低的A%作为第三内存单元集合。或者,以目标内存空间的分配参数包括A%-C%:2C%:100%-C%-A%为例,可以但不限于根据使用参数将内存单元进行排列,100%-C%-A%为第三占比,从高至低选择最低的100%-C%-A%作为第三内存单元集合。
在一个示例性实施例中,可以但不限于采用以下方式获取所述目标内存空间的所述分配参数:获取所述第二内存空间在所述目标内存空间中的第二分配占比,其中,所述分配参数包括所述第二分配占比;可以但不限于采用以下方式根据所述分配参数确定所述第三占比:将所述第二分配占比与第二预设占比的差值确定为所述第三占比。
可选地,在本实施例中,可以但不限于将第二内存空间在目标内存空间中的占比确定为第二分配占比。
可选地,在本实施例中,上述第二预设占比可以但不限于是预先确定的,用于从第二分配占比中确定第一占比。
可选地,在本实施例中,可以但不限于根据第二内存空间在目标内存空间中的占比以及第二预设占比确定第三占比,比如:以第二预设占比为20%为例,目标内存空间内第二内存空间占比为A%,第三占比可以但不限于为A%-20%。
在一个示例性实施例中,提供了一种从第一内存空间中筛选第四内存空间的示例。图6是根据本申请实施例的从第一内存空间中筛选第四内存空间的示意图,如图6所示,以第二预设占比为20%为例,可以但不限于通过以下过程确定第四内存空间:
目标内存空间的分配参数第一内存空间:第二内存空间为40%:60%,根据目标内存空间的分配参数确定目标迁移参数为40%:60%,根据内存使用参数将目标内存空间由低到高进行排列;
根据目标迁移参数为40%:60%以及第二预设占比为20%确定第三占比为60%-20%=40%,将后40%确定为第三内存单元集合;
从第三内存单元集合中获取属于第一内存空间的内存单元为第四内存空间。
在一个示例性实施例中,可以但不限于采用以下方式所述根据所述内存使用参数和目标迁移参数从所述第一内存空间中筛选出第四内存空间:按照使用参数由高至低将多个内存单元划分为第一部分和第二部分,其中,所述第一部分与所述第二部分呈目标比例,所述多个内存单元是所述目标内存空间中已存储数据的内存单元,所述内存使用参数包括具有对应关系的内存单元和使用参数,所述使用参数用于指示对应的内存单元被使用的频率;按照所述使用参数由高至低筛除所述第二部分中满足第四占比的内存单元得到第四内存单元集合,其中,所述目标迁移参数包括所述目标比例和所述第四占比;从所述第四内存单元集合中提取属于所述第一内存空间的内存单元得到所述第四内存空间。
可选地,在本实施例中,可以但不限于根据目标内存空间中每个内存单元的使用频率将目标内存空间中每个内存单元进行划分,得到使用频率较高的第一部分与使用频率较低的第二部分。
可选地,在本实施例中,第一部分与第二部分的目标比例可以但不限于是根据第一内存空间和第二内存空间在目标内存空间中的占比确定的,比如:以目标内存空间中的第一内存空间占比A%,第二内存空间占比B%=(100%-A%)为例,可以但不限于将目标内存空间按照使用参数由高至低排列,将前A%划分为第一部分,将后B%划分为第二部分。
可选地,在本实施例中,上述第二占比可以但不限于根据从目标内存空间中第一内存空间以及第二内存空间的占比中的一部分内存空间。
可选地,在本实施例中,可以但不限于从第二部分中筛除使用参数最高的第四占比的内存单元得到第四内存单元集合,比如:以第四占比为10%为例,将目标内存空间按照使用参数由高至低排列,将前A%划分为第一部分,将后B%划分为第二部分,再从高至低从第二部分中筛除10%得到第四内存单元集合。
可选地,在本实施例中,可以但不限于将第四内存单元集合中属于第一内存空间的内存单元确定为第四内存空间。
在一个示例性实施例中,在所述按照使用参数由高至低将多个内存单元划分为第一部分和第二部分之前,可以但不限于采用以下方式:获取所述目标内存空间的所述分配参数;根据所述分配参数确定所述目标比例和所述第四占比。
可选地,在本实施例中,上述目标内存空间的分配参数可以但不限于是第一内存空间和第二内存空间在目标内存空间中的占比,比如:目标内存空间包括占比为A%的第一内存空间和占比为(100%-A%)的第二内存空间,目标内存空间的分配参数包括A%和B%=(100%-A%)。
可选地,在本实施例中,上述第四占比可以但不限于根据从目标内存空间中第一内存空间以及第二内存空间的占比中划分得到的,比如:目标内存空间中的第一内存空间占比A%,第二内存空间占比B%=(100%-A%)为例,可以但不限于从第一内存空间占比A%中划分C%作为第四占比。或者,可以但不限于从第二内存空间占比(100%-A%)中划分C%作为第四占比。或者,可以但不限于从第一内存空间占比A%中划分C%再第二内存空间占比(100%-A%)中划分D%,将C%与D%作为第四占比。
在一个示例性实施例中,可以但不限于采用以下方式获取所述目标内存空间的所述分配参数:获取所述第一内存空间在所述目标内存空间中的第一分配占比,和所述第二内存空间在所述目标内存空间中的第二分配占比,其中,所述分配参数包括所述第一分配占比和所述第二分配占比;可以但不限于采用以下方式根据所述分配参数确定所述目标比例和所述第四占比,包括:将所述第一分配占比与所述第二分配占比确定为所述目标比例;获取第四预设占比作为所述第四占比。
可选地,在本实施例中,可以但不限于将第一内存空间在目标内存空间中的占比确定为第一分配占比,将第二内存空间在目标内存空间中的占比确定为第二分配占比,可以但不限于将第一分配占比与第二分配占比确定为分配参数。
可选地,在本实施例中,上述第四预设占比可以但不限于是预先确定的,第四预设占比可以但不限于用于确定第四占比。
可选地,在本实施例中,可以但不限于根据第一内存空间在目标内存空间中的占比,第二内存空间在目标内存空间中的占比以及第四预设占比确定第四占比,比如:以第四预设占比为20%为例,目标内存空间内第一内存空间占比为A%-10%,目标内存空间内第二内存空间占比为90%-A%,可以但不限于确定第四占比为20%。
在上述步骤S204提供的技术方案中,可以但不限于将第一内存空间和第二内存空间在目标内存空间中的占比确定为目标内存空间的分配参数,上述目标内存空间的分配参数可以但不限于是在为目标应用分配的目标内存空间时确定的,比如:为目标应用分配的目标内存空间包括A容量的第一内存空间以及B容量的第二内存空间,目标内存空间的分配参数包括第一内存空间在目标内存空间的占比A/(A+B)以及第二内存空间在目标内存空间的占比B/(A+B)。
可选地,在本实施例中,可以但不限于通过目标迁移参数将目标内存空间分为N个区间,用于指示目标内存空间中允许迁移的内存数据在内存空间中的占比,可以但不限于根据第一内存空间和第二内存空间在目标内存空间中的占比确定目标内存空间的目标迁移参数,比如:第一内存空间在目标内存空间的占比为A,第二内存空间在目标内存空间的占比为100-A,目标迁移参数为(A-10):20:(90-A)。或者,第一内存空间在目标内存空间的占比为A,第二内存空间在目标内存空间的占比为100-A,目标迁移参数为A:(100-A)。
可选地,在本实施例中,上述第一频率阈值可以但不限于是预先确定的,第一频率阈值可以但不限于用于选择第二内存空间中被使用的频率较高的内存空间。
可选地,在本实施例中,可以但不限于将第二内存空间中使用频率较高的部分内存空间确定为第三内存空间,由于目标应用对第一内存空间的操作效率高于对第二内存空间的操作效率,因此将第二内存空间中使用频率较高的部分内存空间迁移至第一内存空间使得目标应用的操作效率增高。
在一个示例性实施例中,可以但不限于采用以下方式根据所述内存使用参数和目标迁移参数从所述第二内存空间中筛选出第三内存空间:按照使用参数由高至低提取多个内存单元中满足第一占比的内存单元作为第一内存单元集合,其中,所述多个内存单元是所述目标内存空间中已存储数据的内存单元,所述内存使用参数包括具有对应关系的内存单元和使用参数,所述使用参数用于指示对应的内存单元被使用的频率,所述目标迁移参数包括所述第一占比;从所述第一内存单元集合中提取属于所述第二内存空间的内存单元,得到所述第三内存空间。
可选地,在本实施例中,上述使用参数可以但不限于是目标应用的目标内存空间中的每个内存单元的使用频率,比如:目标内存空间中包括多个内存单元,内存单元在一个或者多个时间段内每进行一次操作(可以但不限于包括增加,删除,查找和修改等等)即对内存单元的使用次数+1,得到内存单元在一个或者多个时间段内使用次数的总和,再根据执行操作所在的时间段与当前时间的距离为执行操作次数之和给予权重,从而得到每个内存单元的使用参数。
可选地,在本实施例中,可以但不限于根据使用参数将多个内存单元进行排列,比如:根据使用参数将每个内存单元从高至低进行排列。或者,根据使用参数将每个内存单元从低至高进行排列。
可选地,在本实施例中,上述第一占比用于指示目标内存单元中满足一定比例的内存单元,可以但不限于根据目标迁移参数确定第一占比,比如:目标内存空间的标迁移参数为A:(100-A),可以但不限于将A确定为第一占比。或者,目标内存空间的标迁移参数为(A-10):20:(90-A),可以但不限于将(A-10)确定为第一占比。
可选地,在本实施例中,上述第一内存单元集合是目标内存单元中被使用的频率最高的第一占比的内存单元,比如:以第一占比为20%,目标内存空间包括100个内存单元为例,根据内存单元被使用的频率将内存单元按照被使用的频率高的内存单元至被使用的频率低的顺序进行排列,从高至低选择被使用的频率最高的20个内存单元为第一内存单元集合。
可选地,在本实施例中,可以但不限于将被使用的频率最高内存单元中属于第二内存空间的内存单元确定为第三内存空间,比如:以第一内存单元集合包括100个内存单元为例,从第一内存单元集合中查找得到50个属于第二内存空间的内存单元,将第一内存单元集合中50个属于第二内存空间的内存单元确定为第三内存空间。
在一个示例性实施例中,在所述按照使用参数由高至低提取多个内存单元中满足第一占比的内存单元作为第一内存单元集合之前,可以但不限于采用以下方式确定第一占比:获取所述目标内存空间的所述分配参数;根据所述分配参数确定所述第一占比。
可选地,在本实施例中,上述目标内存空间的分配参数可以但不限于是第一内存空间和第二内存空间在目标内存空间中的占比,比如:目标内存空间包括占比为A%的第一内存空间和占比为(100%-A%)的第二内存空间,目标内存空间的分配参数包括A%和B%=(100%-A%)。
可选地,在本实施例中,可以但不限于将目标内存空间的分配参数确定为目标内存空间的第一占比,比如:以目标内存空间的分配参数包括A%和B%=(100%-A%)为例,可以但不限于根据使用参数将内存单元进行排列,A%为第一占比,从高至低选择前A%作为第一内存单元集合。或者,以目标内存空间的分配参数包括A%-C%:2C%:100%-C%-A%为例,可以但不限于根据使用参数将内存单元进行排列,A%-C%为第一占比,从高至低选择前A%-C%作为第一内存单元集合。
在一个示例性实施例中,可以但不限于采用以下方式获取所述目标内存空间的所述分配参数:获取所述第一内存空间在所述目标内存空间中的第一分配占比,其中,所述分配参数包括所述第一分配占比;可以但不限于采用以下方式根据所述分配参数确定所述第一占比:将所述第一分配占比与第一预设占比的差值确定为所述第一占比。
可选地,在本实施例中,可以但不限于将第一内存空间在目标内存空间中的占比确定为第一分配占比。
可选地,在本实施例中,上述第一预设占比可以但不限于是预先确定的,用于从第一分配占比中确定第一占比。
可选地,在本实施例中,可以但不限于根据第一内存空间在目标内存空间中的占比以及第一预设占比确定第一占比,比如:以第一预设占比为20%为例,目标内存空间内第一内存空间占比为A%,第一占比为A%-20%。
在一个示例性实施例中,提供了一种从第二内存空间中筛选第三内存空间的示例。图7是根据本申请实施例的从第二内存空间中筛选第三内存空间的示意图,如图7所示,以第一预设占比为20%为例,可以但不限于通过以下过程确定第三内存空间:
目标内存空间的分配参数第一内存空间:第二内存空间为60%:40%,根据目标内存空间的分配参数确定目标迁移参数为60%:40%,根据内存使用参数将目标内存空间由高到低进行排列;
根据目标迁移参数为60%:40%以及第一预设占比为20%确定第一占比为60%-20%=40%,将前40%确定为第一内存单元集合;
从第一内存单元集合中获取属于第二内存空间的内存单元为第三内存空间。
在一个示例性实施例中,可以但不限于采用以下方式根据所述内存使用参数和目标迁移参数从所述第二内存空间中筛选出第三内存空间:按照使用参数由高至低将多个内存单元划分为第一部分和第二部分,其中,所述第一部分与所述第二部分呈目标比例,所述多个内存单元是所述目标内存空间中已存储数据的内存单元,所述内存使用参数包括具有对应关系的内存单元和使用参数,所述使用参数用于指示对应的内存单元被使用的频率;按照使用参数由低至高筛除所述第一部分中满足第二占比的内存单元得到第二内存单元集合,其中,所述目标迁移参数包括所述目标比例和所述第二占比;从所述第二内存单元集合中提取属于所述第二内存空间的内存单元,得到所述第三内存空间。
可选地,在本实施例中,可以但不限于根据目标内存空间中每个内存单元的使用频率将目标内存空间中每个内存单元进行划分,得到使用频率较高的第一部分与使用频率较低的第二部分。
可选地,在本实施例中,第一部分与第二部分的目标比例可以但不限于是根据第一内存空间和第二内存空间在目标内存空间中的占比确定的,比如:以目标内存空间中的第一内存空间占比A%,第二内存空间占比B%=(100%-A%)为例,可以但不限于将目标内存空间按照使用参数由高至低排列,将前A%划分为第一部分,将后B%划分为第二部分。
可选地,在本实施例中,上述第二占比可以但不限于根据从目标内存空间中第一内存空间以及第二内存空间的占比中的一部分内存空间。
可选地,在本实施例中,可以但不限于从第一部分中筛除使用参数最低的第二占比的内存单元得到第二内存单元集合,比如:以第二占比为10%为例,将目标内存空间按照使用参数由高至低排列,将前A%划分为第一部分,将后B%划分为第二部分,再从低至高从第一部分中筛除10%得到第二内存单元集合。
可选地,在本实施例中,可以但不限于将第二内存单元集合中属于第二内存空间的内存单元确定为第三内存空间。
在一个示例性实施例中,在所述按照使用参数由高至低将多个内存单元划分为第一部分和第二部分之前,可以但不限于采用以下方式确定目标比例和第二占比:获取所述目标内存空间的所述分配参数;根据所述分配参数确定所述目标比例和所述第二占比。
可选地,在本实施例中,上述目标内存空间的分配参数可以但不限于是第一内存空间和第二内存空间在目标内存空间中的占比,比如:目标内存空间包括占比为A%的第一内存空间和占比为(100%-A%)的第二内存空间,目标内存空间的分配参数包括A%和B%=(100%-A%)。
可选地,在本实施例中,上述第二占比可以但不限于根据从目标内存空间中第一内存空间以及第二内存空间的占比中划分得到的,比如:目标内存空间中的第一内存空间占比A%,第二内存空间占比B%=(100%-A%)为例,可以但不限于从第一内存空间占比A%中划分C%作为第二占比。或者,可以但不限于从第二内存空间占比(100%-A%)中划分C%作为第二占比。或者,可以但不限于从第一内存空间占比A%中划分C%再第二内存空间占比(100%-A%)中划分D%,将C%与D%作为第二占比。
在一个示例性实施例中,可以但不限于采用以下方式获取所述目标内存空间的所述分配参数:获取所述第一内存空间在所述目标内存空间中的第一分配占比,和所述第二内存空间在所述目标内存空间中的第二分配占比,其中,所述分配参数包括所述第一分配占比和所述第二分配占比;可以但不限于采用以下方式根据所述分配参数确定所述目标比例和所述第二占比:将所述第一分配占比与所述第二分配占比确定为所述目标比例;获取第二预设占比作为所述第二占比。
可选地,在本实施例中,可以但不限于将第一内存空间在目标内存空间中的占比确定为第一分配占比,将第二内存空间在目标内存空间中的占比确定为第二分配占比,可以但不限于将第一分配占比与第二分配占比确定为分配参数。
可选地,在本实施例中,可以但不限于根据第一内存空间在目标内存空间中的占比,第二内存空间在目标内存空间中的占比以及第二预设占比确定第二占比,比如:以第二预设占比为20%为例,目标内存空间内第一内存空间占比为A%-10%,目标内存空间内第二内存空间占比为90%-A%,可以但不限于确定第二占比为20%。
在上述步骤S206提供的技术方案中,可以但不限于将第三内存空间中所存储的第一内存数据复制至第一内存空间,实现将第三内存空间中所存储的第一内存数据迁移至第一内存空间。
在一个示例性实施例中,可以但不限于采用以下方式将所述第三内存空间中所存储的第一内存数据迁移至所述第一内存空间:检测所述第一内存空间的参考剩余容量;在所述第一内存数据的数据量大于所述参考剩余容量的情况下,从所述第一内存数据中全部被使用的内存单元中筛选数据量满足所述参考剩余容量的目标内存数据;将所述目标内存数据迁移至所述第一内存空间。
可选地,在本实施例中,上述参考剩余容量可以但不限于为第一内存空间未使用的内存空间,或者是在不影响第一内存空间使用的前提下,第一内存空间能够容纳的数据量。
可选地,在本实施例中,可以但不限于将第一内存数据中前90%确定为上述目标内存数据,或者可以但不限于将第一内存数据中内存使用参数最高的内存数据确定为上述目标内存数据。
在一个示例性实施例中,提供了一种在第一内存空间和第二内存空间中执行内存数据迁移的示例。图8是根据本申请实施例的在第一内存空间和第二内存空间中执行内存数据迁移的示意图,如图8所示,以在Linux系统中执行内存数据迁移操作,第一内存空间为本地内存,第二内存空间为CXL内存为例,为了提高Linux系统的内存使用效率,本申请中了设定温内存并且保持温内存不进行迁移,从而减少了Linux系统使用过程中使用的频次处于中间位置的内存页进行内存迁移的次数。
如图8所示,Linux系统中包括SDK(Software Development Kit,软件开发工具包)和HW(Hardware,硬件),本地内存和CXL内存部署在HW中,SDK中包括Linux内核模块、内存池化模块、内存分层模块、内存迁移模块、内存识别模块以及API模块。
Linux内核模块可以但不限于是基于Linux6.2开发驱动以及CXL内存相关接口。包括内存识别模块,可以但不限于通过Linux内核模块识别CXL内存容量和地址,比如:Linux内核模块在操作系统的启动过程中将CXL内存识别为RAM,识别并动修改CXL内存属性为soft reserved,在buddyinfo中将本地内存与CXL内存区分映射为不同组(Normal,CxlMemory),读取CXL内存距离,记录CXL内存使用的插槽数并据此计算CXL内存可提供带宽量,并提供修改NUMA节点的API。
内存池化模块用于在系统启动时为每个应用分配内存,内存池化模块可以但不限于采用tcmalloc allocator与jemalloc allocator并用的内存分配模式,比如:主动设置为应用分配容量为1GB的本地内存与1GB的CXL内存。内存池化模块包括用于存储各个应用使用时对本地内存和CXL内存的最大使用量的应用表,可以但不限于根据应用表中存储的最大使用量为应用分配空间。
内存分层模块可以但不限于用于记录目标内存空间的内存使用参数,并且根据内存使用参数和目标迁移参数筛选出需要迁移的内存空间。
内存迁移模块用于将内存分层模块筛选出的需要迁移的内存空间进行迁移。
以将CXL内存中的热内存数据(频次处于高位的内存页)存入本地内存,可以但不限于通过以下方式在第一内存空间和第二内存空间中执行内存数据迁移:
首先,计算内存池(目标内存空间)中本地内存剩余容量a,将CXL内存的热内存数据(第三内存空间)大小不超过a的90%的部分打包为数据块,统一复制入本地内存,将用于记录内存分配情况的分层表和用于管理内存的BitMap进行相应转换、整合,将已经复制了的原CXL内存中的热内存对应位置清0;当本地内存使用量到达90%时暂停存入,转而将本地内存的冷内存数据(第四内存空间)复制存入CXL内存;
首先,计算池(目标内存空间)中CXL内存剩余容量b,将本地内存的冷内存数据大小不超过b的90%的部分打包为数据块,统一复制入CXL内存,然后将用于记录内存分配情况的分层表和用于管理内存的BitMap进行相应转换、整合,将已经复制了的原本地内存的冷内存对应位置清0;
当CXL内存使用量到达90%时暂停存入,转而继续将CXL内存的热内存数据存入本地内存;直至CXL内存的热内存数据全部存入本地内存且本地内存的冷数据全部存入CXL内存。
在进行内存页迁移的过程中,可以但不限于优先迁移已经全部被使用的内存页,再迁移其他内存页。可以但不限于对内存页的class_size(规模)的记录情况设置迁移颗粒度,根据迁移颗粒度执行内存页的迁移,以需要将CXL内存中的热内存页1迁移至本地内存为例,表1是根据本申请实施例的内存页1的规模的记录表,如表1所示,先设置内存页1迁移颗粒度为256Byte(字节),然后根据偏移量迁移页1中被分配的Offset(偏移量)查找到已经使用了的内存块,将其迁移至本地内存,之后依次更新迁移颗粒度,然后根据页1中被分配的Offset查找到其他已经使用了的内存块,将其迁移至本地内存,直至完成当前内存页1的迁移。
通过使用API为应用预分配内存,开启,关闭以及设置内存分配以及迁移的情况,统计BitMap查看本地内存、CXL内存的使用情况。
表1
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在本实施例中还提供了一种内存数据的迁移装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图9是根据本申请实施例的一种内存数据的迁移装置的结构框图,如图9所示,该装置包括:
第一检测模块92,用于检测目标内存空间的内存使用参数,其中,所述目标内存空间是为待迁移内存数据的目标应用所分配的内存空间,所述目标内存空间中包括属于第一类型的第一内存空间和属于第二类型的第二内存空间,所述内存使用参数用于指示所述目标内存空间被使用的频率分布,所述目标应用对所述第一内存空间的操作效率高于所述目标应用对所述第二内存空间的操作效率;
第一筛选模块94,用于根据所述内存使用参数和目标迁移参数从所述第二内存空间中筛选出第三内存空间,其中,所述目标迁移参数是根据所述目标内存空间的分配参数确定的,所述分配参数用于指示所述第一内存空间和所述第二内存空间在所述目标内存空间中的占比,所述目标迁移参数用于指示所述目标内存空间中允许迁移内存数据的内存空间的占比,所述第三内存空间是所述第二内存空间中被使用的频率高于第一频率阈值的内存空间;
第一迁移模块96,用于将所述第三内存空间中所存储的第一内存数据迁移至所述第一内存空间。
通过上述装置,目标应用使用的目标内存空间包括第一内存空间和第二内存空间,根据目标内存空间中被使用的频率分布,以及目标内存空间的分配参数从目标内存空间中筛选出第二内存空间中被使用的频率高的内存空间即需要迁移的第三内存空间,由于目标应用对第一内存空间的操作效率高于目标应用对第二内存空间的操作效率,通过将第二内存空间中使用效率高的部分内存空间中存储的第一内存数据迁移至第一内存空间,提高了目标应用对使用效率高的内存数据的操作效率,从而提高了目标应用的操作效率。因此,可以解决内存使用的效率较低问题,达到提高内存使用的效率的效果。
在一个示例性实施例中,所述第一筛选模块,包括:
第一提取单元,用于按照使用参数由高至低提取多个内存单元中满足第一占比的内存单元作为第一内存单元集合,其中,所述多个内存单元是所述目标内存空间中已存储数据的内存单元,所述内存使用参数包括具有对应关系的内存单元和使用参数,所述使用参数用于指示对应的内存单元被使用的频率,所述目标迁移参数包括所述第一占比;
第二提取单元,用于从所述第一内存单元集合中提取属于所述第二内存空间的内存单元,得到所述第三内存空间。
在一个示例性实施例中,所述装置还包括:
第一获取模块,用于获取所述目标内存空间的所述分配参数;
第一确定模块,用于根据所述分配参数确定所述第一占比。
在一个示例性实施例中,所述第一获取模块,包括:
第一获取单元,用于获取所述第一内存空间在所述目标内存空间中的第一分配占比,其中,所述分配参数包括所述第一分配占比;
在一个示例性实施例中,所述第一确定模块,包括:
第一确定单元,用于将所述第一分配占比与第一预设占比的差值确定为所述第一占比。
在一个示例性实施例中,所述第一筛选模块,包括:
第一划分单元,用于按照使用参数由高至低将多个内存单元划分为第一部分和第二部分,其中,所述第一部分与所述第二部分呈目标比例,所述多个内存单元是所述目标内存空间中已存储数据的内存单元,所述内存使用参数包括具有对应关系的内存单元和使用参数,所述使用参数用于指示对应的内存单元被使用的频率;
第一筛除单元,用于按照使用参数由低至高筛除所述第一部分中满足第二占比的内存单元得到第二内存单元集合,其中,所述目标迁移参数包括所述目标比例和所述第二占比;
第三提取单元,用于从所述第二内存单元集合中提取属于所述第二内存空间的内存单元,得到所述第三内存空间。
在一个示例性实施例中,所述装置还包括:
第二获取模块,用于获取所述目标内存空间的所述分配参数;
第二确定模块,用于根据所述分配参数确定所述目标比例和所述第二占比。
在一个示例性实施例中,所述第二获取模块,包括:
第二获取单元,用于获取所述第一内存空间在所述目标内存空间中的第一分配占比,和所述第二内存空间在所述目标内存空间中的第二分配占比,其中,所述分配参数包括所述第一分配占比和所述第二分配占比;
在一个示例性实施例中,所述第二确定模块,包括:
第二确定单元,用于将所述第一分配占比与所述第二分配占比确定为所述目标比例;获取第二预设占比作为所述第二占比。
在一个示例性实施例中,所述装置还包括:
第二筛选模块,用于根据所述内存使用参数和目标迁移参数从所述第一内存空间中筛选出第四内存空间,其中,所述第四内存空间是所述第一内存空间中被使用的频率低于第二频率阈值的内存空间;
第二迁移模块,用于将所述第四内存空间中所存储的第二内存数据迁移至所述第二内存空间。
在一个示例性实施例中,所述第二筛选模块,包括:
第四提取单元,用于按照使用参数由低至高提取多个内存单元中满足第三占比的内存单元作为第三内存单元集合,其中,所述多个内存单元是所述目标内存空间中已存储数据的内存单元,所述内存使用参数包括具有对应关系的内存单元和使用参数,所述使用参数用于指示对应的内存单元被使用的频率,所述目标迁移参数包括所述第三占比;
第五提取单元,用于从所述第三内存单元集合中提取属于所述第一内存空间的内存单元得到所述第四内存空间。
在一个示例性实施例中,所述装置还包括:
第三获取模块,用于获取所述目标内存空间的所述分配参数;
第三确定模块,用于根据所述分配参数确定所述第三占比。
在一个示例性实施例中,所述第三获取模块,包括:
第三获取单元,用于获取所述第二内存空间在所述目标内存空间中的第二分配占比,其中,所述分配参数包括所述第二分配占比;
在一个示例性实施例中,所述第三确定模块,包括:
第三确定单元,用于将所述第二分配占比与第二预设占比的差值确定为所述第三占比。
在一个示例性实施例中,所述第二筛选模块,包括:
第二划分单元,用于按照使用参数由高至低将多个内存单元划分为第一部分和第二部分,其中,所述第一部分与所述第二部分呈目标比例,所述多个内存单元是所述目标内存空间中已存储数据的内存单元,所述内存使用参数包括具有对应关系的内存单元和使用参数,所述使用参数用于指示对应的内存单元被使用的频率;
第二筛除单元,用于按照所述使用参数由高至低筛除所述第二部分中满足第四占比的内存单元得到第四内存单元集合,其中,所述目标迁移参数包括所述目标比例和所述第四占比;
第六提取单元,用于从所述第四内存单元集合中提取属于所述第一内存空间的内存单元得到所述第四内存空间。
在一个示例性实施例中,所述装置还包括:
第四获取模块,用于获取所述目标内存空间的所述分配参数;
第四确定模块,用于根据所述分配参数确定所述目标比例和所述第四占比。
在一个示例性实施例中,所述第四获取模块,包括:
第四获取单元,用于获取所述第一内存空间在所述目标内存空间中的第一分配占比,和所述第二内存空间在所述目标内存空间中的第二分配占比,其中,所述分配参数包括所述第一分配占比和所述第二分配占比;
在一个示例性实施例中,所述第四确定模块,包括:
第四确定单元,用于将所述第一分配占比与所述第二分配占比确定为所述目标比例;获取第四预设占比作为所述第四占比。
在一个示例性实施例中,所述第一迁移模块,包括:
第一检测单元,用于检测所述第一内存空间的参考剩余容量;
筛选单元,用于在所述第一内存数据的数据量大于所述参考剩余容量的情况下,从所述第一内存数据中全部被使用的内存单元中筛选数据量满足所述参考剩余容量的目标内存数据;
迁移单元,用于将所述目标内存数据迁移至所述第一内存空间。
在一个示例性实施例中,所述第一检测模块,包括:
采集单元,用于采集目标内存单元在一个或者多个时间段中每个时间段内的使用频次,得到一个或者多个使用频次,其中,所述目标内存单元是所述目标内存空间中已存储数据的多个内存单元中的每个内存单元;
计算单元,用于根据所述一个或者多个使用频次计算所述目标内存单元所对应的使用参数,得到具有对应关系的内存单元和使用参数作为所述内存使用参数。
在一个示例性实施例中,所述计算单元,还用于:根据所述每个时间段与当前时间的距离为所述每个时间段分配权重,其中,所述每个时间段与当前时间的距离越小,所述每个时间段所对应的权重越大;计算所述一个或者多个使用频次的加权和作为所述目标内存单元所对应的使用参数。
在一个示例性实施例中,所述装置还包括:
第二检测模块,用于检测为所述目标应用所分配的初始内存空间的使用率;
调整模块,用于根据所述使用率与使用率阈值之间的关系,调整所述初始内存空间,得到所述目标内存空间。
在一个示例性实施例中,所述调整模块,包括:
分配单元,用于在所述使用率大于或者等于第一使用率阈值的情况下,为所述目标应用分配第一容量的附加内存空间,得到所述目标内存空间,其中,所述目标内存空间包括所述初始内存空间和所述附加内存空间;
释放单元,用于在所述使用率小于或者等于第二使用率阈值的情况下,从所述目标内存空间中释放第二容量的内存空间,得到所述目标内存空间。
在一个示例性实施例中,所述调整模块,包括:
第二检测单元,用于检测所述目标应用所使用的处理器核心的目标数量;
第一调整单元,用于在所述目标数量大于或者等于数量阈值的情况下,使用第一内存工具调整所述初始内存空间;
第二调整单元,用于在所述目标数量小于所述数量阈值的情况下,使用第二内存工具调整所述初始内存空间,其中,所述第二内存工具对内存空间的调整效率低于所述第一内存工具对内存空间的调整效率,但所述第二内存工具的运行负载小于所述第一内存工具的运行负载。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子设备,图10是根据本申请实施例的电子设备的示意图,如图10所示,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (22)

1.一种内存数据的迁移方法,其特征在于,包括:
检测目标内存空间的内存使用参数,其中,所述目标内存空间是为待迁移内存数据的目标应用所分配的内存空间,所述目标内存空间中包括属于第一类型的第一内存空间和属于第二类型的第二内存空间,所述内存使用参数用于指示所述目标内存空间被使用的频率分布,所述目标应用对所述第一内存空间的操作效率高于所述目标应用对所述第二内存空间的操作效率;
根据所述内存使用参数和目标迁移参数从所述第二内存空间中筛选出第三内存空间,其中,所述目标迁移参数是根据所述目标内存空间的分配参数确定的,所述分配参数用于指示所述第一内存空间和所述第二内存空间在所述目标内存空间中的占比,所述目标迁移参数用于指示所述目标内存空间中允许迁移内存数据的内存空间的占比,所述第三内存空间是所述第二内存空间中被使用的频率高于第一频率阈值的内存空间;
将所述第三内存空间中所存储的第一内存数据迁移至所述第一内存空间;
其中,在所述检测目标内存空间的内存使用参数之后,所述方法还包括:根据所述内存使用参数和目标迁移参数从所述第一内存空间中筛选出第四内存空间,其中,所述第四内存空间是所述第一内存空间中被使用的频率低于第二频率阈值的内存空间;将所述第四内存空间中所存储的第二内存数据迁移至所述第二内存空间。
2.根据权利要求1所述的方法,其特征在于,所述根据所述内存使用参数和目标迁移参数从所述第二内存空间中筛选出第三内存空间,包括:
按照使用参数由高至低提取多个内存单元中满足第一占比的内存单元作为第一内存单元集合,其中,所述多个内存单元是所述目标内存空间中已存储数据的内存单元,所述内存使用参数包括具有对应关系的内存单元和使用参数,所述使用参数用于指示对应的内存单元被使用的频率,所述目标迁移参数包括所述第一占比;
从所述第一内存单元集合中提取属于所述第二内存空间的内存单元,得到所述第三内存空间。
3.根据权利要求2所述的方法,其特征在于,在所述按照使用参数由高至低提取多个内存单元中满足第一占比的内存单元作为第一内存单元集合之前,所述方法还包括:
获取所述目标内存空间的所述分配参数;
根据所述分配参数确定所述第一占比。
4.根据权利要求3所述的方法,其特征在于,
所述获取所述目标内存空间的所述分配参数,包括:获取所述第一内存空间在所述目标内存空间中的第一分配占比,其中,所述分配参数包括所述第一分配占比;
所述根据所述分配参数确定所述第一占比,包括:将所述第一分配占比与第一预设占比的差值确定为所述第一占比。
5.根据权利要求1所述的方法,其特征在于,所述根据所述内存使用参数和目标迁移参数从所述第二内存空间中筛选出第三内存空间,包括:
按照使用参数由高至低将多个内存单元划分为第一部分和第二部分,其中,所述第一部分与所述第二部分呈目标比例,所述多个内存单元是所述目标内存空间中已存储数据的内存单元,所述内存使用参数包括具有对应关系的内存单元和使用参数,所述使用参数用于指示对应的内存单元被使用的频率;
按照使用参数由低至高筛除所述第一部分中满足第二占比的内存单元得到第二内存单元集合,其中,所述目标迁移参数包括所述目标比例和所述第二占比;
从所述第二内存单元集合中提取属于所述第二内存空间的内存单元,得到所述第三内存空间。
6.根据权利要求5所述的方法,其特征在于,在所述按照使用参数由高至低将多个内存单元划分为第一部分和第二部分之前,所述方法还包括:
获取所述目标内存空间的所述分配参数;
根据所述分配参数确定所述目标比例和所述第二占比。
7.根据权利要求6所述的方法,其特征在于,
所述获取所述目标内存空间的所述分配参数,包括:获取所述第一内存空间在所述目标内存空间中的第一分配占比,和所述第二内存空间在所述目标内存空间中的第二分配占比,其中,所述分配参数包括所述第一分配占比和所述第二分配占比;
所述根据所述分配参数确定所述目标比例和所述第二占比,包括:将所述第一分配占比与所述第二分配占比确定为所述目标比例;获取第二预设占比作为所述第二占比。
8.根据权利要求1所述的方法,其特征在于,所述根据所述内存使用参数和目标迁移参数从所述第一内存空间中筛选出第四内存空间,包括:
按照使用参数由低至高提取多个内存单元中满足第三占比的内存单元作为第三内存单元集合,其中,所述多个内存单元是所述目标内存空间中已存储数据的内存单元,所述内存使用参数包括具有对应关系的内存单元和使用参数,所述使用参数用于指示对应的内存单元被使用的频率,所述目标迁移参数包括所述第三占比;
从所述第三内存单元集合中提取属于所述第一内存空间的内存单元得到所述第四内存空间。
9.根据权利要求8所述的方法,其特征在于,在所述按照使用参数由低至高提取多个内存单元中满足第三占比的内存单元作为第三内存单元集合之前,所述方法还包括:
获取所述目标内存空间的所述分配参数;
根据所述分配参数确定所述第三占比。
10.根据权利要求9所述的方法,其特征在于,
所述获取所述目标内存空间的所述分配参数,包括:获取所述第二内存空间在所述目标内存空间中的第二分配占比,其中,所述分配参数包括所述第二分配占比;
所述根据所述分配参数确定所述第三占比,包括:将所述第二分配占比与第二预设占比的差值确定为所述第三占比。
11.根据权利要求1所述的方法,其特征在于,所述根据所述内存使用参数和目标迁移参数从所述第一内存空间中筛选出第四内存空间,包括:
按照使用参数由高至低将多个内存单元划分为第一部分和第二部分,其中,所述第一部分与所述第二部分呈目标比例,所述多个内存单元是所述目标内存空间中已存储数据的内存单元,所述内存使用参数包括具有对应关系的内存单元和使用参数,所述使用参数用于指示对应的内存单元被使用的频率;
按照所述使用参数由高至低筛除所述第二部分中满足第四占比的内存单元得到第四内存单元集合,其中,所述目标迁移参数包括所述目标比例和所述第四占比;
从所述第四内存单元集合中提取属于所述第一内存空间的内存单元得到所述第四内存空间。
12.根据权利要求11所述的方法,其特征在于,在所述按照使用参数由高至低将多个内存单元划分为第一部分和第二部分之前,所述方法还包括:
获取所述目标内存空间的所述分配参数;
根据所述分配参数确定所述目标比例和所述第四占比。
13.根据权利要求12所述的方法,其特征在于,
所述获取所述目标内存空间的所述分配参数,包括:获取所述第一内存空间在所述目标内存空间中的第一分配占比,和所述第二内存空间在所述目标内存空间中的第二分配占比,其中,所述分配参数包括所述第一分配占比和所述第二分配占比;
所述根据所述分配参数确定所述目标比例和所述第四占比,包括:将所述第一分配占比与所述第二分配占比确定为所述目标比例;获取第四预设占比作为所述第四占比。
14.根据权利要求1所述的方法,其特征在于,所述将所述第三内存空间中所存储的第一内存数据迁移至所述第一内存空间,包括:
检测所述第一内存空间的参考剩余容量;
在所述第一内存数据的数据量大于所述参考剩余容量的情况下,从所述第一内存数据中全部被使用的内存单元中筛选数据量满足所述参考剩余容量的目标内存数据;
将所述目标内存数据迁移至所述第一内存空间。
15.根据权利要求1所述的方法,其特征在于,所述检测目标内存空间的内存使用参数,包括:
采集目标内存单元在一个或者多个时间段中每个时间段内的使用频次,得到一个或者多个使用频次,其中,所述目标内存单元是所述目标内存空间中已存储数据的多个内存单元中的每个内存单元;
根据所述一个或者多个使用频次计算所述目标内存单元所对应的使用参数,得到具有对应关系的内存单元和使用参数作为所述内存使用参数。
16.根据权利要求15所述的方法,其特征在于,所述根据所述一个或者多个使用频次计算所述目标内存单元所对应的使用参数,包括:
根据所述每个时间段与当前时间的距离为所述每个时间段分配权重,其中,所述每个时间段与当前时间的距离越小,所述每个时间段所对应的权重越大;
计算所述一个或者多个使用频次的加权和作为所述目标内存单元所对应的使用参数。
17.根据权利要求1所述的方法,其特征在于,在所述检测目标内存空间的内存使用参数之前,所述方法还包括:
检测为所述目标应用所分配的初始内存空间的使用率;
根据所述使用率与使用率阈值之间的关系,调整所述初始内存空间,得到所述目标内存空间。
18.根据权利要求17所述的方法,其特征在于,所述根据所述使用率与使用率阈值之间的关系,调整所述初始内存空间,得到所述目标内存空间,包括:
在所述使用率大于或者等于第一使用率阈值的情况下,为所述目标应用分配第一容量的附加内存空间,得到所述目标内存空间,其中,所述目标内存空间包括所述初始内存空间和所述附加内存空间;
在所述使用率小于或者等于第二使用率阈值的情况下,从所述目标内存空间中释放第二容量的内存空间,得到所述目标内存空间。
19.根据权利要求17所述的方法,其特征在于,所述调整所述初始内存空间,包括:
检测所述目标应用所使用的处理器核心的目标数量;
在所述目标数量大于或者等于数量阈值的情况下,使用第一内存工具调整所述初始内存空间;
在所述目标数量小于所述数量阈值的情况下,使用第二内存工具调整所述初始内存空间,其中,所述第二内存工具对内存空间的调整效率低于所述第一内存工具对内存空间的调整效率,但所述第二内存工具的运行负载小于所述第一内存工具的运行负载。
20.一种内存数据的迁移装置,其特征在于,包括:
第一检测模块,用于检测目标内存空间的内存使用参数,其中,所述目标内存空间是为待迁移内存数据的目标应用所分配的内存空间,所述目标内存空间中包括属于第一类型的第一内存空间和属于第二类型的第二内存空间,所述内存使用参数用于指示所述目标内存空间被使用的频率分布,所述目标应用对所述第一内存空间的操作效率高于所述目标应用对所述第二内存空间的操作效率;
第一筛选模块,用于根据所述内存使用参数和目标迁移参数从所述第二内存空间中筛选出第三内存空间,其中,所述目标迁移参数是根据所述目标内存空间的分配参数确定的,所述分配参数用于指示所述第一内存空间和所述第二内存空间在所述目标内存空间中的占比,所述目标迁移参数用于指示所述目标内存空间中允许迁移内存数据的内存空间的占比,所述第三内存空间是所述第二内存空间中被使用的频率高于第一频率阈值的内存空间;
第一迁移模块,用于将所述第三内存空间中所存储的第一内存数据迁移至所述第一内存空间;
其中,所述装置还包括:第二筛选模块,用于根据所述内存使用参数和目标迁移参数从所述第一内存空间中筛选出第四内存空间,其中,所述第四内存空间是所述第一内存空间中被使用的频率低于第二频率阈值的内存空间;第二迁移模块,用于将所述第四内存空间中所存储的第二内存数据迁移至所述第二内存空间。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至19任一项中所述的方法的步骤。
22.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述权利要求1至19任一项中所述的方法的步骤。
CN202310743575.1A 2023-06-21 2023-06-21 内存数据的迁移方法、装置、存储介质及电子装置 Active CN116483740B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310743575.1A CN116483740B (zh) 2023-06-21 2023-06-21 内存数据的迁移方法、装置、存储介质及电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310743575.1A CN116483740B (zh) 2023-06-21 2023-06-21 内存数据的迁移方法、装置、存储介质及电子装置

Publications (2)

Publication Number Publication Date
CN116483740A CN116483740A (zh) 2023-07-25
CN116483740B true CN116483740B (zh) 2023-09-05

Family

ID=87218129

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310743575.1A Active CN116483740B (zh) 2023-06-21 2023-06-21 内存数据的迁移方法、装置、存储介质及电子装置

Country Status (1)

Country Link
CN (1) CN116483740B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118132274B (zh) * 2024-04-30 2024-08-16 苏州元脑智能科技有限公司 内存分配方法、计算机设备、存储介质及产品

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107203477A (zh) * 2017-06-16 2017-09-26 深圳市万普拉斯科技有限公司 内存分配方法、装置、电子设备及可读存储介质
CN111930305A (zh) * 2020-07-24 2020-11-13 北京金山云网络技术有限公司 数据的存储方法和装置、存储介质、电子装置
CN114168490A (zh) * 2020-09-10 2022-03-11 华为技术有限公司 确定内存回收阈值的方法及相关设备
CN115469813A (zh) * 2022-10-18 2022-12-13 上海芯赛云计算科技有限公司 数据处理方法及装置、存储介质、电子装置
CN115599304A (zh) * 2022-10-26 2023-01-13 建信金融科技有限责任公司(Cn) 应用于存储节点的数据处理方法、装置、设备及存储介质
CN115904212A (zh) * 2021-09-30 2023-04-04 华为技术有限公司 数据处理的方法、装置、处理器和混合内存系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114442910B (zh) * 2020-11-06 2024-08-16 伊姆西Ip控股有限责任公司 管理存储系统的方法、电子设备和计算机可读介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107203477A (zh) * 2017-06-16 2017-09-26 深圳市万普拉斯科技有限公司 内存分配方法、装置、电子设备及可读存储介质
CN111930305A (zh) * 2020-07-24 2020-11-13 北京金山云网络技术有限公司 数据的存储方法和装置、存储介质、电子装置
CN114168490A (zh) * 2020-09-10 2022-03-11 华为技术有限公司 确定内存回收阈值的方法及相关设备
CN115904212A (zh) * 2021-09-30 2023-04-04 华为技术有限公司 数据处理的方法、装置、处理器和混合内存系统
CN115469813A (zh) * 2022-10-18 2022-12-13 上海芯赛云计算科技有限公司 数据处理方法及装置、存储介质、电子装置
CN115599304A (zh) * 2022-10-26 2023-01-13 建信金融科技有限责任公司(Cn) 应用于存储节点的数据处理方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
面向结构体数据布局优化的高效内存管理;闫家年;陈文光;郑纬民;;清华大学学报(自然科学版)(第01期);全文 *

Also Published As

Publication number Publication date
CN116483740A (zh) 2023-07-25

Similar Documents

Publication Publication Date Title
JP5510556B2 (ja) 仮想マシンのストレージスペースおよび物理ホストを管理するための方法およびシステム
RU2571366C2 (ru) Виртуальная архитектура неоднородного доступа к памяти для виртуальных машин
CN111614746B (zh) 云主机集群的负载均衡方法、装置及服务器
KR102290540B1 (ko) 네임스페이스/스트림 관리
CN111880750A (zh) 磁盘读写资源的分配方法、装置、设备及存储介质
JP7467593B2 (ja) リソース割振り方法、記憶デバイス、および記憶システム
US8056084B2 (en) Method and system for dynamically reallocating a resource among operating systems without rebooting of the computer system
CN107969153B (zh) 一种资源分配方法、装置及numa系统
CN111104219A (zh) 虚拟核心与物理核心的绑定方法、装置、设备及存储介质
CN113342477A (zh) 一种容器组部署方法、装置、设备及存储介质
CN112955880B (zh) 用于处理片上系统中的地址解码的装置和方法
CN116483740B (zh) 内存数据的迁移方法、装置、存储介质及电子装置
CN109960569B (zh) 一种虚拟化处理方法及装置
US11520520B2 (en) Memory system and method of controlling nonvolatile memory
CN112148226A (zh) 一种数据存储方法及相关装置
JP2004355638A5 (zh)
CN115516436A (zh) 存储器中的推理
CN112988383A (zh) 一种资源分配方法、装置、设备以及存储介质
CN117215485A (zh) Zns ssd管理方法及数据写入方法、存储装置、控制器
CN115794305B (zh) 虚拟机内存的调整方法和装置、存储介质及电子装置
CN111831451A (zh) 云主机内存分配方法及云主机、设备及存储介质
CN106537321B (zh) 存取文件的方法、装置和存储系统
CN111510479A (zh) 一种异构缓存系统的资源分配方法及装置
CN116521608A (zh) 数据迁移方法及计算设备
CN115150268A (zh) Kubernetes集群的网络配置方法、装置、及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant