一种内存数据迁移方法、装置、电子设备及存储介质与流程
未命名
09-09
阅读:119
评论:0

1.本发明涉及分层内存技术领域,特别涉及一种内存数据迁移方法、装置、电子设备及存储介质。
背景技术:
2.内存分层技术是一种新兴的内存技术。该技术允许电子设备中设置分层内存系统,该系统中包含多个内存节点,且这些内存节点对应不同的层级;同时该技术还使用非统一内存访问框架(numa,non uniform memory access)来统一管理这些内存节点,以融合各类内存设备的优势。相关技术中,为确保应用程序能够高性能运行,通常会将该程序所需的内存页迁移至性能较好的目标内存节点上,然而在目标内存节点已写满的情况下,内存页的迁移将发生失败,进而影响应用程序的高效读取。
技术实现要素:
3.本发明的目的是提供一种内存数据迁移方法、装置、电子设备及存储介质,可在确定目标内存节点即将被写满时,主动回收该内存节点中的存储空间,从而可避免目标内存节点被写满,进而可解决因目标内存节点被写满所导致的无法迁移内存页的问题。
4.为解决上述技术问题,本发明提供一种内存数据迁移方法,应用于分层内存系统,所述分层内存系统包含多个内存节点,各所述内存节点对应不同的层级,所述方法包括:确定待迁移至目标内存节点的目标内存页;确定所述目标内存节点中的空闲页,并向所述空闲页迁移所述目标内存页;当检测到所述目标内存节点中剩余的空闲页数量小于预设阈值时,持续将所述目标内存节点中的非活跃内存页迁移至层级低于所述目标内存节点的其他内存节点,直至确定所述空闲页数量不小于所述预设阈值。
5.可选地,所述持续将所述目标内存节点中的非活跃内存页迁移至层级低于所述目标内存节点的其他内存节点,包括:在所述其他内存节点中确定本地访问速度最慢的第一内存节点和远程访问速度最慢的第二内存节点;持续将所述目标内存节点中的非活跃内存页迁移至所述第一内存节点或所述第二内存节点。
6.可选地,所述持续将所述目标内存节点中的非活跃内存页迁移至所述第一内存节点或所述第二内存节点,包括:确定当前待迁移的目标非活跃内存页,并判断所述第二内存节点是否被写满;若否,则将所述目标非活跃内存页迁移至所述第二内存节点;若是,则判断所述第一内存节点是否被写满;若未被写满,则将所述目标非活跃内存页迁移至所述第一内存节点;若已被写满,则进入所述判断所述第二内存节点是否被写满的步骤。
7.可选地,所述将所述目标内存节点中的非活跃内存页迁移至所述第二内存节点,包括:基于超路径互联协议将所述目标内存节点中的非活跃内存页迁移至所述第二内存节点。
8.可选地,所述将所述目标内存节点中的非活跃内存页迁移至层级低于所述目标内存节点的其他内存节点,包括:获取内存页的不活跃程度与内存节点的层级间的预设对应关系;根据所述预设对应关系及所述非活跃内存页的不活跃程度,将所述非活跃内存页迁移至对应层级的其他内存节点。
9.可选地,所述持续将所述目标内存节点中的非活跃内存页迁移至层级低于所述目标内存节点的其他内存节点,包括:将最近预设时间段内访问量最小的内存页设置为所述非活跃内存页;将所述非活跃内存页迁移至所述其他内存节点,并更新所述空闲页数量;当确定更新后的空闲页数量小于所述预设阈值时,进入所述将最近预设时间段内访问量最小的内存页设置为所述非活跃内存页的步骤。
10.可选地,所述将最近预设时间段内访问量最小的内存页设置为所述非活跃内存页,包括:利用非活动最近最少使用链表将最近预设时间段内访问量最小的内存页设置为所述非活跃内存页。
11.可选地,所述利用非活动最近最少使用链表将最近预设时间段内访问量最小的内存页设置为所述非活跃内存页,包括:当确定非活动文件页最近最少使用链表不为空时,将位于所述非活动文件页最近最少使用链表尾部的内存页设置为所述非活跃内存页;当确定非活动文件页最近最少使用链表为空时,将非活动匿名页最近最少使用链表尾部的内存页设置为所述非活跃内存页。
12.可选地,在确定待迁移至目标内存节点的目标内存页之前,还包括:根据应用程序线程所在的目标中央处理器以及所述目标中央处理器与各个所述内存节点间的关联关系,设置各个所述内存节点对应的层级。
13.可选地,所述根据应用程序线程所在的目标中央处理器以及所述目标中央处理器与各个所述内存节点间的关联关系,设置各个所述内存节点对应的层级,包括:根据所述应用程序线程所在的目标中央处理器以及所述目标中央处理器与各个所述内存节点间的挂载关系,设置各个所述内存节点对应的层级。
14.可选地,所述根据应用程序线程所在的目标中央处理器以及所述目标中央处理器与各个所述内存节点间的关联关系,设置各个所述内存节点对应的层级,包括:根据所述应用程序线程所在的目标中央处理器以及所述目标中央处理器读写各个所述内存节点的速度,设置各个所述内存节点对应的层级。
15.可选地,在设置各个所述内存节点对应的层级之后,还包括:将层级最高的内存节点设置为所述目标内存节点。
16.可选地,所述确定待迁移至目标内存节点的目标内存页,包括:
当确定所述应用程序线程请求访问的内存页并未保存于所述目标内存节点时,将所述应用程序线程请求访问的内存页设置为所述目标内存页。
17.可选地,在向所述空闲页迁移所述目标内存页之后,还包括:向所述应用程序线程返回所述目标内存页中的数据。
18.可选地,所述目标内存节点的存储空间包含普通空间和预留空间,所述普通空间由自动非统一内存访问框架维护,所述确定所述目标内存节点中的空闲页,并向所述空闲页迁移所述目标内存页,包括:利用所述自动非统一内存访问框架向所述普通空间迁移所述目标内存页,并判断所述自动非统一内存访问框架是否输出页面故障信息;若是,则确定所述预留空间中的空闲页,并向所述预留空间中的空闲页迁移所述目标内存页;相应的,所述当检测到所述目标内存节点中剩余的空闲页数量小于预设阈值时,持续将所述目标内存节点中的非活跃内存页迁移至层级低于所述目标内存节点的其他内存节点,直至确定所述空闲页数量不小于所述预设阈值,包括:当检测到所述预留空间中剩余的空闲页数量小于预设阈值时,持续将所述目标内存节点中的非活跃内存页迁移至层级低于所述目标内存节点的其他内存节点,并将回收出的空闲页补充至所述预留空间,直至确定所述预留空间中的空闲页数量不小于所述预设阈值。
19.可选地,所述向所述预留空间中的空闲页迁移所述目标内存页,包括:根据所述页面故障信息确定所述目标内存页所在的位置;根据所述位置将所述目标内存页迁移至所述预留空间中的空闲页。
20.可选地,所述确定所述预留空间中的空闲页,并向所述预留空间中的空闲页迁移所述目标内存页,包括:利用第一预设线程确定所述预留空间中的空闲页,并向所述预留空间中的空闲页迁移所述目标内存页;相应的,所述持续将所述目标内存节点中的非活跃内存页迁移至层级低于所述目标内存节点的其他内存节点,并将回收出的空闲页补充至所述预留空间,包括:利用第二预设线程持续将所述目标内存节点中的非活跃内存页迁移至所述其他内存节点,并将回收出的空闲页补充至所述预留空间。
21.可选地,还包括:在所述第一预设线程确定所述预留空间中剩余的空闲页数量小于所述预设阈值时,利用所述第一预设线程唤醒所述第二预设线程。
22.可选地,还包括:在确定所述预留空间中的空闲页数量不小于所述预设阈值时,休眠所述第二预设线程。
23.本发明还提供一种内存数据迁移装置,应用于分层内存系统,所述分层内存系统包含多个内存节点,各所述内存节点对应不同的层级,所述装置包括:目标内存页确定模块,用于确定待迁移至目标内存节点的目标内存页;迁移模块,用于确定所述目标内存节点中的空闲页,并向所述空闲页迁移所述目
标内存页;降级模块,用于当检测到所述目标内存节点中剩余的空闲页数量小于预设阈值时,持续将所述目标内存节点中的非活跃内存页迁移至层级低于所述目标内存节点的其他内存节点,直至确定所述空闲页数量不小于所述预设阈值。
24.本发明还提供一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上所述的内存数据迁移方法。
25.本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上所述的内存数据迁移方法。
26.本发明提供一种内存数据迁移方法,应用于分层内存系统,所述分层内存系统包含多个内存节点,各所述内存节点对应不同的层级,所述方法包括:确定待迁移至目标内存节点的目标内存页;确定所述目标内存节点中的空闲页,并向所述空闲页迁移所述目标内存页;当检测到所述目标内存节点中剩余的空闲页数量小于预设阈值时,持续将所述目标内存节点中的非活跃内存页迁移至层级低于所述目标内存节点的其他内存节点,直至确定所述空闲页数量不小于所述预设阈值。
27.本发明的有益效果在于:本发明首先可确定待迁移至目标内存节点的目标内存页,以及确定目标内存节点中的空闲页,并向空闲页迁移目标内存页;随后,当检测到目标内存节点中剩余的空闲页数量小于预设阈值时,持续将目标内存节点中的非活跃内存页迁移至层级低于目标内存节点的其他内存节点,直至确定空闲页数量不小于预设阈值。换句话说,本发明在每次完成内存迁移后,都会主动确定目标内存节点中剩余的空闲页是否能够满足下次迁移需求,若无法满足则会主动将目标内存节点中的非活跃内存页迁移至层级低于所述目标内存节点的其他内存节点,即可对目标内存节点中的非活跃内存页主动进行页面降级,以释放出目标内存节点中的空间,从而可避免目标内存节点被写满,进而可方便应用程序的高效读取。本发明还提供一种内存数据迁移装置、电子设备及计算机可读存储介质,具有上述有益效果。
附图说明
28.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
29.图1为本发明实施例所提供的一种分层内存系统的示意图;图2为本发明实施例所提供的第一种内存数据迁移方法的流程图;图3为本发明实施例所提供的第二种内存数据迁移方法的流程图;图4为本发明实施例所提供的第三种内存数据迁移方法的流程图;图5为本发明实施例所提供的一种内存数据迁移装置的结构框图;图6为本发明实施例所提供的一种电子设备的结构框图。
具体实施方式
30.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
31.为便于理解,下面将首先对本发明所适用的分层内存系统进行简单介绍。请参考图1,图1为本发明实施例所提供的一种分层内存系统的示意图。分层内存系统一般可包含多个内存节点,例如在图1所示的系统中,包含了两个处理器及四个内存节点,其中处理器0通过内存控制器挂载动态随机存储内存0(动态随机存储内存,dram,dynamic random access memory)和持久性内存0(持久性内存,pm,persistent memory),处理器1通过内存控制器挂载动态随机存储内存1和持久性内存1。各处理器除了可通过本地的内存控制器访问本地的两个内存节点之外,还可通过超路径互联协议(upi,ultra path interconnect)访问挂载于对方的内存节点。同时,该系统还设置有非统一内存访问框架(numa,non uniform memory access),可通过该框架对以上这四个内存节点进行统一管理。当然,图1仅展示了一种可能的分层内存系统。在其他分层内存系统中,处理器数量、内存节点数量及处理器与内存节点间的挂载关系可能不同。
32.在上述系统中,受内存性能及挂载关系的影响,处理器访问各内存节点的速率不同。例如对于处理器0而言,各内存节点的访问延迟和带宽情况为:访问动态随机存取内存0的性能优于其他三个内存节点,访问持久性内存0比访问动态随机存取内存1要慢。即对于处理器0而言,以上四个内存节点的性能排序为:动态随机存取内存0》动态随机存取内存1》持久性内存0》持久性内存1。因此,为确保分层内存系统能够提供高性能服务,在该系统提供服务前,可根据中央处理器与各个内存节点间的关联关系,设置各个内存节点对应的层级。为了能更好地为应用程序线程服务,也可进一步根据应用程序线程所在的目标中央处理器以及目标中央处理器与各个内存节点间的关联关系,设置各个内存节点对应的层级。这一内存节点层级的设定过程可发生在应用程序启动之时。本发明实施例并不限定具体的关联关系,例如可根据应用程序线程所在的目标中央处理器以及目标中央处理器与各个内存节点间的挂载关系,设置各个内存节点对应的层级;也可根据应用程序线程所在的目标中央处理器以及目标中央处理器读写各个内存节点的速度,设置各个内存节点对应的层级;也可同时根据挂载关系及读写速度设置各个内存节点对应的层级,可根据实际应用需求进行设定。显然,在分层内存系统中,内存节点间存在层次关系。在此基础上,为了保证本地应用程序能够快速访问到内存数据,通常可将应用程序线程所需的内存页迁移至性能较好的内存节点上(即将内存页升级至较高层级的内存节点上),而这一过程通常由非统一内存访问框架实现。例如对于运行于处理器0的应用程序线程,由于动态随机存取内存0对于该线程而言层级最高,性能最好,因此该框架会优先将内存页从较低层级的内存节点迁移至动态随机存取内存0。然而,非统一内存访问框架缺乏页面降级机制,即仅可将内存页从低层级内存节点迁移至高层级内存节点,而无法将内存页从高层级内存节点迁移至低层级内存节点,而这容易导致高层级内存节点被写满。例如在上述例子中,这种缺陷将导致动态随机存取内存0被写满,而在其被写满时,该框架将停止页面迁移并输出页面故障信息,而不会对动态随机存取内存0中的内存页进行降级,以主动回收动态随机存取内存0中的空
间。因此,相关技术存在因内存节点被写满而无法进行内存页迁移的缺陷,进而会影响应用程序的高效运行。有鉴于此,本发明可提供一种内存数据迁移方法,可在确定目标内存节点即将被写满时,对目标内存节点中的非活跃内存页主动进行页面降级,以主动回收该内存节点中的存储空间,从而可避免目标内存节点被写满的情况,进而可解决因目标内存节点被写满所导致的无法迁移内存页的问题。
33.需要说明的是,本发明实施例并不限定执行本方法的硬件设备,例如可以为个人电脑、服务器等。
34.请参考图2,图2为本发明实施例所提供的第一种内存数据迁移方法的流程图。该方法应用于分层内存系统,分层内存系统包含多个内存节点,各内存节点对应不同的层级。该方法可以包括:s20、确定待迁移至目标内存节点的目标内存页。
35.内存节点通常以页面(page)为单位进行数据存放及管理,因此数据在内存节点间的迁移通常也是以页面为单位进行的。需特别指出的是,内存页在本发明实施例中特指内存节点中包含有内存数据的页面,而内存页迁移指将内存数据以页面为单位从一个内存节点迁移至另一个内存节点。可以理解的是,在进行内存页迁移之前,首先要确定待迁移的目标内存页当前所在的位置及其所要被迁移至的目标内存节点。本发明实施例并不限定上述确定方式,可参考非统一内存访问框架的相关技术,例如对于某个应用程序线程而言,首先可确定其所在的目标中央处理器(cpu),并将对于该处理器而言性能较好的内存节点设置为目标内存节点,例如可将层级最高、性能最好的内存节点设置为目标内存节点;随后,当确定该应用程序线程请求访问的内存页并未保存于目标内存节点时,可将该内存页设置为待迁移至上述目标内存节点的目标内存页。
36.基于此,确定待迁移至目标内存节点的目标内存页,可以包括:s2011、当确定应用程序线程请求访问的内存页并未保存于目标内存节点时,将应用程序线程请求访问的内存页设置为目标内存页。
37.s21、确定目标内存节点中的空闲页,并向空闲页迁移目标内存页。
38.在本发明实施例中,空闲页特指内存节点中不包含内存数据的页面。可以理解的是,目标内存页将被迁移至目标内存节点中的空闲页,以便应用程序访问。
39.进一步,可以理解的是,在完成对目标内存页的迁移之后,可访问目标内存节点,以读取目标内存页中的内存数据,并将该数据返回给应用程序线程,以供应用程序线程使用。
40.基于此,在将目标内存页迁移至空闲页之后,还可以包括:s211、向应用程序线程返回目标内存页中的数据。
41.s22、当检测到目标内存节点中剩余的空闲页数量小于预设阈值时,持续将目标内存节点中的非活跃内存页迁移至层级低于目标内存节点的其他内存节点,直至确定空闲页数量不小于预设阈值。
42.为防止目标内存节点被写满,本发明实施例可提供针对分层内存系统的页面降级机制。具体的,本发明实施例特别在目标内存节点中设置了空闲页数量对应的预设阈值。设置针对空闲页数量的阈值,是由于内存节点通常以页面为单位进行数据存放及管理,当内存节点中不存在空闲页时,意味着内存节点无法写入数据。因此,该阈值更能准确反映内存
节点中的剩余空间大小。而在进行内存页迁移的过程中,本发明实施例将实时更新剩余的空闲页数量,并在确定其小于预设阈值时,主动将目标内存节点中的非活跃内存页迁移至层级低于目标内存节点的其他内存节点,即主动将非活跃内存页降级至层级较低的其他内存节点,其中非活跃内存页指活跃度较低、近期被访问次数较少的内存页。这一降级过程将持续进行,直至确定空闲页数量不小于预设阈值时停止。显然,由于本发明实施例引入了页面降级机制,因此能够避免目标内存节点被写满,进而便可避免因目标内存节点被写满而无法向其中迁移内存页的缺陷,从而可提升应用程序的运行效率。
43.需要说明的是,本发明实施例并不限定预设阈值的具体数值,可根据实际应用需求进行设定。本发明实施例也不限定如何确定非活跃内存页,例如可基于各内存页在最近预设时间段内的访问次数来确定非活跃内存页,也可进一步借助非活跃最近最少使用链表(非活跃lru链表,least recently used)进行确定。本发明实施例也不限定将非活跃内存页迁移至其他内存节点的具体执行方式,例如可将非活跃内存页始终迁移至层级最低、性能最差的内存节点;也可以预设内存页的不活跃程度与内存节点层级间的对应关系,进而依照该非活跃内存页的不活跃程度,将其迁移至对应层级的内存节点中。
44.进一步,值得指出的是,步骤s21和步骤s22可并行执行,即在向目标内存节点迁移内存页的同时,也可将目标内存节点中的非活跃内存页同步降级至较低层级的其他内存节点,从而可避免页面降级对页面升级的影响。
45.基于上述实施例,本发明首先可确定待迁移至目标内存节点的目标内存页,以及确定目标内存节点中的空闲页,并向空闲页迁移目标内存页;随后,当检测到目标内存节点中剩余的空闲页数量小于预设阈值时,持续将目标内存节点中的非活跃内存页迁移至层级低于目标内存节点的其他内存节点,直至确定空闲页数量不小于预设阈值。换句话说,本发明在每次完成内存迁移后,都会主动确定目标内存节点中剩余的空闲页是否能够满足下次迁移需求,若无法满足则会主动将目标内存节点中的非活跃内存页迁移至层级低于所述目标内存节点的其他内存节点,即可对目标内存节点中的非活跃内存页主动进行页面降级,以释放出目标内存节点中的空间,从而可避免目标内存节点被写满,进而可方便应用程序的高效读取。
46.基于上述实施例,下面将对本发明实施例所提供的两种页面降级方式进行详细介绍。在一种可能的情况中,将目标内存节点中的非活跃内存页迁移至层级低于目标内存节点的其他内存节点,可以包括:s2211、获取内存页的不活跃程度与内存节点的层级间的预设对应关系。
47.在本发明实施例中,内存页的不活跃程度可由其在最近预设时间段内的访问量进行量化,并与访问量成反比,即访问量越低,则不活跃程度越高。本发明实施例可针对访问量设置多个阈值区间,每个阈值区间对应一个不活跃程度。随后,本发明实施例可设置该不活跃程度与内存节点层级间的对应关系。进而,在获取到非活跃内存页时,本发明实施例可根据其对应的不活跃程度,将非活跃内存页降级至对应层级的其他内存节点。
48.s2212、根据预设对应关系及非活跃内存页的不活跃程度,将非活跃内存页迁移至对应层级的其他内存节点。
49.在另一种可能的情况中,持续将目标内存节点中的非活跃内存页迁移至层级低于目标内存节点的其他内存节点,可以包括:
s2221、在其他内存节点中确定本地访问速度最慢的第一内存节点和远程访问速度最慢的第二内存节点。
50.在本发明实施例中,非活跃内存页被迁移至访问速度最慢的内存节点,以避免非活跃内存页对内存访问的影响。上述内存节点既可以是对于本地处理器而言本地访问速度最慢的第一内存节点,例如对于图1中的处理器0而言,第一内存节点可以为持久性内存0;也可以是远程访问速度最慢的第二内存节点,例如对于图1中的处理器0而言,第二内存节点可以为持久性内存1。
51.s2222、持续将目标内存节点中的非活跃内存页迁移至第一内存节点或第二内存节点。
52.应当指出的是,第一内存节点和第二内存节点之间可不设置优先级,即仅需将非活跃内存页迁移至上述两节点中具有空闲空间的一个节点即可;当然,以上两个节点之间也可设置优先级,例如优先将非活跃内存页迁移至第二内存节点,并仅在第二内存节点已满时才将其迁移至第一内存节点。设置优先级的优势在于,可将非活跃内存页优先地迁移至分层内存系统中对于本地处理器而言最慢的内存节点上,从而保证内存的访问效率。当然,在内存页降级过程中,假若遭遇第一内存节点及第二内存节点均被写满的情况,此时可循环确定第一内存节点及第二内存节点是否有空闲空间,并在确定其中一者再次出现了空闲空间时,将非活跃内存页迁移至其中。
53.基于此,持续将目标内存节点中的非活跃内存页迁移至第一内存节点或第二内存节点,可以包括:步骤1:确定当前待迁移的目标非活跃内存页,并判断第二内存节点是否被写满;若是,则进入步骤3;若否,则进入步骤2;步骤2:将目标非活跃内存页迁移至第二内存节点;步骤3:判断第一内存节点是否被写满;若是,则进入步骤5;若否,则进入步骤4;步骤4:将目标非活跃内存页迁移至第一内存节点;步骤5:进入判断第二内存节点是否被写满的步骤。
54.应当说明的是,对于远程访问的内存节点,本地处理器可基于超路径互联协议将目标内存节点中的非活跃内存页迁移至第二内存节点。
55.基于上述实施例,下面对区分非活跃内存页的具体方式进行详细介绍。基于此,持续将目标内存节点中的非活跃内存页迁移至层级低于目标内存节点的其他内存节点,可以包括:s2231、将最近预设时间段内访问量最小的内存页设置为非活跃内存页。
56.本发明实施例可将最近预设时间段内访问量最小的内存页设置为非活跃内存页,其中预设时间段可根据实际应用需求进行任意设置。可以理解的是,由于每次仅确定一个非活跃内存页,因此在完成对该非活跃内存页的降级之后,本发明实施例需更新空闲页数量,并判断更新后的空闲页数量是否小于预设阈值。若仍小于预设阈值,则本发明实施例需继续确定下一个非活跃内存页,并对下一个非活跃内存页进行降级,直至确定更新后的空闲页数量不小于预设阈值时停止。
57.需要说明的是,本发明实施例并不限定如何查找最近预设时间段内访问量最小的内存页,例如可自行统计各个内存页的被访问次数;也可以基于现有的非活动最近最少使
用链表(非活跃lru链表,least recently used)进行确认,具体可直接将该链表末尾的内存页设置为非活跃内存页。
58.基于此,将最近预设时间段内访问量最小的内存页设置为非活跃内存页,可以包括:s22311、利用非活动最近最少使用链表将最近预设时间段内访问量最小的内存页设置为非活跃内存页。
59.应当指出的是,在linux操作系统中,内存可分为文件页面和匿名页面。该操作系统可使用多个最近最少使用链表来记录文件页面和匿名页面的近期访问情况,具体为:活动文件页最近最少使用链表、非活动文件页最近最少使用链表、活动匿名页最近最少使用链表及非活动匿名页最近最少使用链表。此处可借助非活动最近最少使用链表来确定访问量最小的页面。具体的,首先查找非活动文件页最近最少使用链表,找到链表尾部的页面作为要降级的页面,如果非活动文件页最近最少使用链表为空,则查找非活动匿名页最近最少使用链表,找到链表尾部的页面作为近期访问量最小的页面。
60.基于此,利用非活动最近最少使用链表将最近预设时间段内访问量最小的内存页设置为非活跃内存页,可以包括:步骤1:当确定非活动文件页最近最少使用链表不为空时,将位于非活动文件页最近最少使用链表尾部的内存页设置为非活跃内存页;步骤2:当确定非活动文件页最近最少使用链表为空时,将非活动匿名页最近最少使用链表尾部的内存页设置为非活跃内存页。
61.s2232、将非活跃内存页迁移至其他内存节点,并更新空闲页数量;s2233、当确定更新后的空闲页数量小于预设阈值时,进入将最近预设时间段内访问量最小的内存页设置为非活跃内存页的步骤。
62.基于上述实施例,本发明还可将目标内存节点中的存储空间划分为普通空间和预留空间,并由自动非统一内存访问框架(autonuma)维护,以及基于预留空间设置页面降级机制,从而可在不影响自动非统一内存访问框架现有机制的情况下,为分层内存系统提供页面降级功能。请参考图3,图3为本发明实施例所提供的第二种内存数据迁移方法的流程图。本方法还可以包括:s30、确定待迁移至目标内存节点的目标内存页;目标内存节点的存储空间包含普通空间和预留空间,普通空间由自动非统一内存访问框架维护。
63.在本发明实施例中,目标内存节点已被划分为普通空间和预留空间,其中普通空间可由自动非统一内存访问框架维护,该框架为linux操作系统中的非统一内存访问框架;而预留空间用于设置本发明实施例所提供的页面降级机制。
64.s31、利用自动非统一内存访问框架向普通空间迁移目标内存页。
65.s32、判断自动非统一内存访问框架是否输出页面故障信息;若是,则进入步骤s34;若否,则进入步骤s33。
66.具体的,在对目标内存页进行迁移时,本发明实施例首先可将其交由自动非统一内存访问框架处理。该框架可尝试向普通空间中迁入上述目标内存页,并在确定普通空间中存在空闲页时完成迁移,以及在确定普通空间中不存在空闲页时停止迁移,并输出页面错误信息。随后,本发明实施例仅需在确定该框架输出了页面错误信息时,其中本发明实施
例提供的内存页降级机制即可。
67.s33、判定目标内存页迁移完成。
68.s34、确定预留空间中的空闲页,并向预留空间中的空闲页迁移目标内存页。
69.在确定目标内存节点的普通空间已满时,本发明实施例将启用预留空间,并可确定预留空间中的空闲页,从而向预留空间中的空闲页迁移目标内存页。应当指出的是,由于在自动非统一内存访问框架输出的页面故障信息中已包含了目标内存页所在的位置,因此本发明实施例仅需依照该页面故障信息,将目标内存页迁移至预留空间即可。
70.基于此,向预留空间中的空闲页迁移目标内存页,可以包括:s3411、根据页面故障信息确定目标内存页所在的位置;s3412、根据位置将目标内存页迁移至预留空间中的空闲页。
71.s35、当检测到预留空间中剩余的空闲页数量小于预设阈值时,持续将目标内存节点中的非活跃内存页迁移至层级低于目标内存节点的其他内存节点,并将回收出的空闲页补充至预留空间,直至确定预留空间中的空闲页数量不小于预设阈值。
72.由于页面降级机制基于预留空间设置,因此在进行目标内存页迁移的同时,本发明实施例还将实时检测预留空间中剩余的空闲页数量是否小于预设阈值,并在确定该数量小于预设阈值时,持续将目标内存节点中的非活跃内存页迁移至层级低于目标内存节点的其他内存节点,并将回收出的空闲页补充至预留空间,直至确定预留空间中的空闲页数量不小于预设阈值时停止内存页降级。通过上述设置,本发明实施例可在不侵入自动非统一内存访问框架的基础上,为分层内存系统提供页面降级机制,并且可确保该机制可与自动非统一内存访问框架中的现有机制并行运行。
73.值得指出的是,对于目标内存页的迁移和页面降级,本发明实施例还可设置对应的线程进行处理,具体可由第一预设线程执行目标内存页的迁移,以及由第二预设线程执行对非活跃内存页的页面降级。第二预设线程可作为背景线程独立运行,以不干扰对目标内存页的迁移,从而可实现目标内存页迁移和页面降级的并行运行,进一步提升处理效率。
74.基于此,确定预留空间中的空闲页,并向预留空间中的空闲页迁移目标内存页,可以包括:s3421、利用第一预设线程确定预留空间中的空闲页,并向预留空间中的空闲页迁移目标内存页;相应的,持续将目标内存节点中的非活跃内存页迁移至层级低于目标内存节点的其他内存节点,并将回收出的空闲页补充至预留空间,可以包括:s3511、利用第二预设线程持续将目标内存节点中的非活跃内存页迁移至其他内存节点,并将回收出的空闲页补充至预留空间。
75.为节省资源,上述第一预设线程还可检测预留空间中剩余的空闲页数量是否小于预设阈值,并可在确定预留空间中剩余的空闲页数量小于预设阈值时,唤醒上述预设线程,以启动页面降级机制。
76.基于此,本方法还可以包括:s3521、在第一预设线程确定预留空间中剩余的空闲页数量小于预设阈值时,利用第一预设线程唤醒第二预设线程。
77.同时,为节省资源,本发明实施例还可在确定预留空间中剩余的空闲页数量不小
于预设阈值时,自动休眠上述第二预设线程。换句话说,第二预设线程仅在预留空间中剩余的空闲页数量小于预设阈值时才开始工作,这样能够避免页面降级机制始终在后台运行,进而可有效节约资源。
78.基于此,本方法还可以包括:s3531、在确定预留空间中的空闲页数量不小于预设阈值时,休眠第二预设线程。
79.下面基于另一流程图详细介绍上述内存数据迁移方法。请参考图4,图4为本发明实施例所提供的第三种内存数据迁移方法的流程图。本方法可以包括:步骤1、应用程序启动,根据应用程序线程所在的中央处理器位置确定各个内存节点是本地节点还是远程节点,即确定出各节点身份,分别为:本地动态随机存取内存、远程动态随机存取内存、本地持久性内存和远程持久性内存;步骤2、应用程序访问内存,判断当前访问位置是否是在本地动态随机存取内存,若是,则直接访问本地动态随机存取内存,若否,跳转到步骤3;步骤3、查找来自自动非统一内存访问框架(autonuma)的页面故障信息,若无,说明本地动态随机存取内存未满,可直接升级或迁移到本地动态随机存取内存,升级到本地动态随机存取内存,然后访问本地动态随机存取内存即可;若有故障信息,说明本地动态随机存取内存已满,则跳转到步骤4。
80.步骤4、根据故障页所在位置(即当前要访问的位置),将其升级或迁移到本地动态随机存取内存中的预留空闲页,并更新本地动态随机存取内存中的预留空闲页数量。
81.步骤5、判断预留空闲页数量是否小于预先设定的阈值,若否,则访问升级或迁移后的位于本地动态随机存取内存的内存页面数据;若是,则唤醒内核线程(kdegraded)后再访问升级或迁移后的位于本地动态随机存取内存的内存页数据。
82.内核线程被唤醒后作为背景线程独立运行,具体执行过程为:查找非活动最近最少使用链表找到近期访问量最小的内存页,并对其进行降级,然后回收本地动态随机存取内存中空出来的页面到预留页面组,直到预留空闲页数量不小于阈值为止。
83.下面对本发明实施例提供的内存数据迁移装置、电子设备及计算机可读存储介质进行介绍,下文描述的内存数据迁移装置、电子设备及计算机可读存储介质与上文描述的内存数据迁移方法可相互对应参照。
84.请参考图5,图5为本发明实施例所提供的一种内存数据迁移装置的结构框图,该装置应用于分层内存系统,分层内存系统包含多个内存节点,各内存节点对应不同的层级,该装置包括:目标内存页确定模块501,用于确定待迁移至目标内存节点的目标内存页;迁移模块502,用于确定目标内存节点中的空闲页,并向空闲页迁移目标内存页;降级模块503,用于当检测到目标内存节点中剩余的空闲页数量小于预设阈值时,持续将目标内存节点中的非活跃内存页迁移至层级低于目标内存节点的其他内存节点,直至确定空闲页数量不小于预设阈值。
85.可选地,降级模块503,可以包括:节点选择子模块,用于在其他内存节点中确定本地访问速度最慢的第一内存节点和远程访问速度最慢的第二内存节点;降级子模块,用于持续将目标内存节点中的非活跃内存页迁移至第一内存节点或
第二内存节点。
86.可选地,降级子模块,可以包括:第一判断单元,用于确定当前待迁移的目标非活跃内存页,并判断第二内存节点是否被写满;第一迁移单元,用于在第一判断单元判定第二内存节点未被写满时,将目标非活跃内存页迁移至第二内存节点;第二判断单元,用于在第一判断单元判定第二内存节点被写满时,判断第一内存节点是否被写满;若已被写满,则重新调用第一判断单元执行判断第二内存节点是否被写满的步骤;第二迁移单元,用于在第二判断单元判定第一内存节点未被写满时,将目标非活跃内存页迁移至第一内存节点。
87.可选地,降级子模块,具体用于:基于超路径互联协议将目标内存节点中的非活跃内存页迁移至第二内存节点。
88.可选地,降级模块503,可以包括:获取子模块,用于获取内存页的不活跃程度与内存节点的层级间的预设对应关系;降级子模块,用于根据预设对应关系及非活跃内存页的不活跃程度,将非活跃内存页迁移至对应层级的其他内存节点。
89.可选地,降级模块503,可以包括:非活跃内存页设置子模块,用于将最近预设时间段内访问量最小的内存页设置为非活跃内存页;迁移子模块,用于将非活跃内存页迁移至其他内存节点,并更新空闲页数量;循环子模块,用于当确定更新后的空闲页数量小于预设阈值时,调用非活跃内存页设置子模块进入将最近预设时间段内访问量最小的内存页设置为非活跃内存页的步骤。
90.可选地,非活跃内存页设置子模块,具体用于:利用非活动最近最少使用链表将最近预设时间段内访问量最小的内存页设置为非活跃内存页。
91.可选地,非活跃内存页设置子模块,可以包括:第一设置单元,用于当确定非活动文件页最近最少使用链表不为空时,将位于非活动文件页最近最少使用链表尾部的内存页设置为非活跃内存页;第二设置单元,用于当确定非活动文件页最近最少使用链表为空时,将非活动匿名页最近最少使用链表尾部的内存页设置为非活跃内存页。
92.可选地,该装置还可以包括:内存节点层级设置模块,用于根据应用程序线程所在的目标中央处理器以及目标中央处理器与各个内存节点间的关联关系,设置各个内存节点对应的层级。
93.可选地,内存节点层级设置模块,具体用于:根据应用程序线程所在的目标中央处理器以及目标中央处理器与各个内存节点间的挂载关系,设置各个内存节点对应的层级。
94.可选地,内存节点层级设置模块,具体用于:
根据应用程序线程所在的目标中央处理器以及目标中央处理器读写各个内存节点的速度,设置各个内存节点对应的层级。
95.可选地,该装置还可以包括:目标内存节点设置模块,用于将层级最高的内存节点设置为目标内存节点。
96.可选地,目标内存页确定模块501,具体用于:当确定应用程序线程请求访问的内存页并未保存于目标内存节点时,将应用程序线程请求访问的内存页设置为目标内存页。
97.可选地,该装置还可以包括:数据返回模块,用于向应用程序线程返回目标内存页中的数据。
98.可选地,目标内存节点的存储空间包含普通空间和预留空间,普通空间由自动非统一内存访问框架维护,迁移模块502,可以包括:第一迁移子模块,用于利用自动非统一内存访问框架向普通空间迁移目标内存页,并判断自动非统一内存访问框架是否输出页面故障信息;第二迁移子模块,用于在确定自动非统一内存访问框架输出页面故障信息时,则确定预留空间中的空闲页,并向预留空间中的空闲页迁移目标内存页;相应的,降级模块503,具体用于:当检测到预留空间中剩余的空闲页数量小于预设阈值时,持续将目标内存节点中的非活跃内存页迁移至层级低于目标内存节点的其他内存节点,并将回收出的空闲页补充至预留空间,直至确定预留空间中的空闲页数量不小于预设阈值。
99.可选地,第二迁移子模块,可以包括:目标内存页读取单元,用于根据页面故障信息确定目标内存页所在的位置;迁移单元,用于根据位置将目标内存页迁移至预留空间中的空闲页。
100.可选地,第二迁移子模块,具体用于:利用第一预设线程确定预留空间中的空闲页,并向预留空间中的空闲页迁移目标内存页;相应的,降级模块503,具体用于:利用第二预设线程持续将目标内存节点中的非活跃内存页迁移至其他内存节点,并将回收出的空闲页补充至预留空间。
101.可选地,该装置还可以包括:线程唤醒模块,用于在第一预设线程确定预留空间中剩余的空闲页数量小于预设阈值时,利用第一预设线程唤醒第二预设线程。
102.可选地,该装置还可以包括:线程休眠模块,用于在确定预留空间中的空闲页数量不小于预设阈值时,休眠第二预设线程。
103.请参考图6,图6为本发明实施例所提供的一种电子设备的结构框图,本发明实施例提供了一种电子设备60,包括处理器61和存储器62;其中,所述存储器62,用于保存计算机程序;所述处理器61,用于在执行所述计算机程序时执行前述实施例提供的内存数据迁移方法。
104.关于上述内存数据迁移方法的具体过程可以参考前述实施例中提供的相应内容,
在此不再进行赘述。
105.并且,所述存储器62作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,存储方式可以是短暂存储或者永久存储。
106.另外,所述电子设备60还包括电源63、通信接口64、输入输出接口65和通信总线66;其中,所述电源63用于为所述电子设备60上的各硬件设备提供工作电压;所述通信接口64能够为所述电子设备60创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本发明技术方案的任意通信协议,在此不对其进行具体限定;所述输入输出接口65,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
107.本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任意实施例的内存数据迁移方法的步骤。
108.由于计算机可读存储介质部分的实施例与内存数据迁移方法部分的实施例相互对应,因此存储介质部分的实施例请参见内存数据迁移方法部分的实施例的描述,这里不再赘述。
109.说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
110.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
111.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其他形式的存储介质中。
112.以上对本发明所提供的一种内存数据迁移方法、装置、电子设备及存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
技术特征:
1.一种内存数据迁移方法,其特征在于,应用于分层内存系统,所述分层内存系统包含多个内存节点,各所述内存节点对应不同的层级,所述方法包括:确定待迁移至目标内存节点的目标内存页;确定所述目标内存节点中的空闲页,并向所述空闲页迁移所述目标内存页;当检测到所述目标内存节点中剩余的空闲页数量小于预设阈值时,持续将所述目标内存节点中的非活跃内存页迁移至层级低于所述目标内存节点的其他内存节点,直至确定所述空闲页数量不小于所述预设阈值。2.根据权利要求1所述的内存数据迁移方法,其特征在于,所述持续将所述目标内存节点中的非活跃内存页迁移至层级低于所述目标内存节点的其他内存节点,包括:在所述其他内存节点中确定本地访问速度最慢的第一内存节点和远程访问速度最慢的第二内存节点;持续将所述目标内存节点中的非活跃内存页迁移至所述第一内存节点或所述第二内存节点。3.根据权利要求2所述的内存数据迁移方法,其特征在于,所述持续将所述目标内存节点中的非活跃内存页迁移至所述第一内存节点或所述第二内存节点,包括:确定当前待迁移的目标非活跃内存页,并判断所述第二内存节点是否被写满;若否,则将所述目标非活跃内存页迁移至所述第二内存节点;若是,则判断所述第一内存节点是否被写满;若未被写满,则将所述目标非活跃内存页迁移至所述第一内存节点;若已被写满,则进入所述判断所述第二内存节点是否被写满的步骤。4.根据权利要求2所述的内存数据迁移方法,其特征在于,所述将所述目标内存节点中的非活跃内存页迁移至所述第二内存节点,包括:基于超路径互联协议将所述目标内存节点中的非活跃内存页迁移至所述第二内存节点。5.根据权利要求1所述的内存数据迁移方法,其特征在于,所述将所述目标内存节点中的非活跃内存页迁移至层级低于所述目标内存节点的其他内存节点,包括:获取内存页的不活跃程度与内存节点的层级间的预设对应关系;根据所述预设对应关系及所述非活跃内存页的不活跃程度,将所述非活跃内存页迁移至对应层级的其他内存节点。6.根据权利要求1所述的内存数据迁移方法,其特征在于,所述持续将所述目标内存节点中的非活跃内存页迁移至层级低于所述目标内存节点的其他内存节点,包括:将最近预设时间段内访问量最小的内存页设置为所述非活跃内存页;将所述非活跃内存页迁移至所述其他内存节点,并更新所述空闲页数量;当确定更新后的空闲页数量小于所述预设阈值时,进入所述将最近预设时间段内访问量最小的内存页设置为所述非活跃内存页的步骤。7.根据权利要求6所述的内存数据迁移方法,其特征在于,所述将最近预设时间段内访问量最小的内存页设置为所述非活跃内存页,包括:利用非活动最近最少使用链表将最近预设时间段内访问量最小的内存页设置为所述非活跃内存页。
8.根据权利要求7所述的内存数据迁移方法,其特征在于,所述利用非活动最近最少使用链表将最近预设时间段内访问量最小的内存页设置为所述非活跃内存页,包括:当确定非活动文件页最近最少使用链表不为空时,将位于所述非活动文件页最近最少使用链表尾部的内存页设置为所述非活跃内存页;当确定非活动文件页最近最少使用链表为空时,将非活动匿名页最近最少使用链表尾部的内存页设置为所述非活跃内存页。9.根据权利要求1所述的内存数据迁移方法,其特征在于,在确定待迁移至目标内存节点的目标内存页之前,还包括:根据应用程序线程所在的目标中央处理器以及所述目标中央处理器与各个所述内存节点间的关联关系,设置各个所述内存节点对应的层级。10.根据权利要求9所述的内存数据迁移方法,其特征在于,所述根据应用程序线程所在的目标中央处理器以及所述目标中央处理器与各个所述内存节点间的关联关系,设置各个所述内存节点对应的层级,包括:根据所述应用程序线程所在的目标中央处理器以及所述目标中央处理器与各个所述内存节点间的挂载关系,设置各个所述内存节点对应的层级。11.根据权利要求9所述的内存数据迁移方法,其特征在于,所述根据应用程序线程所在的目标中央处理器以及所述目标中央处理器与各个所述内存节点间的关联关系,设置各个所述内存节点对应的层级,包括:根据所述应用程序线程所在的目标中央处理器以及所述目标中央处理器读写各个所述内存节点的速度,设置各个所述内存节点对应的层级。12.根据权利要求9所述的内存数据迁移方法,其特征在于,在设置各个所述内存节点对应的层级之后,还包括:将层级最高的内存节点设置为所述目标内存节点。13.根据权利要求9所述的内存数据迁移方法,其特征在于,所述确定待迁移至目标内存节点的目标内存页,包括:当确定所述应用程序线程请求访问的内存页并未保存于所述目标内存节点时,将所述应用程序线程请求访问的内存页设置为所述目标内存页。14.根据权利要求12所述的内存数据迁移方法,其特征在于,在向所述空闲页迁移所述目标内存页之后,还包括:向所述应用程序线程返回所述目标内存页中的数据。15.根据权利要求1至14任一项所述的内存数据迁移方法,其特征在于,所述目标内存节点的存储空间包含普通空间和预留空间,所述普通空间由自动非统一内存访问框架维护,所述确定所述目标内存节点中的空闲页,并向所述空闲页迁移所述目标内存页,包括:利用所述自动非统一内存访问框架向所述普通空间迁移所述目标内存页,并判断所述自动非统一内存访问框架是否输出页面故障信息;若是,则确定所述预留空间中的空闲页,并向所述预留空间中的空闲页迁移所述目标内存页;相应的,所述当检测到所述目标内存节点中剩余的空闲页数量小于预设阈值时,持续将所述目标内存节点中的非活跃内存页迁移至层级低于所述目标内存节点的其他内存节
点,直至确定所述空闲页数量不小于所述预设阈值,包括:当检测到所述预留空间中剩余的空闲页数量小于预设阈值时,持续将所述目标内存节点中的非活跃内存页迁移至层级低于所述目标内存节点的其他内存节点,并将回收出的空闲页补充至所述预留空间,直至确定所述预留空间中的空闲页数量不小于所述预设阈值。16.根据权利要求15所述的内存数据迁移方法,其特征在于,所述向所述预留空间中的空闲页迁移所述目标内存页,包括:根据所述页面故障信息确定所述目标内存页所在的位置;根据所述位置将所述目标内存页迁移至所述预留空间中的空闲页。17.根据权利要求15所述的内存数据迁移方法,其特征在于,所述确定所述预留空间中的空闲页,并向所述预留空间中的空闲页迁移所述目标内存页,包括:利用第一预设线程确定所述预留空间中的空闲页,并向所述预留空间中的空闲页迁移所述目标内存页;相应的,所述持续将所述目标内存节点中的非活跃内存页迁移至层级低于所述目标内存节点的其他内存节点,并将回收出的空闲页补充至所述预留空间,包括:利用第二预设线程持续将所述目标内存节点中的非活跃内存页迁移至所述其他内存节点,并将回收出的空闲页补充至所述预留空间。18.根据权利要求17所述的内存数据迁移方法,其特征在于,还包括:在所述第一预设线程确定所述预留空间中剩余的空闲页数量小于所述预设阈值时,利用所述第一预设线程唤醒所述第二预设线程。19.根据权利要求18所述的内存数据迁移方法,其特征在于,还包括:在确定所述预留空间中的空闲页数量不小于所述预设阈值时,休眠所述第二预设线程。20.一种内存数据迁移装置,其特征在于,应用于分层内存系统,所述分层内存系统包含多个内存节点,各所述内存节点对应不同的层级,所述装置包括:目标内存页确定模块,用于确定待迁移至目标内存节点的目标内存页;迁移模块,用于确定所述目标内存节点中的空闲页,并向所述空闲页迁移所述目标内存页;降级模块,用于当检测到所述目标内存节点中剩余的空闲页数量小于预设阈值时,持续将所述目标内存节点中的非活跃内存页迁移至层级低于所述目标内存节点的其他内存节点,直至确定所述空闲页数量不小于所述预设阈值。21.一种电子设备,其特征在于,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如权利要求1至19任一项所述的内存数据迁移方法。22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如权利要求1至19任一项所述的内存数据迁移方法。
技术总结
本发明提供一种内存数据迁移方法、装置、电子设备及存储介质,涉及分层内存技术领域,方法应用于分层内存系统,分层内存系统包含多个内存节点,各内存节点对应不同的层级,方法包括:确定待迁移至目标内存节点的目标内存页;确定目标内存节点中的空闲页,并向空闲页迁移目标内存页;当检测到目标内存节点中剩余的空闲页数量小于预设阈值时,持续将目标内存节点中的非活跃内存页迁移至层级低于目标内存节点的其他内存节点,直至确定空闲页数量不小于预设阈值;可在确定目标内存节点即将写满时,主动回收该内存节点中的存储空间,避免目标内存节点写满,从而可解决由于目标内存节点已被写满而无法向该内存节点迁移内存页的技术问题。术问题。术问题。
技术研发人员:赵雅倩 曹芳 郭振华 王丽 高开
受保护的技术使用者:苏州浪潮智能科技有限公司
技术研发日:2023.08.04
技术公布日:2023/9/7
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/