针对多步长非一致性内存访问numa架构的内存管理方法及装置的制作方法

文档序号:6359064阅读:273来源:国知局
专利名称:针对多步长非一致性内存访问numa架构的内存管理方法及装置的制作方法
技术领域
本发明涉及内存管理技术领域,尤其涉及一种针对多步长非一致性内存访问NUMA 架构的内存管理方法及装置。
背景技术
目前,非一致性内存访问(Non-Uniform Memory Access,NUMA)架构已经成为服务器领域的主流系统架构,为了解决Numa架构下远近端内存访问开销差别大的问题,新型的多步长层次型NUMA架构的应用越来越广泛。现有技术中,内存层级结构在系统初始化时根据基础输入输出系统BIOS中的内存拓扑结构来确定,内存分配前先确定分配原则,即就近原则(效率优先)或均勻分配原则(带宽优先);若采取就近原则,则优先在访问延迟最小的节点上分配内存,若该节点内存已满,先尝试释放内存,若释放后仍达不到要求,再尝试在访问延迟第二小的节点上分配内存,直至成功分配内存;若采取平均分配的原则,则在所有的节点上平均分配内存。在多步长Multi-hop的内存架构下,内存访问延迟是非均勻分布的,假设访问延迟分别为100ns,140ns,500ns,900ns,1040ns。现有技术方案中,若对每一步长均设置一个节点,则单纯的使用就近分配或平均分配原则就无法兼顾效率和带宽的现状,也就是说若效率优先,采用就近分配原则,首先在100ns节点分配内存失败,需先尝试释放内存,再在 140ns延迟节点分配内存,而100ns延迟和140ns延迟的差别对性能影响并不大,这样就使得分配开销大且仅能利用单节点带宽;若带宽优先,采用均勻分配原则,则需要大量的跨节点访问,影响了系统效率。

发明内容
本发明的目的是针对多步长非一致性内存访问NUMA架构的内存管理方法及装置,能够利用多步长非一致性内存访问架构的特点,有效兼顾效率和带宽,提高了系统的内存管理性能。一种针对多步长非一致性内存访问NUMA架构的内存管理方法,所述方法包括在系统初始化时,根据各节点的内存访问延时信息及用户配置信息,确定节点组;获取各个节点组及组内节点的内存使用状况,所述内存使用状况包括内存使用比例和空闲状态指示;当系统发起节点内存分配请求时,根据各个节点组的内存使用状况,选择在内存访问延迟最小的空闲节点组上分配内存;在所选择的节点组内,根据所述节点组内节点的内存使用状况,将内存分配到所述节点组内的节点上。一种针对多步长非一致性内存访问NUMA架构的内存管理装置,所述装置包括
节点组设置模块,用于在系统初始化时,根据各节点的内存访问延时信息及用户配置信息,确定节点组;内存使用监控模块,用于获取各个节点组及组内节点的内存使用状况,所述内存使用状况包括内存使用比例和空闲状态指示;节点组选择模块,用于当系统发起节点内存分配请求时,根据各个节点组的内存使用状况,选择在内存访问延迟最小的空闲节点组上分配内存;内存分配模块,用于在所选择的节点组内,根据所述节点组内节点的内存使用状况,将内存分配到所述节点组内的节点上。由上述所提供的技术方案可以看出,所述方法包括在系统初始化时,根据各节点的内存访问延时信息及用户配置信息,确定节点组;获取各个节点组及组内节点的内存使用状况,所述内存使用状况包括内存使用比例和空闲状态指示;当系统发起节点内存分配请求时,根据各个节点组的内存使用状况,选择在内存访问延迟最小的空闲节点组上分配内存;在所选择的节点组内,根据所述节点组内节点的内存使用状况,将内存分配到所述节点组内的节点上。通过该方法,就能够利用多步长非一致性内存访问架构的特点,有效兼顾效率和带宽,提高了系统的内存管理性能。


