首页> 中国专利> NUMA系统和系统中的页面迁移方法

NUMA系统和系统中的页面迁移方法

摘要

通过监视哪些NUMA节点正在访问哪些本地存储器,并当热NUMA节点频繁访问第一NUMA节点中的本地存储器时,将内存页面从第一NUMA节点中的本地存储器迁移到热NUMA节点中的本地存储器,可以大大减少非统一存储器访问(NUMA)系统中的远程访问延迟。

著录项

  • 公开/公告号CN112947851A

    专利类型发明专利

  • 公开/公告日2021-06-11

    原文格式PDF

  • 申请/专利权人 阿里巴巴集团控股有限公司;

    申请/专利号CN202011301658.8

  • 发明设计人 温莎莎;李鹏程;范小鑫;赵莉;

    申请日2020-11-19

  • 分类号G06F3/06(20060101);

  • 代理机构11644 北京清源汇知识产权代理事务所(特殊普通合伙);

  • 代理人冯德魁;张艳梅

  • 地址 英属开曼群岛大开曼资本大厦一座四层847号邮箱

  • 入库时间 2023-06-19 11:22:42

说明书

相关申请的交叉引用

本申请要求于2019年11月25日提交的美国临时专利申请62/939961以及2020年4月30日提交的美国专利申请16/863954的优先权,该申请的全部内容通过引用合并于此。

技术领域

本发明涉及非统一存储器访问(NUMA)系统,并且更具体地,涉及NUMA系统以及在该系统中迁移页面的方法。

背景技术

非统一存储器访问(NUMA)系统是具有多个NUMA节点的多处理系统,其中每个NUMA节点具有一存储器分区及多个与该存储器分区连接的处理器。此外,多个NUMA节点连接在一起,以便每个NUMA节点中的每个处理器将所有存储器分区一起视为一个大存储器。

顾名思义,NUMA系统的访问时间不统一,其中对一个NUMA节点的存储器分区的本地访问时间比对另一个NUMA节点的存储器分区的远程访问时间短得多。例如,对另一个NUMA节点的存储器分区的远程访问时间可能比对本地存储器分区的访问时间具有30-40%的延迟。

为提高系统性能,需要减少与远程访问时间相关联的延迟时间。迄今为止,现有方法存在局限性。例如,基于分析的优化使用聚合视图,而聚合视图又无法适应不同的访问模式。另外,需要重新编译代码以使用以前的分析信息。

作为另一个例子,现有的动态优化通常在内核中实现,每当需要任何更改时,内核需要高代价的内核补丁。再举一个例子,现存的很少的用户空间工具使用页面级信息来减少远程存储器访问时间,但是对于大型数据对象而言性能较差。因此,需要减少与远程访问时间相关联的延迟时间,以克服这些限制。

发明内容

本发明基于访问量最大的NUMA节点,通过在NUMA节点之间迁移数据来减少与远程访问时间相关的延迟。本发明包括一种操作NUMA系统的方法。该方法包括:基于被采样存储器请求中的被请求存储器地址,确定被请求数据对象,所述被采样存储器请求来自发起请求的NUMA节点,所述被请求数据对象表示一内存地址范围;所述方法还包括确定所述被请求数据对象的大小是页面大小还是小于页面大小,或大于页面大小;和当所述被请求数据对象的大小为页面大小或小于页面大小时,所述方法增加计数值,所述计数值用于计量发起请求的NUMA节点试图访问所述被请求数据对象的次数。所述方法还确定所述计数值是否在预定时间段内超过一阈值,并且当所述计数值超过所述阈值时,将包含所述被请求数据对象的页面迁移到所述发起请求的NUMA节点。

本发明还包括一种NUMA系统,所述NUMA系统还包括被划分为多个本地分区的存储器;连接到所述本地分区的多个NUMA节点,每个NUMA节点具有所述存储器的一个相应本地分区以及连接到所述存储器的多个处理器;所述NUMA系统还包括将所述NUMA节点连接在一起的总线;和与所述总线连接的分析器,该分析器用于:基于被采样存储器请求中的被请求存储器地址,确定被请求数据对象,所述被采样存储器请求来自发起请求的NUMA节点,所述被请求数据对象表示一内存地址范围;所述分析器还确定所述被请求数据对象的大小是页面大小还是小于页面大小,或大于页面大小;和当所述被请求数据对象的大小为页面大小或小于页面大小时,所述分析器增加计数值,所述计数值用于计量发起请求的NUMA节点试图访问所述被请求数据对象的次数。所述分析器还确定所述计数值是否在预定时间段内超过一阈值,并且当所述计数值超过所述阈值时,将包含所述被请求数据对象的页面迁移到所述发起请求的NUMA节点。

