基于HMAT的内存回收方法技术

技术编号:38481451 阅读:12 留言:0更新日期:2023-08-15 16:59
本发明专利技术设计基于HMAT的内存回收方法,包括如下步骤:判断系统是否至少有2个node节点,固件是否有提供HMAT信息;从HMAT中解析出任意处理器访问任意内存的带宽和延迟;计算出各node节点访问各远程内存的远程内存性能损耗;在node节点本地内存耗尽预期需要分配远程内存时,根据node节点的远程内存性能损耗来决定是直接从远程内存分配还是先对本地内存进行回收,以及本地内存的回收力度。本发明专利技术针对当前国产NUMA架构服务器多node节点的特性,提出当node节点本地内存耗尽预期需要从远程节点分配内存时,先根据从HMAT中计算出的远程内存性能损耗来确定是直接从远程内存分配还是先对本地内存进行回收,尽可能提高了本地内存命中率,又尽可能高效利用了远程内存,从而达到了提升整个系统综合性能的目的。提升整个系统综合性能的目的。提升整个系统综合性能的目的。

【技术实现步骤摘要】
基于HMAT的内存回收方法


[0001]本专利技术涉及内存回收
,具体涉及基于HMAT的内存回收方法。

技术介绍

[0002]近些年来,伴随着国产服务器CPU技术的快速发展,飞腾、华为、海光等国产厂商先后发布了多款以NUMA架构为主的服务器CPU,并且发布的NUMA架构CPU呈多node节点设计特点,如飞腾腾云S2500单CPU就多达8个node节点,并在多CPU互联时能达到64个node节点,这种硬件设计无疑对软件设计提出了更高的要求,即要高效利用NUMA架构下各node节点的内存,又要尽可能降低NUMA架构下各node节点间的数据交互。
[0003]Linux内核目前针对NUMA架构主要实现有如下两种内存回收方法:一种是尽量占用内存回收方法,当node节点本地内存消耗完后,内核不会回收本地节点的内存,而是直接去远程节点上分配内存,内核会尽可能地去消耗内存,直到整个系统内存不足时才会触发内存回收,这种内存回收方法可以尽可能地将内存作为缓存使用,减少磁盘IO次数来提高IO效率,但是同时该方法也会降低本地内存命中率低,提升各node节点间的通信压力。另一种是节点隔离内存回收方法,当node节点本地内存消耗完后,内核会先直接回收本地内存,待回收完成后再尝试从本地内存分配,这种回收方法提高了本地内存命中率,但是该方法没有考虑到不同node节点间内存访问带宽与延迟存在的差异,而只是简单对本地内存与远程内存进行区别对待,无法做到有效控制本地内存的回收力度,高效利用系统各node节点下的内存。
[0004]如果node节点的本地内存耗尽预期需要分配远程内存时,能够根据访问的各个远程内存带宽与延迟的差异,采取不同的本地内存回收力度(远程内存性能损耗越大,本地内存回收力度越大),则即能尽可能提高本地内存命中率,又能做到尽可能高效利用各node节点下的远程内存,从而提升整个系统的综合性能。

技术实现思路

