CN116578409A - 内存热页识别与迁移的方法、***及介质 - Google Patents

内存热页识别与迁移的方法、***及介质 Download PDF

Info

Publication number
CN116578409A
CN116578409A CN202310348807.3A CN202310348807A CN116578409A CN 116578409 A CN116578409 A CN 116578409A CN 202310348807 A CN202310348807 A CN 202310348807A CN 116578409 A CN116578409 A CN 116578409A
Authority
CN
China
Prior art keywords
page
memory
hot
pages
heat
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.)
Pending
Application number
CN202310348807.3A
Other languages
English (en)
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.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
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 Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN202310348807.3A priority Critical patent/CN116578409A/zh
Publication of CN116578409A publication Critical patent/CN116578409A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供了一种内存热页识别与迁移的方法、***及介质,涉及计算机***结构技术领域,包括:步骤S1:初始化内存节点;步骤S2:记录内存页面的访问频率;步骤S3:对各所述内存页面的热度分布进行统计,得到统计结果;步骤S4:对所述统计结果进行分析;步骤S5:根据分析,对***参数进行动态调整;步骤S6:筛选内存热页,将内存热页迁移到内存节点。本发明能够能够很好地降低内存访问的平均延迟。

Description

内存热页识别与迁移的方法、***及介质
技术领域
本发明涉及计算机***结构技术领域,具体地,涉及一种内存热页识别与迁移的方法、***及介质。
背景技术
非一致性内存访问(Non Uniform Memory Access,NUMA)是一种多进程环境下将计算机内存划分为若干内存节点的设计,其中内存节点的访问时间取决于该节点与处理器之间的相对位置,处理器访问本地内存节点的速度要快于访问远程内存节点的速度。
目前的主流操作***都对NUMA架构有不同程度的支持。近年来,新兴内存设备不断出现,如傲腾持久内存等设备,这些物理内存设备的单位密度较传统的DRAM内存更高,相同造价下的内存容量也更大,但访问速度较传统的DRAM更慢。
目前的技术实现中,往往在NUMA框架下,将DRAM内存设备设置为本地内存节点,将大容量的慢速内存设备通过热插拔的方式加入***内存,设置为NUMA架构下的一个远端内存节点。操作***的现有机制可以识别远端内存节点访问,将位于远端内存节点的内存页面迁移到本地节点,使得内存访问尽可能在本地节点进行,加速内存访问。
为了提高内存整体访问性能,需要对内存页面按访问热度进行分层放置。操作***对NUMA的现有机制不能对内存分布进行很好的平衡优化,需要一种新的机制能很好地将慢速内存节点中访问热度较高的页筛选出来,将热页迁移到快速节点,将冷页保留在慢速节点。与此同时,还需要一种机制能控制页面迁移速率,为页面迁移和新内存页面的申请留出空间,减少内存颠簸。现有的其他方案均无法很好地满足这些要求。
NUMA:Non Uniform Memory Access,非一致性内存访问,是一种多进程环境下将计算机内存划分为若干内存节点的设计,其中内存节点的访问时间取决于该节点与处理器之间的相对位置。
DAX:Direct Access,直接访问机制,允许用户绕过***缓存直接访问块设备和NVDIMM设备。
HOTPLUG:热插拔,一种操作***功能,可以将新加入的设备接入到***总线当中,在***驱动的支持下可以将支持内存访问的设备以新内存节点的形式加入到***内存中。
NVDIMM:Non Volatile Dual In-line Memory Module,非易失性双列直插式内存模块,具有物理持久性的存储设备,可以用作具有成本效益的内存设备替代品。
发明内容
针对现有技术中的缺陷,本发明提供一种内存热页识别与迁移的方法、***及介质。
根据本发明提供的一种内存热页识别与迁移的方法、***及介质,所述方案如下:
第一方面,提供了一种内存热页识别与迁移的方法,所述方法包括:
步骤S1:初始化内存节点;
步骤S2:记录内存页面的访问频率;
步骤S3:对各所述内存页面的热度分布进行统计,得到统计结果;
步骤S4:对所述统计结果进行分析;
步骤S5:根据分析,对***参数进行动态调整;
步骤S6:筛选内存热页,将内存热页迁移到内存节点。
优选地,所述步骤S1包括:
步骤S1.1:从内存设备中划分内存区域;
步骤S1.2:对所述内存区域使用DAX文件***格式化;
步骤S1.3:对格式化后的内存区域使用热插拔技术创建对应的内存节点;
步骤S1.4:将新创建的内存节点加入内存节点列表,并将新创建的内存节点与热页迁移的目标节点建立映射关系,再初始化新创建的内存节点的热度统计模块以及页表扫描任务。
优选地,所述步骤S2包括:
步骤S2.1:初始化内存节点信息后,对各内存节点的页表进行扫描,将扫描到的虚拟页面设置保护标记,在映射到的内存页的描述结构中记录扫描时刻;
步骤S2.2:用户进程对已设置保护标记的虚拟页面进行访问时,触发页面保护机制,***陷入内核态中;
步骤S2.3:根据当前时刻与步骤S2.1记录的扫描时刻的时间差值,估算出该虚拟页面对应的内存页在最近一段时间的访问频率,并消除保护标记。
优选地,所述步骤S3包括:通过步骤S2记录的页面访问频率信息,对各个进程每隔一个统计周期对所使用的内存页面的热度进行抽样分析,包括:
步骤S3.1:对进程的虚拟地址空间进行均匀采样,并记录本次采样周期的开始时刻;
步骤S3.2:对采样出的内存页设置采样标记和保护标记,并按虚拟地址顺序建立周期记录表;
步骤S3.3:对一个统计周期前采样的内存页重新设置采样标记和保护标记;
步骤S3.4:对两个统计周期前采样的页面,将周期记录表中的数据归纳到收集表;
步骤S3.5:删除归纳完毕的周期记录表,释放周期记录表所占用的空间。
优选地,所述步骤S3.1包括:
获取***时间,记录本次扫描周期的开始时刻;
根据抽样比例确定随机范围S={0,1,2,…,y-1},使用随机函数在S中抽取一个随机整数x;如果该次抽取的随机整数x与上次获得的随机整数x’相同,则在范围内重新抽取一个不同的整数;
扫描进程的内存区域VMA链表,对于一个内存区域,将该内存区域所包含的内存页面按一定大小划分为若干连续的页面组;
对于每个页面组,将页面组起始内存地址随机映射到S中,获得映射值y;
如果映射值y与随机整数x相同,则将该内存组中的页面加入到本次抽样的内存页面集合中;
如果映射值y与随机整数x不相同,则跳过;
所述步骤S3.2包括:
创建并初始化一个新的红黑树作为周期记录表,其中键Key存储内存页面的虚拟地址,值Value存储虚拟页面对应的内存页面的访问间隔,并包含内存页面所属内存节点编号的额外信息;
对本次抽取到的虚拟页面按内存区域批量设置采样标记和保护标记;
对本次抽取到的虚拟页面对应的内存页面,建立对应的记录项,访问间隔的默认值设置为最大统计周期间隔;
将新建立的记录项***到记录表当中;
进行步骤S2.3时,查询对应进程的周期记录表,如果发现本次访问的内存页在当期统计周期的记录表中有对应条目,则将条目的值设为步骤S2.3测定的访问频率,并消除统计标记;
所述步骤S3.3包括:
取出上个统计周期的记录表,对每个表项按照键中存储的虚拟地址查找对应的虚拟页面和内存区域;
将查找到的虚拟页面重新设置访问标记和保护标记;
进行步骤S2.3时,查询对应进程的周期记录表,如果发现本次访问的内存页在上个统计周期的记录表中有对应条目,则将条目的值设为本次步骤S2.3测定的访问频率和条目当前值的最大值,并消除统计标记;
所述步骤S3.4包括:
将访问频率均匀划分为若干个连续的区间,按照内存节点和频率区间将记录表划分为统计单元;
遍历记录表中的记录,找到收集表中对应的统计单元;
统计每个统计单元的页面数量、访问频率的均值和方差。
优选地,所述步骤S4包括:
步骤S4.1:对于每个待迁移内存节点,查询其对应的目标内存节点;
步骤S4.2:在收集表中建立热页指针和冷页指针两个扫描指针,热页指针扫描待迁移内存节点对应的统计单元列表,扫描方向由热到冷;冷页指针扫描目标内存节点对应的统计单元列表,扫描方向由冷到热;
步骤S4.3:对收集表进行扫描,直到冷页指针指向的访问频率高于热页指针指向的访问频率;
步骤S4.4:记录冷热指针扫过的页面数量,以及结束时冷热指针指向的访问频率的平均值;
所述步骤S4.2包括:
热页指针指向访问频率最大值对应的统计单元,冷页指针指向访问频率的最小值对应的统计单元;
如果热页指针指向的统计单元的剩余页面数量大于冷页指针对应的剩余页面数量,则冷页指针移动,热页指针对应的剩余页面数量减去冷页指针对应的剩余页面数量,更新扫描过的页面数量;
如果热页指针指向的统计单元的剩余页面数量小于冷页指针对应的剩余页面数量,则热页指针移动,冷页指针对应的剩余页面数量减去热页指针对应的剩余页面数量,更新扫描过的页面数量;
过程结束时,根据冷热指针指向的统计单元的剩余页面数量比例、访问频率的平均值和方差计算出具体的访问频率。
优选地,所述步骤S5包括:
步骤S5.1:根据步骤S4得出的结果,结合采样率计算热度阈值和迁移速率;
步骤S5.2:将计算出的结果更新到各个内存节点的收集表当中;
步骤S5.3:收集表按照各个进程更新的时间顺序,按LRU策略淘汰过时的统计结果;
步骤S5.4:对收集表中的统计结果按页面数量加权平均,更新该内存节点的热度阈值和迁移速率这两个***参数。
优选地,所述步骤S6基于步骤S5产生的热度阈值和迁移速率筛选内存热页,包括:
步骤S6.1:比较近期页面访问频率与热度阈值的大小,如果频率低于热度阈值,则判定为冷页;如果频率不低于热度阈值,则判定为热页;
步骤S6.2:如果页面被判定为热页,若统计周期内页面迁移的数量未达到迁移速率所规定的最大数量,则判定为可迁移页;否则根据策略判定是否为可迁移页;
如果选择保守策略,则页面被判定为不可迁移页;如果选择激进策略,则将热度阈值提高,若页面热度高于提升后的阈值,则判定为可迁移页,否则判定为不可迁移页;
步骤S6.3:对可迁移页的内存数据进行迁移,更新与虚拟页面的位置映射关系,完成页面迁移过程。
第二方面,提供了一种内存热页识别与迁移的***,所述***包括:
热度计算模块:使用页表扫描和页面访问的时间计算访问频率,从而估算内存页面近期的访问热度;
热度筛选***:用于判断本次访问的内存页面是否应该迁移;
热度统计模块:用于统计各内存节点的内存页面热度分布情况;
热度分析模块:对内存节点热度统计结果进行整理和分析;
汇总模块:汇总各个进程对内存节点的热度分析结果,计算出热度筛选***参数的参考值;
迁移模块:通过调用其他***接口将筛选出的内存页面迁移到目标内存节点。
第三方面,提供了一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现所述内存热页识别与迁移的方法中的步骤。
与现有技术相比,本发明具有如下的有益效果:
1、本发明针对NUMA架构下内存数据冷热分层的问题,提供的方法和装置能够很好地降低内存访问的平均延迟;
2、本发明同时能够适配操作***内核中的内存管理子模块,优化了该模块对基于NVDIMM技术的新型内存设备的支持,具有良好的市场前景和应用价值。
本发明的其他有益效果,将在具体实施方式中通过具体技术特征和技术方案的介绍来阐述,本领域技术人员通过这些技术特征和技术方案的介绍,应能理解所述技术特征和技术方案带来的有益技术效果。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是本发明实施例中装置总模块示意图;
图2是本发明实施例中热页筛选流程示意图;
图3是本发明实施例的热度统计模块示意图;
图4是本发明实施例中热度分析流程示意图;
图5是本发明实施例中收集模块的示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
本发明实施例提供了一种内存热页识别与迁移的方法,参照图1所示,该方法具体包括:
步骤S1:初始化内存节点。
该步骤S1具体包括:
步骤S1.1:从内存设备中划分内存区域;
步骤S1.2:对所述内存区域使用DAX文件***格式化;
步骤S1.3:对格式化后的内存区域使用内存热插拔技术创建对应的内存节点;其中,内存热插拔技术可以将新加入的设备接入到***总线当中,在***驱动的支持下可以将支持内存访问的设备以新内存节点的形式加入到***内存中。
步骤S1.4:将新创建的内存节点加入内存节点列表,并将新创建的内存节点与热页迁移的目标节点建立映射关系,再初始化新创建的内存节点的热度统计模块以及页表扫描任务。
步骤S2:记录内存页面的访问频率。
步骤S2中具体包括:
步骤S2.1:初始化内存节点信息后,对各内存节点的页表进行扫描,将扫描到的虚拟页面设置保护标记,在映射到的内存页的描述结构中记录扫描时刻;
步骤S2.2:用户进程对已设置保护标记的虚拟页面进行访问时,触发页面保护机制,***陷入内核态中;
步骤S2.3:根据当前时刻与步骤S2.1记录的扫描时刻的时间差值,估算出该虚拟页面对应的内存页在最近一段时间的访问频率,并消除保护标记。
步骤S3:对各内存页面的热度分布进行统计,得到统计结果。
通过步骤S2记录的页面访问频率信息,对各个进程每隔一个统计周期对所使用的内存页面的热度进行抽样分析,该步骤S3具体包括:
步骤S3.1:对进程的虚拟地址空间进行均匀采样,并记录本次采样周期的开始时刻;
获取***时间,记录本次扫描周期的开始时刻;
根据抽样比例确定随机范围S={0,1,2,…,y-1},使用随机函数在S中抽取一个随机整数x;如果该次抽取的随机整数x与上次获得的随机整数x’相同,则在范围内重新抽取一个不同的整数;
扫描进程的内存区域VMA链表,对于一个内存区域,将该内存区域所包含的内存页面按一定大小划分为若干连续的页面组;
对于每个页面组,将页面组起始内存地址随机映射到S中,获得映射值y;
如果映射值y与随机整数x相同,则将该内存组中的页面加入到本次抽样的内存页面集合中;
如果映射值y与随机整数x不相同,则跳过。
步骤S3.2:对采样出的内存页设置采样标记和保护标记,并按虚拟地址顺序建立周期记录表;
创建并初始化一个新的红黑树作为周期记录表,其中键Key存储内存页面的虚拟地址,值Value存储虚拟页面对应的内存页面的访问间隔,并包含内存页面所属内存节点编号的额外信息;
对本次抽取到的虚拟页面按内存区域批量设置采样标记和保护标记;
对本次抽取到的虚拟页面对应的内存页面,建立对应的记录项,访问间隔的默认值设置为最大统计周期间隔;
将新建立的记录项***到记录表当中;
进行步骤S2.3时,查询对应进程的周期记录表,如果发现本次访问的内存页在当期统计周期的记录表中有对应条目,则将条目的值设为步骤S2.3测定的访问频率,并消除统计标记。
步骤S3.3:对一个统计周期前采样的内存页重新设置采样标记和保护标记。
取出上个统计周期的记录表,对每个表项按照键中存储的虚拟地址查找对应的虚拟页面和内存区域;
将查找到的虚拟页面重新设置访问标记和保护标记;
进行步骤S2.3时,查询对应进程的周期记录表,如果发现本次访问的内存页在上个统计周期的记录表中有对应条目,则将条目的值设为本次步骤S2.3测定的访问频率和条目当前值的最大值,并消除统计标记;
步骤S3.4:对两个统计周期前采样的页面,将周期记录表中的数据归纳到收集表;
将访问频率均匀划分为若干个连续的区间,按照内存节点和频率区间将记录表划分为统计单元;
遍历记录表中的记录,找到收集表中对应的统计单元;
统计每个统计单元的页面数量、访问频率的均值和方差。
步骤S3.5:删除归纳完毕的周期记录表,释放周期记录表所占用的空间。
步骤S4:对所述统计结果进行分析。
该步骤S4具体包括:步骤S4.1:对于每个待迁移内存节点,查询其对应的目标内存节点;
步骤S4.2:在收集表中建立热页指针和冷页指针两个扫描指针,热页指针扫描待迁移内存节点对应的统计单元列表,扫描方向由热到冷;冷页指针扫描目标内存节点对应的统计单元列表,扫描方向由冷到热。
步骤S4.2包括:
热页指针指向访问频率最大值对应的统计单元,冷页指针指向访问频率的最小值对应的统计单元;
如果热页指针指向的统计单元的剩余页面数量大于冷页指针对应的剩余页面数量,则冷页指针移动,热页指针对应的剩余页面数量减去冷页指针对应的剩余页面数量,更新扫描过的页面数量;
如果热页指针指向的统计单元的剩余页面数量小于冷页指针对应的剩余页面数量,则热页指针移动,冷页指针对应的剩余页面数量减去热页指针对应的剩余页面数量,更新扫描过的页面数量;
过程结束时,根据冷热指针指向的统计单元的剩余页面数量比例、访问频率的平均值和方差计算出具体的访问频率。
步骤S4.3:对收集表进行扫描,直到冷页指针指向的访问频率高于热页指针指向的访问频率;
步骤S4.4:记录冷热指针扫过的页面数量,以及结束时冷热指针指向的访问频率的平均值;
步骤S5:根据分析,对***参数进行动态调整。
该步骤S5包括:
步骤S5.1:根据步骤S4得出的结果,结合采样率计算热度阈值和迁移速率;
步骤S5.2:将计算出的结果更新到各个内存节点的收集表当中;
步骤S5.3:收集表按照各个进程更新的时间顺序,按LRU策略淘汰过时的统计结果;
步骤S5.4:对收集表中的统计结果按页面数量加权平均,更新该内存节点的热度阈值和迁移速率这两个***参数。
步骤S6:筛选内存热页,将内存热页迁移到内存节点。
该步骤S6基于步骤S5产生的热度阈值和迁移速率筛选内存热页,包括:
步骤S6.1:比较近期页面访问频率与热度阈值的大小,如果频率低于热度阈值,则判定为冷页;如果频率不低于热度阈值,则判定为热页;
步骤S6.2:如果页面被判定为热页,若统计周期内页面迁移的数量未达到迁移速率所规定的最大数量,则判定为可迁移页;否则根据策略判定是否为可迁移页;
如果选择保守策略,则页面被判定为不可迁移页;如果选择激进策略,则将热度阈值提高,若页面热度高于提升后的阈值,则判定为可迁移页,否则判定为不可迁移页;
步骤S6.3:对可迁移页的内存数据进行迁移,更新与虚拟页面的位置映射关系,完成页面迁移过程。
本发明还提供一种内存热页识别与迁移的***,所述内存热页识别与迁移的***可以通过执行所述内存热页识别与迁移的方法流程步骤予以实现,即本领域技术人员可以将所述内存热页识别与迁移的方法理解为所述内存热页识别与迁移的***的优选实施方式。
热度计算模块:使用页表扫描和页面访问的时间计算访问频率,从而估算内存页面近期的访问热度;
热度筛选***:用于判断本次访问的内存页面是否应该迁移;
热度统计模块:用于统计各内存节点的内存页面热度分布情况;
热度分析模块:对内存节点热度统计结果进行整理和分析;
汇总模块:汇总各个进程对内存节点的热度分析结果,计算出热度筛选***参数的参考值;
迁移模块:通过调用其他***接口将筛选出的内存页面迁移到目标内存节点。
接下来,对本发明进行更为具体的说明。
参照图1所示,一种内存热页识别与迁移的***,具体包括以下内容:
热度计算模块,该模块使用页表扫描和页面访问的时间计算访问频率,从而估算内存页面近期的访问热度。
热度筛选***:该模块用于判断本次访问的内存页面是否应该迁移。
热度统计模块,该模块用于统计各内存节点的内存页面热度分布情况。
热度分析模块,该模块对内存节点热度统计结果进行整理和分析。
汇总模块,该模块汇总各个进程对内存节点的热度分析结果,计算出热度筛选***参数的参考值。
迁移模块,该模块通过调用其他***接口将筛选出的内存页面迁移到目标内存节点。
如图2所示,用户进程访问内存页面时,如果对应的虚拟页面带有保护标记,则会陷入到内核态,装置会记录此时的***时刻。通过计算该页面设置保护标记的时刻与该时刻之间的时间差,可以估算出用户访问该内存页面的频率,并以访问的时间频率为单位量化的衡量页面的访问热度。
理想情况下,对于一个待迁移的慢速内存节点和它的目标快速内存节点,存在一个页面热度的分界线,热度高于该分界线的页面应放置于快速内存节点,热度低于该分界线的页面应该放置于慢速内存节点。当两个节点之间的内存页面存在冷热不均的情况时,应该将慢速内存节点中较热的页面筛选出来,迁移到快速内存节点,同时限制迁移速率防止内存颠簸。本***在初始化后首先将热度分界线和迁移速率设定为默认值,并在运行的过程中不断调整。
进行热页筛选时,本***会首先将内存页面的热度与热度阈值进行对比:若低于该阈值则未被筛选为热页;若高于该阈值,则***会检查最近一段时间已经迁移的页面数量,计算出迁移速率。若未达到限制速率,则筛选为热页,若已达到限制速率,则***根据筛选策略进一步判断:若采用保守策略,则页面未被筛选为热页;若采用激进策略,则将热度阈值乘一个系数后再进行对比,若仍然高于阈值则筛选为热页,否则未被筛选为热页。
为了观测各个内存节点的内存页面热度分布情况,并根据该情况实时调整热度阈值和迁移速率的限制,可以使用本***中基于热度统计的自适应调整方法。
如图3所示,将***时间划分为若干个统计周期,每个周期分为扫描和收集两个阶段,每个进程都会维护最近若干个周期创建的周期收集表,这些周期收集表以流水线的形式进行创建、收集当前阶段采样信息和整理回收等步骤。
每个周期开始时,会通过随机算法均匀地选择若干页面为采样页面,这些采样页面会被同时设置保护标记和采样标记,并在收集表中创建对应的条目,记录其访问间隔、所属内存节点编号等信息,并设置其访问间隔的默认值为统计周期的最大值。当访问该页面时,会将计算好的间隔更新到记录表的对应项当中。如果该统计表并非本统计周期的扫描阶段创建的,则去当前结果与历史结果的最大值。
周期收集表经过若干周期后,结束收集任务,整理收集结果到分析表中。将收集表各条目中的访问间隔转化为访问频率,并根据访问频率和所属内存节点找到对应的分析表中的分析单元,更新该单元的页面数量、访问频率的平均值和方差等信息。
如图4所示,在每个统计周期开始阶段,会对上个统计周期的分析表进行提取计算。具体计算过程为,每次一个待迁移内存节点和它的目标内存节点,在待迁移节点上设置热页指针指向代表频率最高的内存单元,在目标内存节点上设置冷页指针指向代表频率最低的内存单元。每次循环比较两个所指向的分析单元剩余的页面数量的多少,移动代表数量少的指针到下一个内存单元,并将剩余内存页面多的分析单元的页面数量减去之前两者的差值。当热页指针指向的访问频率不大于冷页指针指向的访问频率时,循环终止,记录此时的两个指针扫描经过的页面数量和循环终止时指向的访问频率,并据此计算出热度阈值和迁移速率的参考值。
各个进程的分析结果会通过收集模块进行汇总,如图5所示,进程得出某个内存节点和其目标内存节点热度阈值和迁移速率的参考值后,会将结果提交到该内存节点的收集模块,收集模块会首先对该进程对该内存节点的使用量占比进行对比,若使用量占比较低则跳过。收集模块会将符合要求的结果提交到结果缓存中,如果此时结果缓存已经达到预定容量,则会淘汰距离上次更新最远的过时结果,以保证最终结果的实时性和准确性。结果缓存会根据各进程提交的结果进行综合计算,并在缓存内容发生变化时实时更新计算结果,进而更新热页筛选模块的热度阈值和迁移速率限制等参数值。通过对***参数进行动态调整,可以对筛选模块的行为进行较为精确地控制,从而通过内存迁移以较快的速度显著改善内存页面分布,降低内存访问平均延迟,提高整体性能。
本发明实施例提供了一种内存热页识别与迁移的方法、***及介质,针对混合内存设备下内存页冷热分层的问题,能够很好地改善各个内存节点之间内存页面的物理分布,使得访问热度较高的页面尽可能映射到访问速度较快的内存节点,降低了内存访问的平均延迟,优化了内存***的整体性能,具有良好的市场前景和应用价值。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的***及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的***及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的***及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