本发明进一步包括一种非暂时性计算机可读存储介质,其中嵌入了程序指令,所述程序指令在由设备的一个或多个处理器执行时,使所述设备执行操作NUMA系统的过程,该过程包括:由采样的存储器请求中的请求的存储器地址确定请求的数据对象,所述采样的存储器请求来自请求的NUMA节点,所述请求的数据对象表示一内存地址范围;基于被采样存储器请求中的被请求存储器地址,确定被请求数据对象,所述被采样存储器请求来自发起请求的NUMA节点,所述被请求数据对象表示一内存地址范围;确定所述被请求数据对象的大小是页面大小还是小于页面大小,或大于页面大小;和,当所述被请求数据对象的大小为页面大小或小于页面大小时,计数值增加,所述计数值用于计量发起请求的NUMA节点试图访问所述被请求数据对象的次数,确定所述计数值是否在预定时间段内超过一阈值,并且当所述计数值超过所述阈值时,将包含所述被请求数据对象的页面迁移到所述发起请求的NUMA节点。

通过参考以下详细描述和附图,可以更好地理解本发明的特征和优点,所述附图和附图阐述了利用本发明原理的示例性实施方式。

附图说明

本文描述的附图用于提供对本申请的进一步理解,并且构成本申请的一部分。本申请的示例性实施方式及其描述用于解释本申请,并不构成对本申请的限制。

图1是示出根据本发明的非统一存储器访问(NUMA)系统100的示例的框图。

图2是示出根据本发明的在NUMA系统中迁移页面的方法200的示例的流程图。

图3是示出根据本发明的对程序进行分析的方法300的示例的流程图。

具体实施方式

图1示出根据本发明的非统一存储器访问(NUMA)系统100的示例的框图。如图1所示。如图1所示,NUMA系统100包括已被划分为多个本地分区LP1-LPm的存储器110,连接至所述本地分区LP1-LPm的多个NUMA节点NN1-NNm,以及将NUMA节点NN1-NNm连接在一起的总线112。每个NUMA节点NN具有存储器110的一相应本地分区LP,多个处理器114,每个处理器具有连接到存储器110的自己的本地缓存116,和连接到处理器114的输入/输出电路118。

如图1进一步所示,NUMA系统100包括连接到总线112的分析器120。在操作中,分析器120可以用CPU来实现,分析器120对总线112上的NUMA节点流量进行采样,记录所采样的总线流量,并当被采样总线流量超过阈值量时,将存储在第一本地分区的页面或多个数据对象迁移到所述第二本地分区所述被采样总线流量指示第二本地分区正在访问数据对象的次数。

图2示出了根据本发明的在非统一存储器访问(NUMA)系统中迁移页面的方法200的示例。在本发明的一个实施例中,方法200可以用NUMA系统100来实现。方法200记录关于CPU的拓扑的静态映射以及系统的NUMA领域知识。

如图2所示,方法200开始于210,通过从要在NUMA系统上执行的程序的代码确定多个数据对象。每个数据对象表示一相关的存储器地址范围。例如,所述范围可以与存储在存储器地址范围内的数据相关。堆数据:过载内存分配和空闲函数可用于标识数据对象,以及静态数据:跟踪每个模块的加载和卸载,并读取其符号表。数据对象可以是较小的(具有占用一页或更少的页面的地址范围),也可以是较大的(具有大于一页的地址范围)。

方法200接下来移至212,以将数据对象存储在存储器的本地分区中,所述本地分区与NUMA系统的NUMA节点相关联。例如,通过检查要在NUMA系统100上执行的程序的代码,可以将数据对象存储在NUMA节点的本地分区中,该本地分区具有第一个访问该数据对象的处理器。例如,参考图1,如果NUMA节点NN1中的处理器114是第一个访问数据对象(通过被请求存储器地址)的处理器,则方法200将数据对象存储在NUMA节点NN1的本地分区LP1中。