[0005]为解决已有技术存在的不足,本专利技术提供了一种基于HMAT的内存回收方法,包括如下步骤:步骤S1:判断系统是否至少有2个node节点,固件是否有提供HMAT信息,两者成立则进入步骤S2,否则运行结束;步骤S2:从HMAT中解析出任意处理器访问任意内存的带宽和延迟;步骤S3:根据所解析出的带宽和延迟数据,计算出各node节点访问各远程内存的远程内存性能损耗;步骤S4:在node节点本地内存耗尽预期需要分配远程内存时,根据node节点的远程内存性能损耗来决定是直接从远程内存分配还是先对本地内存进行回收,以及本地内存的回收力度。
[0006]其中,所述步骤S3中,通过如下公式计算出各node节点访问各远程内存的远程内
存性能损耗:;其中,remote_mem_loss[n][m]表示针对编号为n的node节点,其当前的处理器节点访问编号为m的内存节点的远程内存性能损耗,A与B分别为带宽与延迟的加权系数,Local_bandwidth与Local_latency分别表示编号为n的node节点的本地内存的带宽与延迟,Romote_bandwidth与Remote_latency分别表示编号为n的node节点的访问远程内存的带宽与延迟。
[0007]其中,以n和m分别表示处理器节点和内存节点的编号,编号为n的node节点包括编号为n的处理器节点和编号为n的内存节点;针对编号为n的node节点,其本地内存的带宽与延迟,以及访问远程内存的带宽与延迟的确定方法如下:local_bandwidth= hmat_bandwidth[n][n];local_latency= hmat_latency[n][n];remote_bandwidth= hmat_bandwidth[n][m](其中,m和n不等);remote_latency= hmat_latency[n][m](其中,m和n不等);其中,hmat_bandwitdh[n][m]里记录的是处理器节点n到内存节点m的带宽数据;hmat_latency[n][m]里记录的是处理器节点n到内存节点m的延迟数据;hmat_bandwidth[n][n] 里记录的是处理器节点n访问相同编号的内存节点n的带宽数据;hmat_latency[n][n] 里记录的是处理器节点n访问相同编号的内存节点n的延迟数据。
[0008]其中,所述步骤S4中,在node节点本地内存耗尽预期需要分配远程内存时,内核首先选择一个远程内存来分配内存,此时,通过设计三个内存回收阈值loss_min、loss_low及loss_high,并通过比对remote_mem_loss[n][m]与内存回收阈值之间的大小,决定是直接从内核选择的远程内存分配还是先对本地内存进行回收,以及本地内存的回收力度;其中,loss_min<loss_low<loss_high。
[0009]其中,若remote_mem_loss[n][m]小于或等于loss_min,则直接从内核选择的远程内存节点中分配内存;若remote_mem_loss[n][m]大于loss_min且小于或等于loss_low,则先启动本地内存回收,并只针对本地内存LRU中的LRU_INACTIVE_FILE进行回收;若remote_mem_loss[n][m]大于loss_low且小于或等于loss_high,则先启动本地内存回收,且针对本地内存LRU中的LRU_INACTIVE_FILE及LRU_INACTIVE_ANON均进行回收;若remote_mem_loss[n][m]大于loss_high,则先启动本地内存回收,且针对本地内存LRU中的LRU_INACTIVE_FILE与LRU_INACTIVE_ANON采用最大的收割力度,并针对本地内存LRU中的LRU_ACTIVE_FILE与LRU_ACTIVE_ANON也进行适当回收,且对本地内存进行内存规整等操作。
[0010]本专利技术针对当前国产NUMA架构服务器多node节点的特性,提出当node节点本地内
存耗尽预期需要从远程节点分配内存时,先根据从HMAT中计算出的远程内存性能损耗来确定是直接从远程内存分配还是先对本地内存进行回收,以及本地内存的回收力度。此方法即尽可能提高了本地内存命中率,又尽可能高效利用了远程内存,从而达到了提升整个系统综合性能的目的。
附图说明
[0011]图1:本专利技术的基于HAMT的内存回收方法的实现流程图。
[0012]图2:本专利技术的基于HAMT的内存回收方法的各node节点的远程内存性能损耗的计算流程图。
具体实施方式
[0013]为了对本专利技术的技术方案及有益效果有更进一步的了解,下面结合附图详细说明本专利技术的技术方案及其产生的有益效果。
[0014]本专利技术涉及到的术语解释及约定如下:HMAT:HMAT是Heterogeneous Memory Attributtes Table的缩写,即异构内存属性表。在异构内存属性表中,提供了任意处理器访问任意内存(本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于HMAT的内存回收方法,其特征在于,包括如下步骤:步骤S1:判断系统是否至少有2个node节点,固件是否有提供HMAT信息,两者成立则进入步骤S2,否则运行结束;步骤S2:从HMAT中解析出任意处理器访问任意内存的带宽和延迟;步骤S3:根据所解析出的带宽和延迟数据,计算出各node节点访问各远程内存的远程内存性能损耗;步骤S4:在node节点本地内存耗尽预期需要分配远程内存时,根据node节点的远程内存性能损耗来决定是直接从远程内存分配还是先对本地内存进行回收,以及本地内存的回收力度。2.如权利要求1所述的基于HMAT的内存回收方法,其特征在于,所述步骤S3中,通过如下公式计算出各node节点访问各远程内存的远程内存性能损耗:;其中,remote_mem_loss[n][m]表示针对编号为n的node节点,其当前的处理器节点访问编号为m的内存节点的远程内存性能损耗,A与B分别为带宽与延迟的加权系数,Local_bandwidth与Local_latency分别表示编号为n的node节点的本地内存的带宽与延迟,Romote_bandwidth与Remote_latency分别表示编号为n的node节点的访问远程内存的带宽与延迟。3.如权利要求2所述的基于HMAT的内存回收方法,其特征在于,以n和m分别表示处理器节点和内存节点的编号,编号为n的node节点包括编号为n的处理器节点和编号为n的内存节点;针对编号为n的node节点,其本地内存的带宽与延迟,以及访问远程内存的带宽与延迟的确定方法如下:local_bandwidth= hmat_bandwidth[n][n];local_latency= hmat_latency[n][n];remote_bandwidth= hmat_bandwidth[n][m],其中,m和n不等;remote_latency= hmat_latency[n][m],其中,m和n不等;其中,hmat_bandwitdh[n][m]里记录的是处理器节点n到内存节点m的带宽数...

【专利技术属性】
技术研发人员:胡海刘云刘正元肖林逵张铎
申请(专利权)人:麒麟软件有限公司
类型:发明
国别省市:

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

1