图1为本发明实施例所提供的针对多步长非一致性内存访问NUMA架构的内存管理方法的流程示意图;图2为本发明实施例所举出的具体实例中原有内存拓扑结构的示意图;图3为本发明实施例所举出的具体实例中改进的节点组拓扑结构示意图;图4为本发明实施例所举出的具体实例中改进的节点组拓扑另一结构示意图;图5为本发明实施例所提供的内存管理装置的结构示意图。
具体实施例方式本发明实施方式提供了一种针对多步长非一致性内存访问NUMA架构的内存管理方法及装置,通过该方法及装置能够利用多步长非一致性内存访问架构的特点,有效兼顾效率和带宽,提高了系统的内存管理性能。下面结合附图来对本发明的具体实施例进行详细说明,如图1所示为本发明实施例所提供的针对多步长非一致性内存访问NUMA架构的内存管理方法的流程示意图,所述方法包括步骤11 在系统初始化时,根据各节点的内存访问延时信息及用户配置信息,确定节点组。在该步骤中,在操作系统初始化时,根据各节点的内存访问延时信息及用户配置信息设置,确定节点组Node Group结构,具体来说由于内存硬件所处位置的不同,CPU访问不同内存的延迟是不同的,不同的访问延迟就会独立出一个节点。首先获取各节点的内存延迟信息,然后根据用户的配置策略,将延迟差别相近的节点合并为一个节点组,例如可以将延迟差别小于50%的节点合并为一个节
;ο
下面以具体的实例来进行说明,如图2所示为本发明实施例所举出的具体实例中原有内存拓扑结构的示意图若多步长Multi-hop架构下的原内存拓扑如图2所示,若Node A, Node B-Node H 节点内访问延迟为 IOOns ;Node Group AB,Node Group CD,Node Group EF,Node Group GH 内访问延迟为 140ns ;Node Group ABCD,Node Group EFGH 内访问延迟为 900ns ;Node Group AB⑶EFGH内访问延迟为1040ns ;现有技术中,不同的访问延迟就会独立出一个节点,这样就会生成如图2所示的原有内存拓扑结构。这里100ns和140ns,900ns和1040ns的访问延迟差别并不大,原有过于复杂的层级结构影响了分配效率,和管理复杂度。实例1 本发明实施例的方案可通过配置策略(Config用户配置或系统初始化自动配置),生成优化后的Node Group拓扑结构1,图3所示为本发明实施例所举出的具体实例中改进的节点组拓扑结构示意图,假如我们在Config用户配置或系统初始化策略里制定规则将访问延迟差距在50%以内的合并为一个节点组。首先获得内存访问延迟分别为 100ns, 140ns,900ns, 1040ns ;再根据以上的策略规则,将100ns和140ns的节点合并为一个节点,将900ns和1040ns的节点合并为一个节点,从而生成如图3所示的拓扑结构,图3 中=Node Group AB, Node Group CD, Node Group EF, Node Group GH 内延迟为小于 140ns, Node Group ABCDEFGH 内延迟为小于 1040ns。在举一个例子,若Node A,Node B…Node H节点内访问延迟为100ns ;Node Group AB,Node Group CD,Node Group EF,Node Group GH内访问延迟为 140ns ;Node Group ABCD, Node Group EFGH 内访问延迟为 300ns ;Node Group ABCDEFGH 内访问延迟为 1040ns。实例2 :同案例一,本发明实施例可根据配置策略生成优化后的拓扑结构2,如图 4所示为本发明实施例所举出的具体实例中改进的节点组拓扑另一结构示意图,假如制定的配置策略为将延迟差别小于3倍以内的节点合并成一个节点组。系统内存延迟分别为 100ns,140ns,300ns,1040ns。那么根据以上的配置策略,将100ns,140ns,300ns的节点合并成一个节点组,从而生成如图4所示的拓扑结构,图4中Node Group ABCD,Node Group EFGH 内延迟小于 300ns,Node Group ABCDEFGH 内延迟小于 1040ns。步骤12 获取各个节点组及组内节点的内存使用状况。在该步骤中,可以通过在内存管理架构中设置内存使用状况监控模块,通过该内存使用状况监控模块来监控各个节点组Node Group和节点组内各个Node的内存使用情况,所述内存使用状况包括内存使用比例和空闲状态指示,例如如下表1所示的监控状态
Node ABCDNode EFGHNode ABNode CDNode EFNode GHNode GNode H内存使用比例40%60%20%60%80%40%10%25% 表 1
步骤13 当系统发起节点内存分配请求时,根据各个节点组的内存使用状况,选择在内存访问延迟最小的空闲节点组上分配内存。在该步骤中,当系统发起节点内存分配请求,需要将内存分配到系统内节点时,首先根据各个节点组的内存使用状况,先选择相应的节点组,即选择在内存访问延迟最小的空闲节点组上分配内存,然后在所选择的节点组内进行后继的操作。步骤14 在所选择的节点组内,根据所述节点组内节点的内存使用状况,将内存分配到所述节点组内的节点上。在该步骤中,在进行上述步骤13的操作之后,就可以在所选择的节点组内,根据所述节点组内节点的内存使用状况,选择相应的内存分配策略将内存分配到所述节点组内的节点上。具体来说,可以包括以下几种情况若选择的内存分配策略为带宽优先,则根据所选择的节点组内各节点的内存使用状况,将内存平均分配在各个节点上;若选择的内存分配策略为延迟优先,则将内存分配在所选择的节点组内延迟最小的节点上;若选择的内存分配策略为默认Default,则将内存在所选择的节点组内随机分配到节点上。通过上述技术方案的实施,就可以利用多步长非一致性内存访问架构的特点,有效兼顾效率和带宽,提高了系统的内存管理性能。本发明实施方式还提供了一种针对多步长非一致性内存访问NUMA架构的内存管理装置,如图5所示为本发明实施例所提供的内存管理装置的结构示意图,所述装置包括节点组设置模块,用于在系统初始化时,根据各节点的内存访问延时信息及用户配置信息,确定节点组,具体实现方式见以上方法实施例中所述。内存使用监控模块,用于获取各个节点组及组内节点的内存使用状况,所述内存使用状况包括内存使用比例和空闲状态指示,具体实现方式见以上方法实施例中所述。节点组选择模块,用于当系统发起节点内存分配请求时,根据各个节点组的内存使用状况,选择在内存访问延迟最小的空闲节点组上分配内存,具体实现方式见以上方法实施例中所述。内存分配模块,用于在所选择的节点组内,根据所述节点组内节点的内存使用状况,将内存分配到所述节点组内的节点上,具体实现方式见以上方法实施例中所述。另外,在具体实现过程中,所述内存分配模块还可以包括带宽优先分配模块,用于当所选择的内存分配策略为带宽优先时,根据所选择的节点组内各节点的内存使用状况,将内存平均分配在各个节点上。或,延迟优先分配模块,用于当所选择的内存分配策略为延迟优先时,将内存分配在所选择的节点组内延迟最小的节点上。或,默认分配模块,用于当所选择的内存分配策略为默认Default时,将内存在所选择的节点组内随机分配到节点上。值得注意的是,上述装置实施例中,所包括的各个模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。另外,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,相应的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。综上所述,通过该方法及装置就能够利用多步长非一致性内存访问架构的特点, 有效兼顾效率和带宽,提高了系统的内存管理性能。以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明实施例揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种针对多步长非一致性内存访问NUMA架构的内存管理方法,其特征在于,所述方法包括在系统初始化时,根据各节点的内存访问延时信息及用户配置信息,确定节点组; 获取各个节点组及组内节点的内存使用状况,所述内存使用状况包括内存使用比例和空闲状态指示;当系统发起节点内存分配请求时,根据各个节点组的内存使用状况,选择在内存访问延迟最小的空闲节点组上分配内存;在所选择的节点组内,根据所述节点组内节点的内存使用状况,将内存分配到所述节点组内的节点上。
2.根据权利要求1所述的方法,其特征在于,所述在所选择的节点组内,根据所述节点组内节点的内存使用状况,将内存分配到所述节点组内的节点上,具体包括若选择的内存分配策略为带宽优先,则根据所选择的节点组内各节点的内存使用状况,将内存平均分配在各个节点上;若选择的内存分配策略为延迟优先,则将内存分配在所选择的节点组内延迟最小的节占上-若选择的内存分配策略为默认Default,则将内存在所选择的节点组内随机分配到节
3.根据权利要求1所述的方法,其特征在于,所述空闲节点组为内存分配为空的节点组。
4.根据权利要求1所述的方法,其特征在于,所述根据各节点的内存访问延时信息及用户配置信息,确定节点组,具体包括获取各节点的内存访问延迟信息,将内存访问延迟差别相近的节点合并为一个节点组。
5.根据权利要求1所述的方法,其特征在于,所述获取各个节点组及组内节点的内存使用状况,具体包括通过在系统中所设置的内存使用监控模块来获取各个节点组及组内节点的内存使用状况。
6.根据权利要求1所述的方法,其特征在于,所述节点内存分配请求具体为 将内存分配到系统内节点的请求。
7.一种针对多步长非一致性内存访问NUMA架构的内存管理装置,其特征在于,所述装置包括节点组设置模块,用于在系统初始化时,根据各节点的内存访问延时信息及用户配置信息,确定节点组;内存使用监控模块,用于获取各个节点组及组内节点的内存使用状况,所述内存使用状况包括内存使用比例和空闲状态指示;节点组选择模块,用于当系统发起节点内存分配请求时,根据各个节点组的内存使用状况,选择在内存访问延迟最小的空闲节点组上分配内存;内存分配模块,用于在所选择的节点组内,根据所述节点组内节点的内存使用状况,将内存分配到所述节点组内的节点上。
8.如权利要求7所述的内存管理装置,其特征在于,所述内存分配模块包括带宽优先分配模块,用于当所选择的内存分配策略为带宽优先时,根据所选择的节点组内各节点的内存使用状况,将内存平均分配在各个节点上。
9.如权利要求7所述的内存管理装置,其特征在于,所述内存分配模块包括延迟优先分配模块,用于当所选择的内存分配策略为延迟优先时,将内存分配在所选择的节点组内延迟最小的节点上。
10.如权利要求7所述的内存管理装置,其特征在于,所述内存分配模块包括默认分配模块,用于当所选择的内存分配策略为默认Default时,将内存在所选择的节点组内随机分配到节点上。
全文摘要
一种针对多步长非一致性内存访问NUMA架构的内存管理方法及装置,所述方法包括在系统初始化时,根据各节点的内存访问延时信息及用户配置信息,确定节点组;获取各个节点组及组内节点的内存使用状况,所述内存使用状况包括内存使用比例和空闲状态指示;当系统发起节点内存分配请求时,根据各个节点组的内存使用状况,选择在内存访问延迟最小的空闲节点组上分配内存;在所选择的节点组内,根据所述节点组内节点的内存使用状况,将内存分配到所述节点组内的节点上。通过该方法,就能够利用多步长非一致性内存访问架构的特点,有效兼顾效率和带宽,提高了系统的内存管理性能。
文档编号G06F12/02GK102439570SQ201180002196
公开日2012年5月2日 申请日期2011年10月27日 优先权日2011年10月27日
发明者王伟, 章晓峰 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1