接着,在诸如NUMA系统100的NUMA系统上执行程序期间,方法200移至214,以使用性能监测对来自NUMA系统的NUMA节点中的处理器的存储器访问请求进行采样,以生成被采样存储器请求。被采样存储器请求包括被请求存储器地址,所述被请求存储器地址可以由块号、该块中的页号和该页中的行号来标识。所述被采样存储器请求还包括,例如,发起请求的NUMA节点(输出被采样的存储器访问请求的NUMA节点的标识)和存储NUMA节点(存储被请求存储器地址的本地分区的标识)。在一个实施例中,可以生成由每个NUMA节点中的每个处理器发出的每个存储器访问请求的记录。然后,可以对这些记录进行采样,以获取被采样存储器请求,作为正在创建的记录。

此后,方法200移至216,基于被采样存储器请求中的请求存储器地址,确定被请求数据对象(相关存储器地址的范围)。换句话说,方法200确定与存储器访问请求中的存储器地址相关联的被请求数据对象。

例如,如果被采样存储器请求中的被请求存储器地址落在与数据对象相关联的存储器地址的范围内,则该数据对象被确定为被请求数据对象。在一个实施例中,所述被请求存储器地址的页号可以用于识别所述被请求数据对象。

方法200接下来移至220,以记录来自被采样存储器请求的存储器访问信息,例如发起请求的NUMA节点的标识、所述被请求数据对象、页号以及存储NUMA节点的标识。存储器访问信息还包括定时和拥塞数据。也可以记录其他相关信息。

此后,方法200移至222,以确定所述被请求数据对象的大小是页面大小还是小于页面大小,或大于页面大小。当所述被请求数据对象的大小为页面大小或小于页面大小时,方法200移至224,增加计数值,该计数值用于计量发起请求的NUMA节点试图访问所述被请求数据对象的次数,即已生成用于在被请求数据对象范围内的存储器地址的存储器访问请求。

接下来,方法200移至226,以确定所述计数值是否在预定时间段内超过一阈值。当所述计数值低于所述阈值时,方法200返回到214以获得另一采样。当所述计数值超过所述阈值时,方法200移至230,以将包含被请求数据对象的页面迁移到发起请求的NUMA节点。或者,可以同时迁移包含被请求数据对象的页面之前和之后的多个页面(可调参数)。

例如,如果存储在第三NUMA节点NN3的本地分区LP3中的数据对象的阈值为1,000,第一NUMA节点NN1中的处理器已访问该本地分区LP3中的数据对象999次,并且如果第二个NUMA节点NN2中的处理器已经访问了本地分区LP3中的数据对象312次,则方法200将在以下情况下将包含数据对象的页面(包括之前和之后的页面)从本地分区LP3迁移到本地分区LP1:所述第一NUMA节点NN1在预定时间段内第1000次访问本地分区LP3中的数据对象。

因此,本发明的优点之一是,不管小数据对象存储在存储器的本地分区中的何处,本发明都将数据对象连续地迁移到活跃的本地分区,即当前访问数据对象最多的NUMA节点的本地分区。

例如,如果由于NUMA节点NN1中的处理器是第一个访问该数据对象内的存储器地址的处理器,数据对象被存储在本地分区LP1中,但是在程序执行的后续时刻,NUMA节点NN2大量访问数据对象,则本发明将数据对象从本地分区LP1迁移到本地分区LP2,从而显着减少NUMA节点NN2中的处理器访问数据对象所需的时间。

再次参考图2,当在222中所述被请求数据对象的大小大于页面大小时,换句话说,当所述被请求数据对象是多页被请求数据对象时,方法200移至240以确定页面访问的分布方式,以及记录不同NUMA节点如何访问所述多页被请求数据对象。换句话说,方法200确定哪个发起请求的NUMA节点访问了多页被请求数据对象,访问的页面以及发起请求的NUMA节点在预定时间段内尝试访问所述被请求数据对象的次数。可以基于一小部分样本来提取页面访问的分布。

