The embodiment of this application discloses a memory allocation method and a server for reducing the performance loss caused by NC latency and improving the performance of the server when allocating memory. The method of embodiment of this application includes: the server identifies the node topology table, which not only has the connection relationship between NUMA nodes, but also between NUMA nodes and NC, and between NC and NC. According to the node topology table, the server generates the memory access jump tables of each NUMA node, which not only connects to the shortest path of other NUMA nodes. QPI hops and NC hops. The server calculates the memory access priority of each NUMA node according to the memory access jump table of each NUMA node. NC hops are regarded as an important parameter to calculate the memory access priority. The fewer NC hops, the higher the memory access priority. When NUMA nodes apply for memory, the higher the priority, the higher the priority will be given to memory allocation according to the memory access priority table. Memory is allocated in NUMA nodes corresponding to the level.
【技术实现步骤摘要】
一种内存分配方法和服务器
本申请涉及通讯领域,尤其涉及一种内存分配方法和服务器。
技术介绍
受到硬件芯片技术的限制,单个处理器(CentralProcessingUnit,CPU)的计算能力趋于饱和。因此,为了获取更高的计算性能,服务器趋向于通过增加处理器数量的方式增加服务器的计算性能。对于高性能服务器而言,一般采用非一致性内存架构(Non-UniformMemoryArchitecture,NUMA),即多个节点通过高速互联网络连接而成,每个节点由一组CPU和本地内存组成。节点访问本地内存时,访存延迟较小,性能较高;但是,如果访问远端内存,则访存延迟相对较高,会造成性能下降。为此,为了提升系统性能,当前的内存分配器在进行内存分配的时候,需要优先分配本地内存,其次再考虑远端内存。为了减少访存时带宽的限制,英特尔Intel利用快速互联通道(QuickPassInterconnect,QPI)代替了传统的前端总线(FrontSideBus,FSB),其中,QPI是一种基于包传输的串行式高速点对点连接协议。但是,由于每个节点只提供三个QPI接口,因此导致一个服务器中的能够互联的节点数量受限。为了解决上述问题,引入了节点控制器(NodeController,NC)。NC提供了更多的节点接口(NodeInterface,NI),因此可以通过NC扩大服务器内互联节点的数量,从而减少跨节点访存延迟。当前内核中提供的针对传统NUMA内存分配的方法为:1、在系统初始化过程中生成NUMA距离,其中:如果是本地节点,则NUMA距离为0;如果节点A和节点B互联,即A和B相邻,则N ...
【技术保护点】
1.一种内存分配方法,其特征在于,包括:服务器识别节点拓扑表,所述节点拓扑表中包括所述服务器中各非一致性内存架构NUMA节点之间、NUMA节点与节点控制器NC之间以及NC与NC之间的连接关系;所述服务器根据所述节点拓扑表,生成各NUMA节点的访存跳转表,第一NUMA节点的访存跳转表中包括所述第一NUMA节点连接至其他各NUMA节点的最短路径中的NC跳数和快速互联通道QPI跳数,所述NC跳数为最短路径经过的NC的数量,所述QPI跳数为最短路径经过的NUMA节点的数量,所述第一NUMA节点为所述各NUMA节点中的一个节点;所述服务器根据所述各NUMA节点的访存跳转表,计算所述各NUMA节点的访存优先级表,所述第一NUMA节点的第一访存优先级表中包括所述第一NUMA节点访问其他各NUMA节点的优先级,若NC跳数越少,则访问所述NUMA节点的优先级越高,若NC跳数相同,则QPI跳数越少,访问所述NUMA节点的优先级越高;当所述第一NUMA节点申请内存时,所述服务器根据所述第一访存优先级表进行内存分配,优先级越高,越优先从所述优先级对应的NUMA节点中分配内存。
【技术特征摘要】
1.一种内存分配方法,其特征在于,包括:服务器识别节点拓扑表,所述节点拓扑表中包括所述服务器中各非一致性内存架构NUMA节点之间、NUMA节点与节点控制器NC之间以及NC与NC之间的连接关系;所述服务器根据所述节点拓扑表,生成各NUMA节点的访存跳转表,第一NUMA节点的访存跳转表中包括所述第一NUMA节点连接至其他各NUMA节点的最短路径中的NC跳数和快速互联通道QPI跳数,所述NC跳数为最短路径经过的NC的数量,所述QPI跳数为最短路径经过的NUMA节点的数量,所述第一NUMA节点为所述各NUMA节点中的一个节点;所述服务器根据所述各NUMA节点的访存跳转表,计算所述各NUMA节点的访存优先级表,所述第一NUMA节点的第一访存优先级表中包括所述第一NUMA节点访问其他各NUMA节点的优先级,若NC跳数越少,则访问所述NUMA节点的优先级越高,若NC跳数相同,则QPI跳数越少,访问所述NUMA节点的优先级越高;当所述第一NUMA节点申请内存时,所述服务器根据所述第一访存优先级表进行内存分配,优先级越高,越优先从所述优先级对应的NUMA节点中分配内存。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:若所述第一访存优先级表中存在多个优先级相同的NUMA节点,则所述服务器按照交织策略的方式从所述多个优先级相同的NUMA节点中分配内存。3.根据权利要求1或2所述的方法,其特征在于,所述服务器根据所述节点拓扑表,生成各NUMA节点的访存跳转表,包括:所述服务器读取存储的所述节点拓扑表;所述服务器根据所述节点拓扑表,计算每个NUMA节点到其他各NUMA节点的最短路径,所述最短路径为预选最短路径中NC跳数最少的路径,所述预选最短路径为由一个NUMA节点到另一个NUMA节点的路径中QPI跳数最少的路径;所述服务器根据所述每个NUMA节点到其他各NUMA节点的最短路径,计算各最短路径上的NC跳数和QPI跳数;所述服务器将所述各NUMA节点到其他各NUMA节点的最短路径上的NC跳数和QPI跳数组成所述各NUMA节点的访存跳转表。4.根据权利要求3所述的方法,其特征在于,所述服务器根据所述各NUMA节点的访存跳转表,计算各NUMA节点的访存优先级表,包括:所述服务器按照所述各NUMA节点的访存跳转表中NC跳数由小到大的顺序,对所述访存跳转表中的NUMA节点排序,得到第一NUMA节点序列;对于所述第一NUMA节点序列中NC跳数相同的NUMA节点,所述服务器按照所述访存跳转表中QPI跳数由小到大的顺序进行排序,得到第二NUMA节点序列;所述服务器按照优先级由高到低的顺序依次对所述第二NUMA节点序列中的NUMA节点赋予优先级,NC跳数和QPI跳数均相同的NUMA节点的优先级相同。5.根据权利要求2所述的方法,其特征在于,所述服务器根据所述第一访存优先级表进行内存分配,包括:若当前待分配内存大小为第一容量,当前查询优先级为第一优先级,所述第一优先级为所述第一访存优先级表中的一个优先级,所述服务器根据第一访存优先级表中优先级从高到低的顺序,按照如下流程进行内存分配:所述服务器查询当前查询优先级的NUMA节点中是否有空闲内存;若所述当前查询优先级的NUMA节点中没有空闲内存,则所述服务器更新所述第一优先级为所述当前查询优先级的下一优先级,触发所述按照如下流程进行内存分配的步骤;若所述当前查询优先级的NUMA节点中仅存在一个第二NUMA节点有大小为第二容量的空闲内存,则所述服务器判断所述第二容量是否不小于所述当前待分配内存大小;若所述第二容量不小于所述当前待分配内存大小,则所述服务器从所述第二NUMA节点为所述第一NUMA节点分配大小为当前待分配内存大小的内存,并结束内存分配流程;若所述第二容量小于所述当前待分配内存大小,则所述服务器从所述第二NUMA节点为所述第一NUMA节点分配大小为第二容量的内存,更新所述第一容量为所述当前待分配内存大小减去所述第二容量,更新所述第一优先级为所述当前查询优先级的下一优先级,触发所述按照如下流程进行内存分配的步骤。6.根据权利要求5所述的方法,其特征在于,所述服务器查询当前查询优先级的NUMA节点中是否有空闲内存的步骤之后,所述方法还包括:若当前查询优先级的NUMA节点中存在多于一个的第三NUMA节点中有空闲内存,则所述服务器通过交织策略的方式从各第三NUMA节点上分配内存,分配的内存大小为第三容量;若所述第三容量等于所述当前待分配内存大小,则结束内存分配流程;若所述第三容量小于所述当前待分配内存大小,则所述服务器更新所述第一容量为所述当前待分配内存大小减去所述第三容量,更新所述第一优先级为所述当前查询优先级的下一优先级,触发所述按照如下流程进行内存分配的步骤。7.根据权利要求5所述的方法,其特征在于,所述服务器查询当前查询优先级的NUMA节点中是否有空闲内存的步骤之后,所述方法还包括:若查询完所有的NUMA节点均没有空闲内存,则所述服务器判断是否进行了内存释放操作,所述内存释放操作表示将暂时不用的内存交换到硬盘缓冲区中;若没有进行所述内存释放操作,则执行内存释放操作,初始化当前待分配内存大小和当前查询优先级,并触发所述服务器根据第一访存优先级表中优先级从高到低的顺序,按照如下流程进行内存分配的步骤。8.根据权利要求6所述的方法,其特征在于,所述服务器通过交织策略的方式从各第三NUMA节点上分配内存的步骤之前,所述方法还包括:所述服务器判断所述当前待分配内存大小是否大于一个内存页面;若所述当前待分配内存大小大于一个内存页面,则触发所述服务器通过交织策略的方式从各第三NUMA节点上分配内存的步骤;若所述当前待分配大小不大于一个内存页面,则所述服务器从所述各第三NUMA节点中随机选择一个第三NUMA节点进行内存分配,并结束内存分配流程。9.根据权利要求1或2所述的方法,其特征在于,所述节点拓扑表为(N+M)*(N+M)阶的矩阵S,其中N为服务器中NUMA节点的数目,M为服务器中NC的数目,矩阵S的前N列和N行表示NUMA节点,矩阵S的后M列和M行表示NC,矩阵S中第p行第q列的值表示节点p...
【专利技术属性】
技术研发人员:孙贝磊,沈胜宇,徐建荣,
申请(专利权)人:杭州华为数字技术有限公司,
类型:发明
国别省市:浙江,33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。