内存热页识别与迁移的方法、系统及介质技术方案

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

【技术实现步骤摘要】
内存热页识别与迁移的方法、系统及介质


[0001]本专利技术涉及计算机系统结构
,具体地,涉及一种内存热页识别与迁移的方法、系统及介质。

技术介绍

[0002]非一致性内存访问(Non Uniform Memory Access,NUMA)是一种多进程环境下将计算机内存划分为若干内存节点的设计,其中内存节点的访问时间取决于该节点与处理器之间的相对位置,处理器访问本地内存节点的速度要快于访问远程内存节点的速度。
[0003]目前的主流操作系统都对NUMA架构有不同程度的支持。近年来,新兴内存设备不断出现,如傲腾持久内存等设备,这些物理内存设备的单位密度较传统的DRAM内存更高,相同造价下的内存容量也更大,但访问速度较传统的DRAM更慢。
[0004]目前的技术实现中,往往在NUMA框架下,将DRAM内存设备设置为本地内存节点,将大容量的慢速内存设备通过热插拔的方式加入系统内存,设置为NUMA架构下的一个远端内存节点。操作系统的现有机制可以识别远端内存节点访问,将位于远端内存节点的内存页面迁移到本地节点,使得内存访问尽可能在本地节点进行,加速内存访问。
[0005]为了提高内存整体访问性能,需要对内存页面按访问热度进行分层放置。操作系统对NUMA的现有机制不能对内存分布进行很好的平衡优化,需要一种新的机制能很好地将慢速内存节点中访问热度较高的页筛选出来,将热页迁移到快速节点,将冷页保留在慢速节点。与此同时,还需要一种机制能控制页面迁移速率,为页面迁移和新内存页面的申请留出空间,减少内存颠簸。现有的其他方案均无法很好地满足这些要求。
[0006]NUMA:Non Uniform Memory Access,非一致性内存访问,是一种多进程环境下将计算机内存划分为若干内存节点的设计,其中内存节点的访问时间取决于该节点与处理器之间的相对位置。
[0007]DAX:Direct Access,直接访问机制,允许用户绕过系统缓存直接访问块设备和NVDIMM设备。
[0008]HOTPLUG:热插拔,一种操作系统功能,可以将新加入的设备接入到系统总线当中,在系统驱动的支持下可以将支持内存访问的设备以新内存节点的形式加入到系统内存中。
[0009]NVDIMM:Non Volatile Dual In

line Memory Module,非易失性双列直插式内存模块,具有物理持久性的存储设备,可以用作具有成本效益的内存设备替代品。

技术实现思路

[0010]针对现有技术中的缺陷,本专利技术提供一种内存热页识别与迁移的方法、系统及介质。
[0011]根据本专利技术提供的一种内存热页识别与迁移的方法、系统及介质,所述方案如下:
[0012]第一方面,提供了一种内存热页识别与迁移的方法,所述方法包括:
[0013]步骤S1:初始化内存节点;
[0014]步骤S2:记录内存页面的访问频率;
[0015]步骤S3:对各所述内存页面的热度分布进行统计,得到统计结果;
[0016]步骤S4:对所述统计结果进行分析;
[0017]步骤S5:根据分析,对系统参数进行动态调整;
[0018]步骤S6:筛选内存热页,将内存热页迁移到内存节点。
[0019]优选地,所述步骤S1包括:
[0020]步骤S1.1:从内存设备中划分内存区域;
[0021]步骤S1.2:对所述内存区域使用DAX文件系统格式化;
[0022]步骤S1.3:对格式化后的内存区域使用热插拔技术创建对应的内存节点;
[0023]步骤S1.4:将新创建的内存节点加入内存节点列表,并将新创建的内存节点与热页迁移的目标节点建立映射关系,再初始化新创建的内存节点的热度统计模块以及页表扫描任务。
[0024]优选地,所述步骤S2包括:
[0025]步骤S2.1:初始化内存节点信息后,对各内存节点的页表进行扫描,将扫描到的虚拟页面设置保护标记,在映射到的内存页的描述结构中记录扫描时刻;
[0026]步骤S2.2:用户进程对已设置保护标记的虚拟页面进行访问时,触发页面保护机制,系统陷入内核态中;
[0027]步骤S2.3:根据当前时刻与步骤S2.1记录的扫描时刻的时间差值,估算出该虚拟页面对应的内存页在最近一段时间的访问频率,并消除保护标记。
[0028]优选地,所述步骤S3包括:通过步骤S2记录的页面访问频率信息,对各个进程每隔一个统计周期对所使用的内存页面的热度进行抽样分析,包括:
[0029]步骤S3.1:对进程的虚拟地址空间进行均匀采样,并记录本次采样周期的开始时刻;
[0030]步骤S3.2:对采样出的内存页设置采样标记和保护标记,并按虚拟地址顺序建立周期记录表;
[0031]步骤S3.3:对一个统计周期前采样的内存页重新设置采样标记和保护标记;
[0032]步骤S3.4:对两个统计周期前采样的页面,将周期记录表中的数据归纳到收集表;
[0033]步骤S3.5:删除归纳完毕的周期记录表,释放周期记录表所占用的空间。
[0034]优选地,所述步骤S3.1包括:
[0035]获取系统时间,记录本次扫描周期的开始时刻;
[0036]根据抽样比例确定随机范围S={0,1,2,

,y

1},使用随机函数在S中抽取一个随机整数x;如果该次抽取的随机整数x与上次获得的随机整数x

相同,则在范围内重新抽取一个不同的整数;
[0037]扫描进程的内存区域VMA链表,对于一个内存区域,将该内存区域所包含的内存页面按一定大小划分为若干连续的页面组;
[0038]对于每个页面组,将页面组起始内存地址随机映射到S中,获得映射值y;
[0039]如果映射值y与随机整数x相同,则将该内存组中的页面加入到本次抽样的内存页面集合中;
[0040]如果映射值y与随机整数x不相同,则跳过;
[0041]所述步骤S3.2包括:
[0042]创建并初始化一个新的红黑树作为周期记录表,其中键Key存储内存页面的虚拟地址,值Value存储虚拟页面对应的内存页面的访问间隔,并包含内存页面所属内存节点编号的额外信息;
[0043]对本次抽取到的虚拟页面按内存区域批量设置采样标记和保护标记;
[0044]对本次抽取到的虚拟页面对应的内存页面,建立对应的记录项,访问间隔的默认值设置为最大统计周期间隔;
[0045]将新建立的记录项插入到记录表当中;
[0046]进行步骤S2.3时,查询对应进程的周期记录表,如果发现本次访问的内存页在当期统计周期的记录表中有对应条目,则将条目的值设为步骤S2.3测定的访问频率,并消除统计标记;
[0047]所述步骤S3.3包括:
[0048]取出上个统计周期的记录表,对每个表项按照键中存储的虚拟地址查找对应本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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包括:取出上个统计周期的记录表,对每个表项按照键中存储的虚拟地址查找对应的虚拟页面和内存区域;将查找到的虚拟页面重新设置访问标记和...

【专利技术属性】
技术研发人员:郑圣安惠一锋黄林鹏戚振林张婉茹聂良旭
申请(专利权)人:上海交通大学
类型:发明
国别省市:

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

1