例如,请参照图1,如果多页数据对象存储在NUMA节点NN1的本地分区LP1中,则方法200可以确定,例如,NUMA节点NN2访问了多页数据对象的页面三1千次,而NUMA节点NN3访问多页数据对象的页面四312次。

接下来,方法200接下来移至242,以确定所述多页被请求数据对象是否有问题。有问题的数据对象包括一位置域,多个访问域,并且远程访问会触发拥塞。如果没有问题,则方法200返回到214以获得另一采样。

另一方面,如果确定多页被请求数据对象有问题,例如页数或更多的数据对象已超过再平衡阈值,则方法200移至244,迁移所选的多页被请求数据对象的一个或多个页面,以平衡/重新平衡所述多页被请求数据对象。对于多线程应用程序,每个线程都倾向于操作数据对象整个存储器范围的块。

例如,方法200可以确定NUMA节点NN2对页面三进行1,000次的访问超出了再平衡阈值,并且作为响应,将页面三从NUMA节点NN1的本地分区LP1迁移到NUMA节点NN2的本地分区LP2。另一方面,因为312次的总访问次数小于再平衡阈值,什么也没有迁移到本地分区LP3。因此,如果多页面被请求数据对象的任何页面都超过了再平衡阈值,则方法200移至244,以将页面迁移到具有最高访问速率的发起请求的NUMA节点。

因此,本发明的另一个优点是,当其他NUMA节点大量地访问数据对象时,可以将多页数据对象的选定页面迁移到其他NUMA节点,以平衡/再平衡数据对象,并显著减少其他NUMA节点访问信息所需的时间。

在某些情况下,可以将存储器的一本地分区中的数据页复制或复制到存储器的另一本地分区中。可以通过多种方式检测复制。例如,可以通过以下方式对工具进行反编译:首先通过反编译工具(类似于objdump)从二进制文件中获取汇编代码。接下来,从汇编代码中提取程序的功能。然后,检查分配和空闲函数,以确定它们是否正在公开数据对象。

作为另一个示例,可以通过微基准监控页面迁移活动以检测复制。可以通过工具运行微基准。接下来,监视系统调用以跨数据对象迁移页面。如果不是这样,则迁移会在数据对象内发生,并且可以看作是语义感知的。

图3示出了根据本发明的分析程序的方法300的示例的流程图。如图3所示,执行程序(program.exe)310,并且在CPU或类似功能处理器上运行程序期间执行分析器程序(profiler.so)312,以针对该程序(program.exe)310实施本发明,生成优化的可执行程序(optimized program.exe)314。

因此,本发明监视哪个NUMA节点正在访问存储器的哪个本地分区,并且当热NUMA节点频繁访问远程NUMA节点的本地分区,并平衡/重新平衡内存页时,通过将存储页面从远程NUMA节点的本地分区迁移到热NUMA节点的本地分区,来实质上减少远程访问延迟时间。

本发明的优点之一是它提供了纯用户空间运行时分析,而无需任何人工参与。本发明还很好地处理了大数据和小数据。另外,页面的组迁移减少了迁移成本。

将动态分析与静态分析进行比较,基于静态分析的仿真导致高的运行时间开销。虽然基于静态分析的测量可以以较低的开销提供见解,但仍需要手动进行。基于内核的动态分析需要定制的补丁程序,这对于商业用途而言是昂贵的。另外,现有的用户空间动态分析不能很好地处理大型对象。

在没有语义的情况下将语义与非语义的页面级迁移进行比较会将程序视为黑盒,并且可能发生某些页面来回移动从而产生额外开销的情况。但是,语义感知分析可以用更少的时间迁移页面。语义感知分析将页面与数据对象和计算放在一起。

以上实施例仅用于举例说明,并不用于限制本发明的技术方案。尽管参考前述实施例对本发明进行了详细描述,但是本领域普通技术人员应该理解,上述实施例中记载的技术方案仍然可以进行修改,或者可以对其中部分或全部技术特征进行等效替换。这些修改或替换将不会使相应技术方案的实质脱离本发明实施例中技术方案的范围。

应当理解,以上描述是本发明的示例,并且本文所述的本发明的各种替代方案可以用于实施本发明。因此,意图是所附权利要求限定本发明的范围,并且由此涵盖这些权利要求范围内的结构和方法及其等同物。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号