Claims (10)

1.一种内存热页识别与迁移的方法,其特征在于,包括:
步骤S1:初始化内存节点;
步骤S2:记录内存页面的访问频率;
步骤S3:对各所述内存页面的热度分布进行统计,得到统计结果;
步骤S4:对所述统计结果进行分析;
步骤S5:根据分析,对***参数进行动态调整;
步骤S6:筛选内存热页,将内存热页迁移到内存节点。
2.根据权利要求1所述的内存热页识别与迁移的方法,其特征在于,所述步骤S1包括:
步骤S1.1:从内存设备中划分内存区域;
步骤S1.2:对所述内存区域使用DAX文件***格式化;
步骤S1.3:对格式化后的内存区域使用热插拔技术创建对应的内存节点;
步骤S1.4:将新创建的内存节点加入内存节点列表,并将新创建的内存节点与热页迁移的目标节点建立映射关系,再初始化新创建的内存节点的热度统计模块以及页表扫描任务。
3.根据权利要求1所述的内存热页识别与迁移的方法,其特征在于,所述步骤S2包括:
步骤S2.1:初始化内存节点信息后,对各内存节点的页表进行扫描,将扫描到的虚拟页面设置保护标记,在映射到的内存页的描述结构中记录扫描时刻;
步骤S2.2:用户进程对已设置保护标记的虚拟页面进行访问时,触发页面保护机制,***陷入内核态中;
步骤S2.3:根据当前时刻与步骤S2.1记录的扫描时刻的时间差值,估算出该虚拟页面对应的内存页在最近一段时间的访问频率,并消除保护标记。
4.根据权利要求3所述的内存热页识别与迁移的方法,其特征在于,所述步骤S3包括:通过步骤S2记录的页面访问频率信息,对各个进程每隔一个统计周期对所使用的内存页面的热度进行抽样分析,包括:
步骤S3.1:对进程的虚拟地址空间进行均匀采样,并记录本次采样周期的开始时刻;
步骤S3.2:对采样出的内存页设置采样标记和保护标记,并按虚拟地址顺序建立周期记录表;
步骤S3.3:对一个统计周期前采样的内存页重新设置采样标记和保护标记;
步骤S3.4:对两个统计周期前采样的页面,将周期记录表中的数据归纳到收集表;
步骤S3.5:删除归纳完毕的周期记录表,释放周期记录表所占用的空间。
5.根据权利要求4所述的内存热页识别与迁移的方法,其特征在于,所述步骤S3.1包括:
获取***时间,记录本次扫描周期的开始时刻;
根据抽样比例确定随机范围S={0,1,2,…,y-1},使用随机函数在S中抽取一个随机整数x;如果该次抽取的随机整数x与上次获得的随机整数x’相同,则在范围内重新抽取一个不同的整数;
扫描进程的内存区域VMA链表,对于一个内存区域,将该内存区域所包含的内存页面按一定大小划分为若干连续的页面组;
对于每个页面组,将页面组起始内存地址随机映射到S中,获得映射值y;
如果映射值y与随机整数x相同,则将该内存组中的页面加入到本次抽样的内存页面集合中;
如果映射值y与随机整数x不相同,则跳过;
所述步骤S3.2包括:
创建并初始化一个新的红黑树作为周期记录表,其中键Key存储内存页面的虚拟地址,值Value存储虚拟页面对应的内存页面的访问间隔,并包含内存页面所属内存节点编号的额外信息;
对本次抽取到的虚拟页面按内存区域批量设置采样标记和保护标记;
对本次抽取到的虚拟页面对应的内存页面,建立对应的记录项,访问间隔的默认值设置为最大统计周期间隔;
将新建立的记录项***到记录表当中;
进行步骤S2.3时,查询对应进程的周期记录表,如果发现本次访问的内存页在当期统计周期的记录表中有对应条目,则将条目的值设为步骤S2.3测定的访问频率,并消除统计标记;
所述步骤S3.3包括:
取出上个统计周期的记录表,对每个表项按照键中存储的虚拟地址查找对应的虚拟页面和内存区域;
将查找到的虚拟页面重新设置访问标记和保护标记;
进行步骤S2.3时,查询对应进程的周期记录表,如果发现本次访问的内存页在上个统计周期的记录表中有对应条目,则将条目的值设为本次步骤S2.3测定的访问频率和条目当前值的最大值,并消除统计标记;
所述步骤S3.4包括:
将访问频率均匀划分为若干个连续的区间,按照内存节点和频率区间将记录表划分为统计单元;
遍历记录表中的记录,找到收集表中对应的统计单元;
统计每个统计单元的页面数量、访问频率的均值和方差。
6.根据权利要求1所述的内存热页识别与迁移的方法,其特征在于,所述步骤S4包括:
步骤S4.1:对于每个待迁移内存节点,查询其对应的目标内存节点;
步骤S4.2:在收集表中建立热页指针和冷页指针两个扫描指针,热页指针扫描待迁移内存节点对应的统计单元列表,扫描方向由热到冷;冷页指针扫描目标内存节点对应的统计单元列表,扫描方向由冷到热;
步骤S4.3:对收集表进行扫描,直到冷页指针指向的访问频率高于热页指针指向的访问频率;
步骤S4.4:记录冷热指针扫过的页面数量,以及结束时冷热指针指向的访问频率的平均值;
所述步骤S4.2包括:
热页指针指向访问频率最大值对应的统计单元,冷页指针指向访问频率的最小值对应的统计单元;
如果热页指针指向的统计单元的剩余页面数量大于冷页指针对应的剩余页面数量,则冷页指针移动,热页指针对应的剩余页面数量减去冷页指针对应的剩余页面数量,更新扫描过的页面数量;
如果热页指针指向的统计单元的剩余页面数量小于冷页指针对应的剩余页面数量,则热页指针移动,冷页指针对应的剩余页面数量减去热页指针对应的剩余页面数量,更新扫描过的页面数量;
过程结束时,根据冷热指针指向的统计单元的剩余页面数量比例、访问频率的平均值和方差计算出具体的访问频率。
7.根据权利要求1所述的内存热页识别与迁移的方法,其特征在于,所述步骤S5包括:
步骤S5.1:根据步骤S4得出的结果,结合采样率计算热度阈值和迁移速率;
步骤S5.2:将计算出的结果更新到各个内存节点的收集表当中;
步骤S5.3:收集表按照各个进程更新的时间顺序,按LRU策略淘汰过时的统计结果;
步骤S5.4:对收集表中的统计结果按页面数量加权平均,更新该内存节点的热度阈值和迁移速率这两个***参数。
8.根据权利要求5所述的内存热页识别与迁移的方法,其特征在于,所述步骤S6基于步骤S5产生的热度阈值和迁移速率筛选内存热页,包括:
步骤S6.1:比较近期页面访问频率与热度阈值的大小,如果频率低于热度阈值,则判定为冷页;如果频率不低于热度阈值,则判定为热页;
步骤S6.2:如果页面被判定为热页,若统计周期内页面迁移的数量未达到迁移速率所规定的最大数量,则判定为可迁移页;否则根据策略判定是否为可迁移页;
如果选择保守策略,则页面被判定为不可迁移页;如果选择激进策略,则将热度阈值提高,若页面热度高于提升后的阈值,则判定为可迁移页,否则判定为不可迁移页;
步骤S6.3:对可迁移页的内存数据进行迁移,更新与虚拟页面的位置映射关系,完成页面迁移过程。
9.一种内存热页识别与迁移的***,其特征在于,包括:
热度计算模块:使用页表扫描和页面访问的时间计算访问频率,从而估算内存页面近期的访问热度;
热度筛选***:用于判断本次访问的内存页面是否应该迁移;
热度统计模块:用于统计各内存节点的内存页面热度分布情况;
热度分析模块:对内存节点热度统计结果进行整理和分析;
汇总模块:汇总各个进程对内存节点的热度分析结果,计算出热度筛选***参数的参考值;
迁移模块:通过调用其他***接口将筛选出的内存页面迁移到目标内存节点。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述内存热页识别与迁移的方法中的步骤。
CN202310348807.3A 2023-03-31 2023-03-31 内存热页识别与迁移的方法、***及介质 Pending CN116578409A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310348807.3A CN116578409A (zh) 2023-03-31 2023-03-31 内存热页识别与迁移的方法、***及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310348807.3A CN116578409A (zh) 2023-03-31 2023-03-31 内存热页识别与迁移的方法、***及介质

Publications (1)

Publication Number Publication Date
CN116578409A true CN116578409A (zh) 2023-08-11

Family

ID=87544335

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310348807.3A Pending CN116578409A (zh) 2023-03-31 2023-03-31 内存热页识别与迁移的方法、***及介质

Country Status (1)

Country Link
CN (1) CN116578409A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117234432A (zh) * 2023-11-14 2023-12-15 苏州元脑智能科技有限公司 一种混合内存***的管理方法、管理装置、设备及介质
CN117992857A (zh) * 2024-04-03 2024-05-07 浪潮电子信息产业股份有限公司 一种热页和冷页的识别方法、装置、设备及存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117234432A (zh) * 2023-11-14 2023-12-15 苏州元脑智能科技有限公司 一种混合内存***的管理方法、管理装置、设备及介质
CN117234432B (zh) * 2023-11-14 2024-02-23 苏州元脑智能科技有限公司 一种混合内存***的管理方法、管理装置、设备及介质
CN117992857A (zh) * 2024-04-03 2024-05-07 浪潮电子信息产业股份有限公司 一种热页和冷页的识别方法、装置、设备及存储介质
CN117992857B (zh) * 2024-04-03 2024-07-16 浪潮电子信息产业股份有限公司 一种热页和冷页的识别方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN116578409A (zh) 内存热页识别与迁移的方法、***及介质
CN100476742C (zh) 基于对象存储设备的负载平衡方法
US6941432B2 (en) Caching of objects in disk-based databases
CN107943718B (zh) 一种清理缓存文件的方法和装置
CN107329910A (zh) 一种基于localStorage的Web前端数据本地存储和访问方法
CN110795363A (zh) 一种存储介质的热页预测方法和页面调度方法
CN108647266A (zh) 一种异构数据快速分布存储、交互方法
CN107562806B (zh) 混合内存文件***的自适应感知加速方法及***
CN112100185A (zh) 区块链数据平衡负载的索引***及方法
CN115168244A (zh) 一种数据更新方法、装置、设备及可读存储介质
CN108319634A (zh) 分布式文件***的目录访问方法和装置
CN103020077A (zh) 一种电力***实时数据库内存管理方法
CN108173974B (zh) 一种基于分布式缓存Memcached的HCModel内部缓存数据淘汰方法
CN113821477A (zh) 一种元数据缓存方法、***、设备以及介质
CN112799590B (zh) 一种针对在线主存储重删的差异化缓存方法
CN109582233A (zh) 一种数据的缓存方法和装置
CN115934794B (zh) 一种海量多源异构遥感空间数据查询的弹性管理方法
CN116594562A (zh) 一种数据处理方法及装置、设备、存储介质
CN107967306B (zh) 一种存储***中关联块的快速挖掘方法
US20220365876A1 (en) Method of cache management based on file attributes, and cache management device operating based on file attributes
CN117631955A (zh) 数据缩减方法、装置及***
JP3020512B2 (ja) フアイルデータ管理方法
CN113360455B (zh) 一种超融合***的数据处理方法、装置、设备及介质
CN115827508B (zh) 一种数据处理方法、***、设备以及存储介质
CN109388613B (zh) 一种文件管理方法和电子设备

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