CN103136110A - 内存管理方法、内存管理装置及numa系统 - Google Patents
内存管理方法、内存管理装置及numa系统 Download PDFInfo
- Publication number
- CN103136110A CN103136110A CN2013100522914A CN201310052291A CN103136110A CN 103136110 A CN103136110 A CN 103136110A CN 2013100522914 A CN2013100522914 A CN 2013100522914A CN 201310052291 A CN201310052291 A CN 201310052291A CN 103136110 A CN103136110 A CN 103136110A
- Authority
- CN
- China
- Prior art keywords
- memory
- controller hub
- memory controller
- information
- management
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种内存管理方法、内存管理装置及NUMA系统,内存管理方法包括:接收处理器发送的内存分配请求消息,内存分配请求消息中包含内存需求信息;根据内存需求信息确定处理器的本地处理节点中是否存在满足内存需求信息的内存控制器;若存在,则在满足内存需求信息的内存控制器中确定满足内存需求信息的内存管理区,将满足内存需求信息的内存管理区对应的内存分配给处理器。通过在满足要求的内存控制器中确定满足要求的内存管理区分配给需求的处理器,不需要在不满足要求的处理节点中确定内存控制器及内存管理区,能够快速找到满足要求的存储区域,提高了内存分配效率。
Description
技术领域
本发明实施例涉及计算机技术,尤其涉及一种内存管理方法、内存管理装置及NUMA系统。
背景技术
随着计算机技术的迅速发展,人们对计算机数据处理能力的要求日益提高,迫切需要将多个处理器组成一个分布式系统,非一致访问分布共享存储(Non Uniform Memory Access Architecture,简称NUMA)技术就是一种分布式系统。
NUMA系统将若干个处理节点通过高速专用网络连接起来构成多处理器服务器系统,每个处理节点由若干个CPU或是对称多处理系统(Symmetrical Multi-Processing,简称SMP)构成,以提高数据处理能力。为了便于管理NUMA系统的内存,现有内存管理技术将NUMA内存系统简单划分为节点和管理区两层,节点控制管理一组访问延迟的内存区域,管理区属于节点内的一部分。系统中所有的管理区被组成一个链表,当某个管理区内存不足时,内存管理系统会依次在链表中查找,直到找到满足要求的节点和管理区。但是,NUMA系统逐渐大型化,其处理节点的数量和内存大小也随之增大,所需维护的管理区链表将会很庞大,而查找满足需求的管理区的过程可能会遍历管理区链表,从而导致内存分配以及管理的效率较低。
发明内容
本发明实施例提供的内存管理方法、内存管理装置及NUMA系统,用以提升内存管理的效率。
第一方面,本发明实施例提供一种内存管理方法,包括:接收处理器发送的内存分配请求消息,所述内存分配请求消息中包含内存需求信息;根据所述内存需求信息和所述处理器的本地节点的内存属性信息判断所述本地节点对应的内存单元是否满足所述内存需求信息;若所述处理器的本地节点对应的内存单元满足所述内存需求信息,则根据所述内存需求信息以及所述本地节点对应的第一管理信息确定本地节点中满足所述内存需求信息的内存控制器,所述第一管理信息包括本地节点中的内存控制器的标识及内存控制器的内存属性信息;根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的至少一个第二管理信息,根据所述内存需求信息与所述至少一个第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区,所述第二管理信息包括所述内存控制器对应的内存单元的标识以及内存单元的属性信息;根据满足所述内存需求信息的内存管理区的标识将所述内存管理区对应的内存空间分配给所述处理器。
结合第一方面,在第一种可能的实现方式中,根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的第一第二管理信息,根据所述内存需求信息与所述第一第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区,所述第一第二管理信息包括所述内存控制器对应的内存管理区的标识及内存管理区的内存属性信息。
结合第一方面,在第二种可能的实现方式中,根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的第一第二管理信息,根据所述内存需求信息与所述第一第二管理信息确定所述内存控制器中满足所述内存需求信息的内存条,所述第一第二管理信息包括所述内存控制器对应的内存条的标识及内存条的内存属性信息;根据满足所述内存需求信息的内存条的标识确定与所述内存条对应的第二第二管理信息,根据所述内存需求信息与所述第二第二管理信息确定所述内存条中满足所述内存需求信息的内存管理区,所述第二第二管理信息包括所述内存条对应的内存管理区的标识及内存管理区的内存属性信息。
结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述方法还包括:若所述处理器的本地节点对应的内存单元不满足所述内存需求信息,则根据所述内存需求信息与第三管理信息确定满足所述内存需求信息的节点组,所述第三管理信息包括节点组的标识及节点组的内存属性信息;根据满足所述内存需求信息的节点组的标识确定与其对应的第四管理信息,根据所述内存需求信息与所述第四管理信息确定所述节点组中满足所述内存需求信息的节点,所述第四管理信息包括所述节点组中的节点的标识以及节点的内存属性信息。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述方法还包括:接收处理器发送的内存控制器下线消息,所述内存控制器下线消息中包括待下线的内存控制器的标识;根据所述待下线的内存控制器的标识获取所述待下线的内存控制器对应的内存区域的类型;若所述内存区域的类型为非浮动区域,则将所述待下线的内存控制器对应的内存区域中的数据信息迁移到空闲内存区域中,并记录所述待下线的内存控制器的标识及其对应的内存迁移信息;对所述待下线的内存控制器进行下线处理。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式或第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述方法还包括:接收处理器发送的内存控制器上线消息,所述内存控制器上线消息中包括待上线的内存控制器的标识;根据所述待上线的内存控制器的标识获取所待上线的内存控制器的内存迁移信息;根据所述待上线的内存控制器的内存迁移信息将所述待上线的内存控制器对应的内存区域的数据信息回迁到所述待上线的内存控制器对应的内存区域中;对所述待上线的内存控制器进行上线处理。
第二方面,本发明实施例提供一种内存管理装置,该装置包括第一接收模块,用于接收处理器发送的内存分配请求消息,所述内存分配请求消息中包含内存需求信息,并将所述内存分配请求消息发送给节点管理模块;节点管理模块,用于接收所述第一接收模块发送的所述内存分配请求消息,根据所述内存分配请求消息中的内存需求信息和所述处理器的本地节点的内存属性信息判断所述本地节点对应的内存单元是否满足所述内存需求信息;内存控制器管理模块,用于若所述处理器的本地节点对应的内存单元满足所述内存需求信息,则根据所述内存需求信息以及所述本地节点对应的第一管理信息确定本地节点中满足所述内存需求信息的内存控制器,所述第一管理信息包括本地节点中的内存控制器的标识及内存控制器的内存属性信息,将所述满足所述内存需求信息的内存控制器的标识发送给内存管理区管理模块;内存管理区管理模块,用于接收所述内存控制器管理模块发送的所述满足所述内存需求信息的内存控制器的标识,根据所述内存控制器的标识确定与所述内存控制器对应的至少一个第二管理信息,根据所述内存需求信息与所述至少一个第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区,所述第二管理信息包括所述内存控制器对应的内存单元的标识以及内存单元的属性信息,将所述满足所述内存需求信息的内存管理区的标识发送给内存分配模块;内存分配模块,用于接收所述内存管理区管理模块发送的所述满足所述内存需求信息的内存管理区的标识,根据所述内存管理区的标识将所述内存管理区对应的内存空间分配给所述处理器。
结合第二方面,在第一种可能的实现方式中,所述内存管理区管理模块具体用于:根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的第一第二管理信息,根据所述内存需求信息与所述第一第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区,所述第一第二管理信息包括所述内存控制器对应的内存管理区的标识及内存管理区的内存属性信息。
结合第二方面,在第二种可能的实现方式中,所述内存管理区管理模块具体包括:内存条管理单元,用于根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的第一第二管理信息,根据所述内存需求信息与所述第一第二管理信息确定所述内存控制器中满足所述内存需求信息的内存条,所述第一第二管理信息包括所述内存控制器对应的内存条的标识及内存条的内存属性信息;内存管理区管理单元,用于根据满足所述内存需求信息的内存条的标识确定与所述内存条对应的第二第二管理信息,根据所述内存需求信息与所述第二第二管理信息确定所述内存条中满足所述内存需求信息的内存管理区,所述第二第二管理信息包括所述内存条对应的内存管理区的标识及内存管理区的内存属性信息。
结合第二方面、第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述装置还包括:节点组管理模块,用于若所述处理器的本地节点对应的内存单元不满足所述内存需求信息,则根据所述内存需求信息与第五管理信息确定满足所述内存需求信息的节点组,所述第五管理信息包括节点组的标识及节点组的内存属性信息;所述节点管理模块,还用于根据满足所述内存需求信息的节点组的标识确定与其对应的第六管理信息,根据所述内存需求信息与所述第六管理信息确定所述节点组中满足所述内存需求信息的节点,所述第六管理信息包括所述节点组中的节点的标识以及节点的内存属性信息。
结合第二方面、第二方面的第一种可能的实现方、第二方面的第二种可能的实现方式或第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述装置还包括:第二接收模块,用于接收处理器发送的内存控制器下线消息,所述内存控制器下线消息中包括待下线的内存控制器的标识,将所述内存控制器下线消息发送给内存控制器管理模块;所述内存控制器管理模块还用于,接收所述第二接收模块发送的所述内存控制器下线消息,根据所述待下线的内存控制器的标识获取所述待下线的内存控制器对应的内存区域的类型;若所述内存区域的类型为非浮动区域,则将所述待下线的内存控制器对应的内存区域中的数据信息迁移到空闲内存区域中,并记录所述待下线的内存控制器的标识及其对应的内存迁移信息;对所述待下线的内存控制器进行下线处理。
结合第二方面、第二方面的第一种可能的实现方、第二方面的第二种可能的实现方式、第二方面的第三种可能的实现方式或第二方面的第四种可能的实现方式,在第五种可能的实现方式中,所述装置还包括:第三接收模块,用于接收处理器发送的内存控制器上线消息,所述内存控制器上线消息中包括待上线的内存控制器的标识,将所述内存控制器下线消息发送给内存控制器管理模块;所述内存控制器管理模块还用于,接收所述第三接收模块发送的所述内存控制器下线消息,根据所述待上线的内存控制器的标识获取所待上线的内存控制器的内存迁移信息;根据所述待上线的内存控制器的内存迁移信息将所述待上线的内存控制器对应的内存区域的数据信息回迁到所述待上线的内存控制器对应的内存区域中;对所述待上线的内存控制器进行上线处理。
第三方面,本发明实施例还提供一种NUMA系统,该系统包括内存管理装置和至少一个节点,所述节点包括至少一个内存控制器和至少一个处理器,所述内存控制器与所述处理器具有通信连接;所述内存管理装置为本发明前述任一实施例提供的内存管理装置,用于接收所述处理器发送的内存分配请求消息,所述内存分配请求消息中包含内存需求信息;根据所述内存需求信息和所述处理器的本地节点的内存属性信息判断所述本地节点对应的内存单元是否满足所述内存需求信息;若所述处理器的本地节点对应的内存单元满足所述内存需求信息,则根据所述内存需求信息以及所述本地节点对应的第一管理信息确定本地节点中满足所述内存需求信息的内存控制器,所述第一管理信息包括本地节点中的内存控制器的标识及内存控制器的内存属性信息;根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的至少一个第二管理信息,根据所述内存需求信息与所述至少一个第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区,所述第二管理信息包括所述内存控制器对应的内存单元的标识以及内存单元的属性信息;根据满足所述内存需求信息的内存管理区的标识将所述内存管理区对应的内存空间分配给所述处理器。
可见,本发明实施例提供的内存管理方法、内存管理装置及NUMA系统,通过接收处理器发送的内存分配请求消息,根据内存分配请求消息中的内存需求信息确定本地节点中是否存在满足请求消息的内存控制器,在满足内存需求信息的本地节点中确定满足内存需求信息的内存控制器,在满足内存需求信息的内存控制器中确定满足内存需求信息的内存管理区,将满足内存需求信息的内存管理区分配给发送所述内存分配请求消息的处理器,不需要在不满足要求的节点中确定内存控制器及内存管理区,能够快速找到满足要求的存储区域,提高了内存管理效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的内存分配方法的方法流程示意图;
图2a为本发明实施例提供的另一内存分配方法的方法流程示意图;
图2b为本发明实施例提供的另一内存分配方法的方法流程示意图;
图3为本发明实施例提供的另一内存分配方法的方法流程示意图;
图4a为本发明实施例提供的内存下线方法的方法流程示意图;
图4b为本发明实施例提供的另一内存下线方法的方法流程示意图;
图5a为本发明实施例提供的内存上线方法的方法流程示意图;
图5b为本发明实施例提供的另一内存上线方法的方法流程示意图;
图6为本发明实施例提供的内存管理装置实施例的内存分配方法的方法流程示意图;
图7为本发明实施例提供的节点下线方法的方法流程示意图;
图8为本发明实施例提供的节点上线方法的方法流程示意图;
图9a-图9d为本发明实施例提供的内存管理装置的逻辑结构示意图;
图10为本发明实施例提供的另一内存管理装置的逻辑结构示意图;
图11为本发明实施例提供的NUMA系统的逻辑结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的内存分配方法的方法流程示意图,该方法可以应用于一内存管理装置中,该内存管理装置可以位于NUMA系统的其中一个节点上,可以作为操作系统的一部分;也可以单独作为一个独立的物理装置。如图1所示,该方法包括:
S101、接收处理器发送的内存分配请求消息,所述内存分配请求消息中包含内存需求信息。
S102、根据所述内存需求信息和所述处理器的本地节点的内存属性信息判断所述本地节点对应的内存单元是否满足所述内存需求信息。
这里的内存单元可以是本地节点内的任意内存存储单元,例如内存管理区、内存条、内存控制器对应的内存单元等。
S103、若所述处理器的本地节点对应的内存单元满足所述内存需求信息,则根据所述内存需求信息以及所述本地节点对应的第一管理信息确定本地节点中满足所述内存需求信息的内存控制器,所述第一管理信息包括本地节点中的内存控制器的标识及内存控制器的内存属性信息。
S104、根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的至少一个第二管理信息,根据所述内存需求信息与所述至少一个第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区,所述第二管理信息包括所述内存控制器对应的内存单元的标识以及内存单元的属性信息。
这里的内存单元可以为内存条或内存管理区。
S105、根据满足所述内存需求信息的内存管理区的标识将所述内存管理区对应的内存空间分配给所述处理器。
图2a为本发明实施例提供的另一内存分配方法的方法流程示意图,该方法可以应用于一内存管理装置中,该内存管理装置可以位于NUMA系统的其中一个节点上,可以作为操作系统的一部分;也可以单独作为一个独立的物理装置。如图2a所示,本发明实施例提供的内存分配方法包括:
S201、接收处理器发送的内存分配请求消息,所述内存分配请求消息中包含内存需求信息。
具体地,例如在NUMA系统中,节点的处理器执行程序时需要申请内存区域以缓存程序代码,处理器根据自身需求向系统的内存管理装置发送内存分配请求消息,该请求消息中包含该处理器申请的内存区域的内存需求信息,该内存需求信息中可以包括:内存区域大小,另外还可以包括内存区域类型。内存区域类型可以分为浮动区域(也叫做可迁移内存)和非浮动区域(也叫做不可迁移内存),浮动区域中所存储的数据通常为临时数据,非浮动区域中所存储的数据通常为长期保存的数据。例如:某节点的处理器发送的内存分配请求消息中包括的需求信息为:200KB和不可迁移内存,则表示该处理器请求分配一块大小为200KB、内存区域类型为非浮动区域的内存区域。
S202、根据所述内存需求信息和所述处理器的本地节点的内存属性信息判断所述本地节点对应的内存单元是否满足所述内存需求信息;
所述本地节点为所述处理器所属的节点。
在一种实现方式下,若内存需求信息包括需求的内存区域大小,则所述内存属性信息可以包括剩余的内存区域大小。本地节点的内存属性信息中包括本地节点剩余的内存区域大小,若这个剩余内存区域大小满足内存需求信息中需求的内存区域大小,那么则确定该本地节点对应的内存单元满足所述内存需求信息。
在另一种实现方式下,若内存需求信息包括需求的内存区域大小和需求的内存区域类型,则所述内存属性信息可以包括剩余的内存区域大小和剩余的内存区域类型。
需说明的是,本发明实施例中节点可以为一个物理的计算节点,也可以为逻辑上的多个物理计算节点。本发明实施例中的“内存单元”包括一个节一个或多个节点上的剩余内存空间、一个内存控制器管理下的剩余内存空间、一个内存条对应的剩余内存空间,或一个内存管理区对应的剩余内存空间。
S203、若所述处理器的本地节点对应的内存单元满足所述内存需求信息,则根据所述内存需求信息以及所述本地节点对应的第一管理信息确定本地节点中满足所述内存需求信息的内存控制器。
所述第一管理信息包括本地节点中的内存控制器的标识及内存控制器的内存属性信息。这里内存需求信息与内存属性信息可以参考步骤102。
具体的,通过查询第一管理信息,若内存需求信息与本地节点中的某一个内存控制器的内存属性信息匹配,具体可以为该内存控制器的剩余内存区域大小大于或等于需求的内存区域大小,且剩余内存区域类型也满足需求的内存区域类型,则确定该内存控制器为满足所述内存需求信息的内存控制器。
S204a、根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的第一第二管理信息,根据所述内存需求信息与所述第一第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区,所述第一第二管理信息包括所述内存控制器对应的内存管理区的标识及内存管理区的内存属性信息。
每个内存控制器对应各自的第一第二管理信息,所述第一第二管理信息包括该内存控制器对应的内存管理区的标识及该内存管理区的内存属性信息。每个内存控制器都对应各自的一个或多个内存管理区,内存管理区为内存单元的最小单位。
S205、根据满足所述内存需求信息的内存管理区的标识将所述内存管理区对应的内存空间分配给所述处理器。
以内存需求信息中需求内存为200K为例,首先判断本地节点中的剩余内存区域是否大于或等于200K,若大于或等于,则再从本地节点的内存控制器中找到对应的剩余内存空间大于或等于200K的内存控制器,然后在从该内存控制器对应的内存管理区中找到大于或等于200K的内存管理区,最后将所述内存管理区对应的内存空间分配给所述处理器。
可见,在本实施例中,通过接收处理器发送的内存分配请求消息,根据内存需求信息确定本地处理节点中是否存在满足请求消息的内存控制器,在满足请求消息的本地处理节点中确定满足请求的内存控制器,在满足请求消息的内存控制器中确定满足请求消息的内存管理区,将满足请求消息的内存管理区分配给发送请求消息的处理器,不需要在其它处理节点的内存控制器链表及管理区链表中查找,缩小了查找范围,减少了查找时间,提高了内存分配效率。
图2b为本发明实施例提供的另一内存分配方法的方法流程示意图。如图2b所示,该方法包括:其中步骤S201-S203以及S205与图2a所示实施例类似,在此不再赘述。
该方法还包括:
S204b、根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的第一第二管理信息,根据所述内存需求信息与所述第一第二管理信息确定所述内存控制器中满足所述内存需求信息的内存条,所述第一第二管理信息包括所述内存控制器对应的内存条的标识及内存条的内存属性信息;
S204c、根据满足所述内存需求信息的内存条的标识确定与所述内存条对应的第二第二管理信息,根据所述内存需求信息与所述第二第二管理信息确定所述内存条中满足所述内存需求信息的内存管理区,所述第二第二管理信息包括所述内存条对应的内存管理区的标识及内存管理区的内存属性信息。
与图2a所示实施例不同,图2b中内存控制器直接对应的是内存条,不同的内存条又对应不同的内存管理区,因而进一步细化了内存查找的范围,减少了查找时间,提高了内存分配效率。
在上述实施例的基础上,进一步地,如图3所示,本发明实施例提供的内存分配方法还包括:
S301、若所述处理器的本地节点对应的内存单元不满足所述内存需求信息,则根据所述内存需求信息与第三管理信息确定满足所述内存需求信息的节点组,所述第三管理信息包括节点组的标识及节点组的内存属性信息;
S302、根据满足所述内存需求信息的节点组的标识确定与其对应的第四管理信息,根据所述内存需求信息与所述第四管理信息确定所述节点组中满足所述内存需求信息的节点,所述第四管理信息包括所述节点组中的节点的标识以及节点的内存属性信息。
具体地,内存管理装置接收处理器的内存分配请求消息以后,若根据本地节点的内存属性信息确定本地节点的剩余内存无法满足需求的内存,那么根据第三管理信息确定满足所述内存需求信息的节点组,第三管理信息中包括多个节点组的标识,以及每个节点组对应的内存属性信息;通过第三管理信息确定出满足内存需求的节点组,再根据该满足内存需求的节点组对应的第四管理信息中确定该节点组中哪一个节点满足所述内存需求。
本发明实施例中的“第一”和“第二”等仅作区分,未经特别说明,不存在前后顺序限定的意思。本发明实施例中所述的管理信息既可以实现为链表,也可以实现为数组,或其它类型的数据结构,本发明实施例对此不作限定。
具体地,内存管理装置查找满足内存需求的节点组的节点链表(对应第四管理信息),节点链表为由属于节点组的节点的标识以及内存属性信息构成的节点链表,根据节点链表中的节点的内存属性信息确定该节点组中哪一个节点满足内存需求,返回该节点对应的节点标识。
查找到满足内存需求的节点之后,可以参考前述实施例(图2a或图2b)的方法从该满足内存需求的节点中进行内存管理区的查找。
可见,本发明实施例通过增加层次的内存管理方式,使得在海量节点和海量内存系统的内存分配发生不足时,能够很快寻找到适合要求的内存管理区而无需遍历整个管理区链表,提升了内存分配效率。
本发明实施例提供的内存管理方法可以包括但不限于内存分配方法、内存上线方法和内存下线方法。
图4a为本发明实施例提供的内存下线方法的方法流程示意图,该方法可以应用于一内存管理装置中,并与前述实施例提供的内存分配方法无先后顺序限制,内存分配和内存上下线都是内存管理的一种。如图4a所示,本实施例的内存下线方法包括:
步骤401、接收处理器发送的内存控制器下线消息,所述内存控制器下线消息中包括待下线的内存控制器的标识。
具体地,当NUMA系统的某一内存控制器发生错误或系统管理员希望某一内存控制器下线时,处理器向内存管理装置发送该内存控制器下线消息,该下线消息中包括该待下线内存控制器的标识。
步骤402、根据所述待下线的内存控制器的标识获取所述待下线的内存控制器对应的内存区域的类型;
步骤403、若所述内存区域的类型为非浮动区域,则将所述待下线的内存控制器对应的内存区域中的数据信息迁移到空闲内存区域中,并记录所述待下线的内存控制器的标识及其对应的内存迁移信息;
所述空闲内存区域的大小大于或等于所述待下线的内存控制器对应的内存区域的大小,且所述空闲内存区域对应的内存控制器不是所述待下线的内存控制器。
具体地,将待下线内存控制器中的数据信息复制到空闲内存区域中;或者,将数据信息从原有的内存区域移动到空闲内存区域中。并将待下线内存控制器中的数据信息被迁移后的具体位置进行记录以便该待下线内存控制器再次上线时依据该迁移信息记录将数据迁回。
内存控制器对应各自的内存属性信息,该内存属性信息包括内存控制器对应的内存区域大小以及内存区域类型,因此内存管理装置可以通过该内存控制器对应的内存属性信息来获取该内存控制器对应的内存区域的类型。
具体的,查找内存控制器对应的内存属性信息确定与所述待下线的内存控制器对应的内存区域大小相匹配的空闲内存区域,并通知BIOS(Basic InputOutput System,基本输入输出系统)将数据信息迁移到该空闲内存区域中。更具体的,内存管理装置根据待下线内存控制器的内存属性信息为该待下线的内存控制器分配与其相匹配的空闲内存区域,内存管理装置可以遵照上述内存分配方法实施例提供的任一内存分配方法分配一内存区域大于等于待下线内存控制器内存区域的空闲的内存区域,内存管理装置还可以上线一内存控制器,该上线的内存控制器的内存空间大于或等于该待下线内存控制器内存区域的内存空间,内存区域类型与该待下线内存控制器相同;确定空闲内存区域之后,可以通知BIOS将待下线内存控制器的数据信息迁移到空闲内存区域中。
步骤404、对所述待下线的内存控制器进行下线处理。
另一方面,若所述内存区域的类型不是非浮动区域,则直接对所述待下线的内存控制器进行下线处理。
具体地,若待下线内存控制器的内存区域是浮动区域,则可以不用将该待下线内存控制器的内存区域中的数据进行迁移,而可以将该待下线内存控制器直接断电。
进一步的,图4b为本发明实施例提供的另一内存下线方法的方法流程示意图。如图4b所示,该方法还包括:
步骤403-1、对所述待下线的内存控制器对应的内存区域进行隔离处理;
具体地,将待下线的内存控制器中的数据信息迁移到空闲内存区域中之前,禁止对待下线内存控制器的内存区域进行分配或访问处理。
步骤404-1、对所述待下线的内存控制器对应的内存区域进行解除隔离处理。
具体地,当完成对待下线内存控制器的数据进行迁移并记录之后,可以,解除对待下线内存控制器的隔离。
可见,本实施例的内存下线方法,通过记录待下线内存控制器的的数据信息迁移信息,实现了数据记录,能够在内存控制器再次上线时依据该迁移信息记录将数据迁回,提高系统对该内存控制器上线后的查找效率,从而提高系统将该内存控制器的内存区域进行分配的效率。
图5a为本发明实施例提供的内存上线方法的方法流程示意图。该方法可以应用于某一被下线的内存控制器。如图5a所示,该方法包括:
步骤501、接收处理器发送的内存控制器上线消息,所述内存控制器上线消息中包括待上线的内存控制器的标识;
步骤502、根据所述待上线的内存控制器的标识获取所待上线的内存控制器的内存迁移信息;
步骤503、根据所述待上线的内存控制器的内存迁移信息将所述待上线的内存控制器对应的内存区域的数据信息回迁到所述待上线的内存控制器对应的内存区域中;
步骤504、对所述待上线的内存控制器进行上线处理。
进一步的,如图5b所示,该方法还包括:
步骤503-1、对所述待上线的内存控制器对应的内存区域进行隔离处理;
步骤504-1、对所述待上线的内存控制器对应的内存区域进行解除隔离处理。
具体实现方法为前述下线方法的相反操作,本领域技术人员容易根据前述下线方法获得,在此不再赘述。
RAS(Reliability Availability and Serviceability,可靠性、可用性和可服务性)特性是中高端服务器的一个重要特性,内存RAS特性是其中的关键特性之一。内存镜像保护重要内存不被破坏,内存迁移实现内存热插拔,非易失性内存实现内存数据的永久保存。操作系统内存管理不仅需要高效管理内存使用,还需要有效的配合新技术实现内存的RAS特性。本发明实施例通过增加内存管理层次,结合内存迁移技术,解决了任意内存热插拔的技术问题,同时对系统性能影响很小。在内存热插后,也能自动识别内存迁移记录,选择将热拔时迁移的内存回迁到本地,减少远端访问延迟。
图6为本发明实施例提供的内存管理装置实施例的内存分配方法的方法流程示意图,包括:
在本实施例中,内存分配方法由内存管理装置的5个管理模块来执行,该五个管理模块负责对内存管理装置的内存区域进行内存分配等管理,该5个管理模块依次为:节点组管理模块、节点管理模块、控制器管理模块、内存条管理模块和管理区管理模块。其中,
节点组管理模块通过对应的节点链表管理内存区域;
节点管理模块通过对应的控制器链表管理节点的内存区域;
控制器管理模块通过对应的内存条链表管理控制器的内存区域;
内存条管理模块通过对应的管理区链表管理内存条的内存区域;
管理区管理模块管理管理区的内存区域。
系统运行时,某一节点的CPU需要200KB的内存区域存放相应的指令,该CPU向内存管理装置的节点组管理模块请求分配200KB的内存区域,节点组管理模块为该CPU分配内存区域的方法包括:
S601、接收处理器的内存分配请求消息,该请求消息中包括请求分配的内存区域大小。
具体地,节点组管理模块接收处理器发送内存分配请求消息,该请求消息中包括请求的内存区域大小,例如为200KB。
进一步地,该请求消息中还可以包括请求分配的内存区域的属性,该属性例如可以为是否为浮动区域,例如请求节点组管理模块分配一大小为200KB的浮动内存区域。
S602、确定满足请求的内存区域大小的节点组。
具体地,节点组管理模块根据所述请求消息查找各节点组的当前空闲内存区域,例如可以查找节点组的内存属性信息,找到当前空闲的内存区域大于等于200KB的节点组,该当前空闲的内存区域大于等于200KB的节点组可以为距离本地节点路径最近的节点组,也可以为预先设定的节点组,还可以为优选的节点组,此处不作限定。
S603、在满足要求的节点组中确定满足请求的内存区域大小的节点。
具体地,节点管理模块在满足要求的上述节点组中查找节点链表,根据节点链表中各节点的当前空闲内存区域大小等属性,确定当前空闲内存区域大于等于200KB的节点。
S604、在满足要求的节点中确定满足请求的内存区域大小的控制器。
具体地,控制器管理模块在满足要求的上述节点对应的控制器链表中查找满足要求的内存控制器,根据控制器链表中各控制器的当前空闲内存区域大小,确定当前空闲内存区域大于等于200KB的控制器。
S605、在满足要求的控制器中确定满足请求的内存区域大小的内存条。
具体地,内存条管理模块在满足要求的上述控制器对应的内存条链表中查找满足要求的内存条,根据内存条链表中各内存条的当前空闲内存区域大小,确定当前空闲内存区域大于等于200KB的内存条。
进一步地,还可以确定当前空闲内存区域之和大于等于200KB的多个内存条。
S606、在满足要求的内存条中确定满足要求的内存管理区,并将所述内存管理区管理的内存区域分配给处理器。
具体地,内存条管理模块在上述满足要求的内存条中确定200KB的内存管理区域分配给发送该内存分配请求消息的CPU,以存放相应的指令。
在本实施例中,通过5个层级的管理模块对内存管理装置的内存区域进行管理,各个层级的管理模块管理相应的链表,系统分配内存时能够通过查找相应管理模块的链表在满足要求的模块上依次向下一层级查找,直到找到满足要求的内存区域以进行分配,提高了内存分配效率。
进一步地,还可以依据内存管理装置的复杂程度将管理内存管理装置内存区域的管理模块层级增加一区域管理模块,用于管理若干个节点组管理模块,还可以依据内存管理装置的复杂程度缩小管理区的大小或将管理内存管理装置内存区域的管理模块层级减少
图7为本发明实施例提供的节点下线方法的方法流程示意图,如图7所示,本实施例的内存下线方法包括:
701、接收节点下线消息。
具体地,例如需要将某一节点下线,内存管理装置的节点管理模块可以接收节点下线消息,该节点下线消息中可以包括需要下线的节点标识,该下线消息中还可以包括节点是否为浮动区域的属性信息,所述浮动区域为数据可迁移的内存区域。
702、判断节点是否已经下线,若是则执行403;若否则执行704。
具体地,节点管理模块通过查找该节点的属性信息确定该节点是否已经下线,若该节点已经下线则执行下述703;若该节点尚未下线则执行704。
703、下线成功。
704、扫描节点的内存控制器链表。
具体地,节点管理模块查找该节点的内存控制链表,根据内存控制器链表中各个内存控制器的属性信息逐个确定内存控制器是否已经下线。
705、确定内存控制器是否已经下线,若是则执行704;若否则执行706。
706、隔离待下线内存控制器对应的内存区域。
具体地,内存管理装置的内存控制器管理模块可以将未下线的内存控制器即待下线内存控制器的内存空间进行隔离,禁止对该控制器的内存区域进行内存分配或数据访问等操作。
707、判断待下线内存控制器的内存区域是否为非浮动区域,若是则执行711;若否则执行708。
708、将待下线内存控制器下线。
若待下线内存控制器的内存区域为浮动区域,则直接将该内存控制器进行下线处理,下线处理例如可以为将该待下线内存控制器断电。
709、待下线内存控制器是否下线成功,若是则执行701;若否则执行710。
若该待下线内存控制器成功下线,则返回701,继续检测是否收到新的下线消息。
710、下线失败。
待下线内存控制器
711、为待下线内存控制器选取合适的空闲内存区域,若选取成功则执行712,若未选取成功则执行710。
若待下线内存控制器的内存区域为非浮动区域,则需要在对该待下线内存控制器下线之前进行数据搬移。
具体地,可以向节点管理模块发送内存分配请求消息,请求节点管理模块分配一块内存区域大于等于该下线控制器内存区域的内存控制器,节点管理模块依据该内存分配请求消息进行内存分配,该内存下线方法该可以遵照上述内存分配方法实施例提供的任一内存分配方法确定一内存区域大于等于该下线控制器内存区域的空闲的第一内存控制器。
712、将待下线内存控制器中的数据信息迁移到空闲内存区域。
具体地,可以由内存管理装置的控制器管理模块通知BIOS执行内存迁移操作,将该待下线控制器的内存区域上的数据迁移到所述第一内存区域。
713、判断迁移是否成功,若成功则执行414;若不成功则执行410。
714、记录待下线内存控制器的迁移信息。
具体地,控制器管理模块可以记录该待下线内存控制器的迁移信息,包括该下线控制器与第一内存区域的对应关系,以便于该下线控制器再次上线时还可以依据该迁移记录信息将数据从第一内存区域搬回到该下线控制器,提高对该下线控制器的访问效率,控制器管理模块可以将该迁移信息记录存储在系统的其它可用的控制器中。
715、解除对待下线内存控制器的内存区域的隔离。
完成对该待下线内存控制器的数据迁移之后,内存控制器管理模块解除对待下线内存控制器的内存区域的隔离。
进一步地,节点管理模块还可以接收系统发送的控制器或内存条上线消息,节点管理模块依据该控制器或内存条上线消息及迁移信息记录将数据迁回到上线的控制器或内存条。
图8为本发明实施例提供的节点上线方法的方法流程示意图,如图8所示,本实施例的内存上线方法包括:
801、接收节点上线消息。
具体地,例如NUMA系统需要更多的内存空间以满足需要,此时,将某一节点上线,内存管理装置的节点管理模块接收节点的上线消息,该节点上线消息中可以包括该上线节点的标识,还可以包括该上线节点是否为浮动区域的属性信息。
802、判断节点是否已经上线,若是则执行803;若否则执行804。
具体地,节点管理模块通过查找该节点的属性信息确定该节点是否已经上线,若该节点已经上线则执行下述503;若该节点尚未上线则执行504。
803、上线成功。
804、扫描节点的内存控制器链表。
节点管理模块查找该节点的内存控制链表,根据内存控制器链表中各个内存控制器的属性信息逐个确定内存控制器是否已经上线。
805、确定内存控制器是否已经上线,若是则执行804;若否则执行806。
若已经上线,则继续查找直到找到未上线的内存控制器,并执行806。
806、获取待上线内存控制器的迁移记录。
具体地,内存管理装置的内存控制器模块可以根据该上线节点的节点标识获取该节点下线之前保留的迁移记录。
807、确定是否可以迁回,若不可以迁回则执行808;若可以迁回则执行811。
若该迁移记录完整,且该待上线内存控制器的原始数据可以被迁回,则执行811;若该迁移记录不完整或该待上线内存控制器的原始数据已经受到损坏以不能被迁回,则执行808。
808、内存控制器上线。
将该待上线的内存控制器上线。
809、内存控制器是否上线成功,若上线成功则执行801;若上线不成功则执行810。
810、上线失败。
811、隔离待上线内存控制器的内存区域。
具体地,内存管理装置的内存控制器管理模块可以将待上线内存控制器的内存空间进行隔离,禁止对该控制器的内存区域进行内存分配或数据访问等操作。
812、将数据迁回待上线内存控制器。
依据迁移记录,通过BIOS将该待上线内存控制器的原始数据迁回到待上线内存控制器。
813、判断迁移是否成功,若成功则执行814;若不成功则执行810。
814、解除对待上线内存控制器的内存区域的隔离。
可见,本发明实施例通过增加层次的内存管理方式,使得在海量节点和海量内存系统的内存分配发生不足时,能够很快寻找到适合要求的内存管理区而无需遍历整个管理区链表,提升了内存分配效率。图9a为本发明实施例提供的内存管理装置的逻辑结构示意图,如图9a所示,本实施例的内存管理装置100包括:
第一接收模块101,用于接收处理器发送的内存分配请求消息,所述内存分配请求消息中包含内存需求信息,并将所述内存分配请求消息发送给节点管理模块102;
节点管理模块102,用于接收第一接收模块101发送的所述内存分配请求消息,根据所述内存分配请求消息中的内存需求信息和所述处理器的本地节点的内存属性信息判断所述本地节点对应的内存单元是否满足所述内存需求信息;
内存控制器管理模块103,用于若所述处理器的本地节点对应的内存单元满足所述内存需求信息,则根据所述内存需求信息以及所述本地节点对应的第一管理信息确定本地节点中满足所述内存需求信息的内存控制器,所述第一管理信息包括本地节点中的内存控制器的标识及内存控制器的内存属性信息,将所述满足所述内存需求信息的内存控制器的标识发送给内存管理区管理模块;
内存管理区管理模块104,用于接收内存控制器管理模块103发送的所述满足所述内存需求信息的内存控制器的标识,根据所述内存控制器的标识确定与所述内存控制器对应的至少一个第二管理信息,根据所述内存需求信息与所述至少一个第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区,所述第二管理信息包括所述内存控制器对应的内存单元的标识以及内存单元的属性信息,将所述满足所述内存需求信息的内存管理区的标识发送给内存分配模块105;
内存分配模块105,用于接收内存管理区管理模块104发送的所述满足所述内存需求信息的内存管理区的标识,根据所述内存管理区的标识将所述内存管理区对应的内存空间分配给所述处理器。
在一种实现方式下,内存管理区管理模块104具体用于:根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的第一第二管理信息,根据所述内存需求信息与所述第一第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区,所述第一第二管理信息包括所述内存控制器对应的内存管理区的标识及内存管理区的内存属性信息。
在另一种实现方式下,内存管理区管理模块104具体包括:
内存条管理单元,用于根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的第一第二管理信息,根据所述内存需求信息与所述第一第二管理信息确定所述内存控制器中满足所述内存需求信息的内存条,所述第一第二管理信息包括所述内存控制器对应的内存条的标识及内存条的内存属性信息;
内存管理区管理单元,用于根据满足所述内存需求信息的内存条的标识确定与所述内存条对应的第二第二管理信息,根据所述内存需求信息与所述第二第二管理信息确定所述内存条中满足所述内存需求信息的内存管理区,所述第二第二管理信息包括所述内存条对应的内存管理区的标识及内存管理区的内存属性信息。
进一步的,如图9b所示,本发明实施例提供的内存管理装置200还包括:
节点组管理模块201用于若所述处理器的本地节点对应的内存单元不满足所述内存需求信息,则根据所述内存需求信息与第五管理信息确定满足所述内存需求信息的节点组,所述第五管理信息包括节点组的标识及节点组的内存属性信息;
节点管理模块202还用于根据满足所述内存需求信息的节点组的标识确定与其对应的第六管理信息,根据所述内存需求信息与所述第六管理信息确定所述节点组中满足所述内存需求信息的节点,所述第六管理信息包括所述节点组中的节点的标识以及节点的内存属性信息。
进一步的,如图9c所示,本发明实施例提供的内存管理装置300还包括:
第二接收模块301,用于接收处理器发送的内存控制器下线消息,所述内存控制器下线消息中包括待下线的内存控制器的标识,将所述内存控制器下线消息发送给内存控制器管理模块。
内存控制器管理模块103还用于,接收所述第二接收模块301发送的所述内存控制器下线消息,根据所述待下线的内存控制器的标识获取所述待下线的内存控制器对应的内存区域的类型;若所述内存区域的类型为非浮动区域,则将所述待下线的内存控制器对应的内存区域中的数据信息迁移到空闲内存区域中,并记录所述待下线的内存控制器的标识及其对应的内存迁移信息;对所述待下线的内存控制器进行下线处理。
进一步的,在所述将所述待下线的内存控制器对应的内存区域中的数据信息迁移到空闲内存区域之前,内存控制器管理模块103还用于对所述待下线的内存控制器对应的内存区域进行隔离处理。在所述对所述待下线的内存控制器进行下线处理之前,内存控制器管理模块103还用于对所述待下线的内存控制器对应的内存区域进行解除隔离处理。
进一步的,如图9d所示,本发明实施例提供的内存管理装置400还包括:
第三接收模块401,用于接收处理器发送的内存控制器上线消息,所述内存控制器上线消息中包括待上线的内存控制器的标识,将所述内存控制器下线消息发送给内存控制器管理模块;
内存控制器管理模块103还用于,接收所述第三接收模块发送的所述内存控制器下线消息,根据所述待上线的内存控制器的标识获取所待上线的内存控制器的内存迁移信息;根据所述待上线的内存控制器的内存迁移信息将所述待上线的内存控制器对应的内存区域的数据信息回迁到所述待上线的内存控制器对应的内存区域中;对所述待上线的内存控制器进行上线处理。
进一步的,在所述根据所述待上线的内存控制器的内存迁移信息将所述待上线的内存控制器对应的内存区域的数据信息回迁到所述待上线的内存控制器对应的内存区域中之前,内存控制器管理模块103还用于对所述待上线的内存控制器对应的内存区域进行隔离处理。在所述对所述待上线的内存控制器进行上线处理之前,内存控制器管理模块103还用于对所述待上线的内存控制器对应的内存区域进行解除隔离处理。
本发明实施例提供的各种内存管理装置的具体实现可以参考前述方法实施例,在此不再赘述。
需要说明的是,图9所示的几种实施例中的模块划分仅为举例说明,其中涉及的功能模块可以合并也可以进一步细分,例如第一接收模块101、第二接收模块301和第三接收模块401可以合并为一个接收不同信息的功能模块。本领域技术人员根据本发明实施例公开的功能模块划分容易想到其它的功能模块划分方式,因此对模块的划分本发明实施例不作限定。
如图10所示,为本发明实施例提供的另一内存管理装置的逻辑结构示意图,该内存管理装置500可以实现为一计算机系统。接收器501和发送器502用于与除内存管理装置之外的其它装置或系统进行通信。存储器504用于存储数据,具体包括应用程序数据、处理器执行的结果数据或处理器执行需要的数据。处理器503用于执行本发明实施例提供的内存分配方法、内存上下线方法等内存管理方法。
在一种实现方式下,存储器504用于存储实现本发明实施例提供的任意一种内存管理方法的应用程序;处理器503用于读取存储器504中的应用程序,并执行。
以一种内存分配方法为例:接收器501用于接收某一节点(例如NUMA系统中的某一服务器)的处理器发送的内存分配请求消息,所述内存分配请求消息中包含内存需求信息;
在一种实现方实现方式下,处理器503根据所述内存需求信息和所述处理器的本地节点的内存属性信息判断所述本地节点对应的内存单元是否满足所述内存需求信息;若所述处理器的本地节点对应的内存单元满足所述内存需求信息,则根据所述内存需求信息以及所述本地节点对应的第一管理信息确定本地节点中满足所述内存需求信息的内存控制器,所述第一管理信息包括本地节点中的内存控制器的标识及内存控制器的内存属性信息;根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的第一第二管理信息,根据所述内存需求信息与所述第一第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区,所述第一第二管理信息包括所述内存控制器对应的内存管理区的标识及内存管理区的内存属性信息;根据满足所述内存需求信息的内存管理区的标识将所述内存管理区对应的内存空间分配给所述处理器。
在另一种实现方式下,处理器503根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的第一第二管理信息,根据所述内存需求信息与所述第一第二管理信息确定所述内存控制器中满足所述内存需求信息的内存条,所述第一第二管理信息包括所述内存控制器对应的内存条的标识及内存条的内存属性信息;根据满足所述内存需求信息的内存条的标识确定与所述内存条对应的第二第二管理信息,根据所述内存需求信息与所述第二第二管理信息确定所述内存条中满足所述内存需求信息的内存管理区,所述第二第二管理信息包括所述内存条对应的内存管理区的标识及内存管理区的内存属性信息。
进一步的,处理器还用于若所述处理器的本地节点对应的内存单元不满足所述内存需求信息,则根据所述内存需求信息与第三管理信息确定满足所述内存需求信息的节点组,所述第三管理信息包括节点组的标识及节点组的内存属性信息;根据满足所述内存需求信息的节点组的标识确定与其对应的第四管理信息,根据所述内存需求信息与所述第四管理信息确定所述节点组中满足所述内存需求信息的节点,所述第四管理信息包括所述节点组中的节点的标识以及节点的内存属性信息。
发送器502用于向除内存控制器或内存控制器所在的节点之外的其它节点发送内存分配请求消息。具体的,当通过处理器确定满足内存需求的节点非内存控制器所在的节点,那么通过内存控制器的发送器向该满足内存需求的节点发送内存分配请求消息,之后确定内存管理区的过程如前述实施例所述,在此不在赘述。
另外,本发明实施例提供的内存管理装置还可以用来执行前述实施例所提供的任一内存上线方法或任一内存下线方法。
以其中一种内存上线方法为例:接收器501用于接收某一节点的处理器发送的内存控制器下线消息,所述内存控制器下线消息中包括待下线的内存控制器的标识。处理器503根据所述待下线的内存控制器的标识获取所述待下线的内存控制器对应的内存区域的类型;若所述内存区域的类型为非浮动区域,则将所述待下线的内存控制器对应的内存区域中的数据信息迁移到空闲内存区域中,并记录所述待下线的内存控制器的标识及其对应的内存迁移信息;对所述待下线的内存控制器进行下线处理。
以其中一种内存下线方法为例:接收器501用于接收某一节点的处理器发送的内存控制器上线消息,所述内存控制器上线消息中包括待上线的内存控制器的标识。处理器503根据所述待上线的内存控制器的标识获取所待上线的内存控制器的内存迁移信息;根据所述待上线的内存控制器的内存迁移信息将所述待上线的内存控制器对应的内存区域的数据信息回迁到所述待上线的内存控制器对应的内存区域中;对所述待上线的内存控制器进行上线处理。
存储于存储器504中的应用程序可以划分为前述装置实施例所述的功能模块,也可以不作模块划分或采取其它的模块划分方式,本发明实施例对此不作限定。
需说明的是,图10提供的计算机系统所有模块均通过处理器连接,而在本发明的其它一些实施例中,所有模块,包括处理器,可以通过总线连接,该总线可以是一条或多条通信线路。
本发明实施例提出的内存管理装置中的内存多层次管理方式,结合各层次的内存分配和迁移等管理技术,实现了内存镜像、内存保护、内存快速恢复等内存RAS技术的有效应用。
图11为本发明实施例提供的NUMA系统的逻辑结构示意图,如图11所示,NUMA系统600包括至少一个节点61和内存管理装置62,节点61包括至少一个内存控制器611和至少一个处理器612以及总线613,内存控制器611与处理器612具有通信连接。该总线613可以是ISA(Industry StandardArchitecture,工业标准体系结构)总线、PCI(Peripheral Component,外部设备互连)总线或EISA(Extended Industry Standard Architecture,扩展工业标准体系结构)总线等。所述总线可以是一条或多条物理线路,当是多条物理线路时可以分为地址总线、数据总线、控制总线等。在其它实施例中,处理器与内存控制器也可以不通过总线而直接连接。
本发明实施例提供的NUMA系统600中内存管理装置62作为一个独立的计算机系统存在,内存管理装置62通过节点61中的通信接口614与NUMA系统的多个节点通信。这里的“节点”不一定是物理上的一台主机,可能是物理上的多台主机。在本发明其它一些实施例中,内存管理装置62也可以位于NUMA系统的其中一个节点上,通过该节点的通信接口与其它节点通信。
具体地,一个节点61中包括至少一个内存控制器611,NUMA系统600中的任一处理器612可以访问任一内存控制器611,相同处理节点中的处理器612通过总线613共享本地节点的内存控制器611,不同节点之间可以通过内存管理装置62互相访问内存控制器611。
内存管理装置62可以为上述内存管理装置实施例中所述的任一内存管理装置,用于接收所述处理器发送的内存分配请求消息,所述内存分配请求消息中包含内存需求信息;根据所述内存需求信息和所述处理器的本地节点的内存属性信息判断所述本地节点对应的内存单元是否满足所述内存需求信息;若所述处理器的本地节点对应的内存单元满足所述内存需求信息,则根据所述内存需求信息以及所述本地节点对应的第一管理信息确定本地节点中满足所述内存需求信息的内存控制器,所述第一管理信息包括本地节点中的内存控制器的标识及内存控制器的内存属性信息;根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的至少一个第二管理信息,根据所述内存需求信息与所述至少一个第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区,所述第二管理信息包括所述内存控制器对应的内存单元的标识及内存单元的内存属性信息;根据满足所述内存需求信息的内存管理区的标识将所述内存管理区对应的内存空间分配给所述处理器。
其它具体实现可以参考本发明前述方法或装置实施例所述,在此不再赘述。
可见,本实施例提供的内存管理方法、内存管理装置以及NUMA系统,通过接收处理器发送的内存分配请求消息,根据内存分配请求消息中的内存需求信息确定本地节点中是否存在满足所述内存需求信息的内存控制器,在满足所述内存需求信息的本地节点中确定满足所述内存需求信息的内存控制器,在满足所述内存需求信息的内存控制器中确定满足所述内存需求信息的内存管理区,将满足所述内存需求信息的内存管理区分配给发送所述内存分配请求消息的处理器,不需要在不满足要求的节点中确定内存控制器及内存管理区,能够快速找到满足要求的存储区域,提高了内存分配效率;进一步的,本发明实施例通过增加节点组管理层次和内存条管理层次,进一步细化了存储区域的管理,提供了内存分配效率。
进一步的,本发明实施例提出的内存管理装置通过增加内存控制器管理模块,结合内存迁移技术,解决了任意内存热插拔的技术问题,同时对系统性能影响很小。在内存热插后,自动识别内存迁移记录,选择将热拔时迁移的内存回迁到本地,减少远端访问延迟。
进一步的,本发明实施例提出的内存管理装置,通过内存的多层次管理,结合各层次的内存分配释放管理技术,实现了内存镜像、内存保护、内存快速恢复等内存RAS技术的有效应用。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (22)
1.一种内存管理方法,其特征在于,所述方法包括:
接收处理器发送的内存分配请求消息,所述内存分配请求消息中包含内存需求信息;
根据所述内存需求信息和所述处理器的本地节点的内存属性信息判断所述本地节点对应的内存单元是否满足所述内存需求信息;
若所述处理器的本地节点对应的内存单元满足所述内存需求信息,则根据所述内存需求信息以及所述本地节点对应的第一管理信息确定本地节点中满足所述内存需求信息的内存控制器,所述第一管理信息包括本地节点中的内存控制器的标识及内存控制器的内存属性信息;
根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的至少一个第二管理信息,根据所述内存需求信息与所述至少一个第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区,所述第二管理信息包括所述内存控制器对应的内存单元的标识以及内存单元的属性信息;
根据满足所述内存需求信息的内存管理区的标识将所述内存管理区对应的内存空间分配给所述处理器。
2.根据权利要求1所述的方法,其特征在于,所述根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的至少一个第二管理信息,根据所述内存需求信息与所述至少一个第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区,包括:
根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的第一第二管理信息,根据所述内存需求信息与所述第一第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区,所述第一第二管理信息包括所述内存控制器对应的内存管理区的标识及内存管理区的内存属性信息。
3.根据权利要求1所述的方法,其特征在于,所述根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的至少一个第二管理信息,根据所述内存需求信息与所述至少一个第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区,包括:
根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的第一第二管理信息,根据所述内存需求信息与所述第一第二管理信息确定所述内存控制器中满足所述内存需求信息的内存条,所述第一第二管理信息包括所述内存控制器对应的内存条的标识及内存条的内存属性信息;
根据满足所述内存需求信息的内存条的标识确定与所述内存条对应的第二第二管理信息,根据所述内存需求信息与所述第二第二管理信息确定所述内存条中满足所述内存需求信息的内存管理区,所述第二第二管理信息包括所述内存条对应的内存管理区的标识及内存管理区的内存属性信息。
4.根据权利要求1或2或3所述的方法,其特征在于,所述方法还包括:
若所述处理器的本地节点对应的内存单元不满足所述内存需求信息,则根据所述内存需求信息与第三管理信息确定满足所述内存需求信息的节点组,所述第三管理信息包括节点组的标识及节点组的内存属性信息;
根据满足所述内存需求信息的节点组的标识确定与其对应的第四管理信息,根据所述内存需求信息与所述第四管理信息确定所述节点组中满足所述内存需求信息的节点,所述第四管理信息包括所述节点组中的节点的标识以及节点的内存属性信息。
5.根据权利要求1~4任一项所述的方法,其特征在于,
所述内存需求信息包括需求的内存区域大小,所述内存属性信息包括:剩余的内存区域大小。
6.根据权利要求5所述的方法,其特征在于,所述内存需求信息还包括需求的内存区域类型,所述内存属性信息还包括:剩余的内存区域类型。
7.根据权利要求6所述的方法,其特征在于,所述内存区域类型包括浮动区域和非浮动区域。
8.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
接收处理器发送的内存控制器下线消息,所述内存控制器下线消息中包括待下线的内存控制器的标识;
根据所述待下线的内存控制器的标识获取所述待下线的内存控制器对应的内存区域的类型;
若所述内存区域的类型为非浮动区域,则将所述待下线的内存控制器对应的内存区域中的数据信息迁移到空闲内存区域中,并记录所述待下线的内存控制器的标识及其对应的内存迁移信息;
对所述待下线的内存控制器进行下线处理。
9.根据权利要求8所述的方法,其特征在于,在所述将所述待下线的内存控制器对应的内存区域中的数据信息迁移到空闲内存区域之前,所述方法还包括:
对所述待下线的内存控制器对应的内存区域进行隔离处理;
在所述对所述待下线的内存控制器进行下线处理之前,所述方法还包括:
对所述待下线的内存控制器对应的内存区域进行解除隔离处理。
10.根据权利要求8或9所述的方法,其特征在于,所述空闲内存区域的大小大于或等于所述待下线的内存控制器对应的内存区域的大小,且所述空闲内存区域对应的内存控制器不是所述待下线的内存控制器。
11.根据权利要求8~10任一项所述的方法,其特征在于,所述方法还包括:
接收处理器发送的内存控制器上线消息,所述内存控制器上线消息中包括待上线的内存控制器的标识;
根据所述待上线的内存控制器的标识获取所待上线的内存控制器的内存迁移信息;
根据所述待上线的内存控制器的内存迁移信息将所述待上线的内存控制器对应的内存区域的数据信息回迁到所述待上线的内存控制器对应的内存区域中;
对所述待上线的内存控制器进行上线处理。
12.根据权利要求11所述的方法,其特征在于,
在所述根据所述待上线的内存控制器的内存迁移信息将所述待上线的内存控制器对应的内存区域的数据信息回迁到所述待上线的内存控制器对应的内存区域中之前,所述方法还包括:
对所述待上线的内存控制器对应的内存区域进行隔离处理;
在所述对所述待上线的内存控制器进行上线处理之前,所述方法还包括:
对所述待上线的内存控制器对应的内存区域进行解除隔离处理。
13.根据权利要求1-12任一项所述的方法,其特征在于,所述管理信息为链表或数组。
14.一种内存管理装置,其特征在于,包括:
第一接收模块,用于接收处理器发送的内存分配请求消息,所述内存分配请求消息中包含内存需求信息,并将所述内存分配请求消息发送给节点管理模块;
节点管理模块,用于接收所述第一接收模块发送的所述内存分配请求消息,根据所述内存分配请求消息中的内存需求信息和所述处理器的本地节点的内存属性信息判断所述本地节点对应的内存单元是否满足所述内存需求信息;
内存控制器管理模块,用于若所述处理器的本地节点对应的内存单元满足所述内存需求信息,则根据所述内存需求信息以及所述本地节点对应的第一管理信息确定本地节点中满足所述内存需求信息的内存控制器,所述第一管理信息包括本地节点中的内存控制器的标识及内存控制器的内存属性信息,将所述满足所述内存需求信息的内存控制器的标识发送给内存管理区管理模块;
内存管理区管理模块,用于接收所述内存控制器管理模块发送的所述满足所述内存需求信息的内存控制器的标识,根据所述内存控制器的标识确定与所述内存控制器对应的至少一个第二管理信息,根据所述内存需求信息与所述至少一个第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区,所述第二管理信息包括所述内存控制器对应的内存单元的标识以及内存单元的属性信息,将所述满足所述内存需求信息的内存管理区的标识发送给内存分配模块;
内存分配模块,用于接收所述内存管理区管理模块发送的所述满足所述内存需求信息的内存管理区的标识,根据所述内存管理区的标识将所述内存管理区对应的内存空间分配给所述处理器。
15.根据权利要求14所述的装置,其特征在于,所述内存管理区管理模块具体用于:根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的第一第二管理信息,根据所述内存需求信息与所述第一第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区,所述第一第二管理信息包括所述内存控制器对应的内存管理区的标识及内存管理区的内存属性信息。
16.根据权利要求14所述的装置,其特征在于,所述内存管理区管理模块具体包括:
内存条管理单元,用于根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的第一第二管理信息,根据所述内存需求信息与所述第一第二管理信息确定所述内存控制器中满足所述内存需求信息的内存条,所述第一第二管理信息包括所述内存控制器对应的内存条的标识及内存条的内存属性信息;
内存管理区管理单元,用于根据满足所述内存需求信息的内存条的标识确定与所述内存条对应的第二第二管理信息,根据所述内存需求信息与所述第二第二管理信息确定所述内存条中满足所述内存需求信息的内存管理区,所述第二第二管理信息包括所述内存条对应的内存管理区的标识及内存管理区的内存属性信息。
17.根据权利要求14-16任一项所述的装置,其特征在于,所述装置还包括:
节点组管理模块,用于若所述处理器的本地节点对应的内存单元不满足所述内存需求信息,则根据所述内存需求信息与第五管理信息确定满足所述内存需求信息的节点组,所述第五管理信息包括节点组的标识及节点组的内存属性信息;
所述节点管理模块,还用于根据满足所述内存需求信息的节点组的标识确定与其对应的第六管理信息,根据所述内存需求信息与所述第六管理信息确定所述节点组中满足所述内存需求信息的节点,所述第六管理信息包括所述节点组中的节点的标识以及节点的内存属性信息。
18.根据权利要求14-17任一项所述的装置,其特征在于,所述装置还包括:
第二接收模块,用于接收处理器发送的内存控制器下线消息,所述内存控制器下线消息中包括待下线的内存控制器的标识,将所述内存控制器下线消息发送给内存控制器管理模块;
所述内存控制器管理模块还用于,接收所述第二接收模块发送的所述内存控制器下线消息,根据所述待下线的内存控制器的标识获取所述待下线的内存控制器对应的内存区域的类型;若所述内存区域的类型为非浮动区域,则将所述待下线的内存控制器对应的内存区域中的数据信息迁移到空闲内存区域中,并记录所述待下线的内存控制器的标识及其对应的内存迁移信息;对所述待下线的内存控制器进行下线处理。
19.根据权利要求18所述的装置,其特征在于,所述内存控制器管理模块还用于,对所述待下线的内存控制器对应的内存区域进行隔离处理;以及,对所述待下线的内存控制器对应的内存区域进行解除隔离处理。
20.根据权利要求18或19所述的装置,其特征在于,所述装置还包括:
第三接收模块,用于接收处理器发送的内存控制器上线消息,所述内存控制器上线消息中包括待上线的内存控制器的标识,将所述内存控制器下线消息发送给内存控制器管理模块;
所述内存控制器管理模块还用于,接收所述第三接收模块发送的所述内存控制器下线消息,根据所述待上线的内存控制器的标识获取所待上线的内存控制器的内存迁移信息;根据所述待上线的内存控制器的内存迁移信息将所述待上线的内存控制器对应的内存区域的数据信息回迁到所述待上线的内存控制器对应的内存区域中;对所述待上线的内存控制器进行上线处理。
21.根据权利要求20所述的装置,其特征在于,
所述内存控制器管理模块还用于,对所述待上线的内存控制器对应的内存区域进行隔离处理;以及,对所述待上线的内存控制器对应的内存区域进行解除隔离处理。
22.一种非一致访问分布共享存储NUMA系统,其特征在于,所述系统包括内存管理装置和至少一个节点,所述节点包括至少一个内存控制器和至少一个处理器,所述内存控制器与所述处理器具有通信连接;
所述内存管理装置为权利要求14-21任一项所述的内存管理装置,用于接收所述处理器发送的内存分配请求消息,所述内存分配请求消息中包含内存需求信息;根据所述内存需求信息和所述处理器的本地节点的内存属性信息判断所述本地节点对应的内存单元是否满足所述内存需求信息;若所述处理器的本地节点对应的内存单元满足所述内存需求信息,则根据所述内存需求信息以及所述本地节点对应的第一管理信息确定本地节点中满足所述内存需求信息的内存控制器,所述第一管理信息包括本地节点中的内存控制器的标识及内存控制器的内存属性信息;根据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对应的至少一个第二管理信息,根据所述内存需求信息与所述至少一个第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区,所述第二管理信息包括所述内存控制器对应的内存单元的标识以及内存单元的属性信息;根据满足所述内存需求信息的内存管理区的标识将所述内存管理区对应的内存空间分配给所述处理器。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310052291.4A CN103136110B (zh) | 2013-02-18 | 2013-02-18 | 内存管理方法、内存管理装置及numa系统 |
PCT/CN2013/079892 WO2014124576A1 (zh) | 2013-02-18 | 2013-07-23 | 内存管理方法、内存管理装置及numa系统 |
EP13791712.6A EP2784670B1 (en) | 2013-02-18 | 2013-07-23 | Memory management method, memory management device and numa system |
US14/094,360 US8806169B1 (en) | 2013-02-18 | 2013-12-02 | Memory management method, memory management apparatus and NUMA system |
US14/282,576 US9026766B2 (en) | 2013-02-18 | 2014-05-20 | Memory management method, memory management apparatus and NUMA system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310052291.4A CN103136110B (zh) | 2013-02-18 | 2013-02-18 | 内存管理方法、内存管理装置及numa系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103136110A true CN103136110A (zh) | 2013-06-05 |
CN103136110B CN103136110B (zh) | 2016-03-30 |
Family
ID=48495960
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310052291.4A Active CN103136110B (zh) | 2013-02-18 | 2013-02-18 | 内存管理方法、内存管理装置及numa系统 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8806169B1 (zh) |
EP (1) | EP2784670B1 (zh) |
CN (1) | CN103136110B (zh) |
WO (1) | WO2014124576A1 (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425592A (zh) * | 2013-08-05 | 2013-12-04 | 大唐移动通信设备有限公司 | 一种多进程系统中的内存管理方法及装置 |
CN103607428A (zh) * | 2013-10-30 | 2014-02-26 | 华为技术有限公司 | 一种访问共享内存的方法和装置 |
CN103729300A (zh) * | 2013-12-25 | 2014-04-16 | 华为技术有限公司 | 非易失内存的管理方法和相关装置 |
US8806169B1 (en) | 2013-02-18 | 2014-08-12 | Huawei Technologies Co., Ltd. | Memory management method, memory management apparatus and NUMA system |
WO2014205845A1 (zh) * | 2013-06-29 | 2014-12-31 | 华为技术有限公司 | 一种numa系统内存镜像配置方法、解除方法、系统和主节点 |
CN104252419A (zh) * | 2014-09-16 | 2014-12-31 | 杭州华为数字技术有限公司 | 一种内存分配的方法及装置 |
CN104268101A (zh) * | 2014-09-22 | 2015-01-07 | 无锡城市云计算中心有限公司 | 一种存储空间分配方法及装置 |
CN104268089A (zh) * | 2014-09-15 | 2015-01-07 | 杭州华为数字技术有限公司 | 一种信息更新的方法、装置及系统 |
CN105224246A (zh) * | 2015-09-25 | 2016-01-06 | 联想(北京)有限公司 | 一种信息以及内存配置方法和装置 |
CN105701020A (zh) * | 2014-11-28 | 2016-06-22 | 华为技术有限公司 | 一种内存访问的方法、相关装置和系统 |
CN106383666A (zh) * | 2016-09-07 | 2017-02-08 | 东信和平科技股份有限公司 | 一种数据存储方法及装置 |
CN107015914A (zh) * | 2016-01-28 | 2017-08-04 | 长城汽车股份有限公司 | 数据标定方法及系统 |
WO2018041074A1 (zh) * | 2016-08-31 | 2018-03-08 | 华为技术有限公司 | 一种内存设备的访问方法、装置和系统 |
CN108196958A (zh) * | 2017-12-29 | 2018-06-22 | 北京泽塔云科技股份有限公司 | 资源调度分配方法、计算机系统及超融合架构系统 |
CN115269198A (zh) * | 2022-08-10 | 2022-11-01 | 抖音视界有限公司 | 基于服务器集群的访问请求处理方法及相关设备 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108292345A (zh) * | 2016-01-27 | 2018-07-17 | 惠普发展公司,有限责任合伙企业 | 操作验证 |
CN109388490B (zh) | 2017-08-07 | 2020-11-17 | 华为技术有限公司 | 一种内存分配方法和服务器 |
CN109032510B (zh) * | 2018-06-29 | 2021-07-09 | 山石网科通信技术股份有限公司 | 基于分布式结构的处理数据的方法和装置 |
CN110968599B (zh) * | 2018-09-30 | 2023-04-07 | 北京国双科技有限公司 | 一种基于Impala的查询方法和装置 |
CN115729849B (zh) * | 2022-11-04 | 2024-02-20 | 超聚变数字技术有限公司 | 内存管理方法及计算设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1347034A (zh) * | 2000-09-25 | 2002-05-01 | 汤姆森许可贸易公司 | 数据内存管理系统和方法以及相关多处理器网络 |
CN101158927A (zh) * | 2007-10-25 | 2008-04-09 | 中国科学院计算技术研究所 | 一种内存共享的系统和装置及方法 |
CN101246466A (zh) * | 2007-11-29 | 2008-08-20 | 华为技术有限公司 | 多核系统中共享内存的管理方法和装置 |
US20090077326A1 (en) * | 2007-09-14 | 2009-03-19 | Ricoh Company, Limited | Multiprocessor system |
CN102439570A (zh) * | 2011-10-27 | 2012-05-02 | 华为技术有限公司 | 针对多步长非一致性内存访问numa架构的内存管理方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7870256B2 (en) * | 2005-03-25 | 2011-01-11 | Hewlett-Packard Development Company, L.P. | Remote desktop performance model for assigning resources |
RU2008117999A (ru) | 2005-10-06 | 2009-11-20 | Гутехоффнунгсхютте Радзатц Гмбх (De) | Способ бесконтактного динамического определения профиля твердого тела |
US20070180186A1 (en) * | 2006-01-27 | 2007-08-02 | Cornwell Michael J | Non-volatile memory management |
US9185160B2 (en) * | 2007-02-12 | 2015-11-10 | Oracle America, Inc. | Resource reservation protocol over unreliable packet transport |
US7882319B2 (en) * | 2007-09-27 | 2011-02-01 | Oracle America Inc. | Method and system for memory management |
CN101478567B (zh) | 2009-01-09 | 2011-09-21 | 南京联创科技集团股份有限公司 | 基于网格划分的内存管理方法 |
CN103136110B (zh) * | 2013-02-18 | 2016-03-30 | 华为技术有限公司 | 内存管理方法、内存管理装置及numa系统 |
-
2013
- 2013-02-18 CN CN201310052291.4A patent/CN103136110B/zh active Active
- 2013-07-23 EP EP13791712.6A patent/EP2784670B1/en active Active
- 2013-07-23 WO PCT/CN2013/079892 patent/WO2014124576A1/zh active Application Filing
- 2013-12-02 US US14/094,360 patent/US8806169B1/en active Active
-
2014
- 2014-05-20 US US14/282,576 patent/US9026766B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1347034A (zh) * | 2000-09-25 | 2002-05-01 | 汤姆森许可贸易公司 | 数据内存管理系统和方法以及相关多处理器网络 |
US20090077326A1 (en) * | 2007-09-14 | 2009-03-19 | Ricoh Company, Limited | Multiprocessor system |
CN101158927A (zh) * | 2007-10-25 | 2008-04-09 | 中国科学院计算技术研究所 | 一种内存共享的系统和装置及方法 |
CN101246466A (zh) * | 2007-11-29 | 2008-08-20 | 华为技术有限公司 | 多核系统中共享内存的管理方法和装置 |
CN102439570A (zh) * | 2011-10-27 | 2012-05-02 | 华为技术有限公司 | 针对多步长非一致性内存访问numa架构的内存管理方法及装置 |
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8806169B1 (en) | 2013-02-18 | 2014-08-12 | Huawei Technologies Co., Ltd. | Memory management method, memory management apparatus and NUMA system |
WO2014124576A1 (zh) * | 2013-02-18 | 2014-08-21 | 华为技术有限公司 | 内存管理方法、内存管理装置及numa系统 |
US9026766B2 (en) | 2013-02-18 | 2015-05-05 | Huawei Technologies Co., Ltd. | Memory management method, memory management apparatus and NUMA system |
WO2014205845A1 (zh) * | 2013-06-29 | 2014-12-31 | 华为技术有限公司 | 一种numa系统内存镜像配置方法、解除方法、系统和主节点 |
CN103425592B (zh) * | 2013-08-05 | 2016-08-10 | 大唐移动通信设备有限公司 | 一种多进程系统中的内存管理方法及装置 |
CN103425592A (zh) * | 2013-08-05 | 2013-12-04 | 大唐移动通信设备有限公司 | 一种多进程系统中的内存管理方法及装置 |
CN103607428A (zh) * | 2013-10-30 | 2014-02-26 | 华为技术有限公司 | 一种访问共享内存的方法和装置 |
CN103607428B (zh) * | 2013-10-30 | 2017-11-17 | 华为技术有限公司 | 一种访问共享内存的方法和装置 |
WO2015062228A1 (zh) * | 2013-10-30 | 2015-05-07 | 华为技术有限公司 | 一种访问共享内存的方法和装置 |
CN103729300A (zh) * | 2013-12-25 | 2014-04-16 | 华为技术有限公司 | 非易失内存的管理方法和相关装置 |
CN103729300B (zh) * | 2013-12-25 | 2017-11-28 | 华为技术有限公司 | 非易失内存的管理方法和相关装置 |
CN104268089A (zh) * | 2014-09-15 | 2015-01-07 | 杭州华为数字技术有限公司 | 一种信息更新的方法、装置及系统 |
CN104268089B (zh) * | 2014-09-15 | 2018-03-09 | 杭州华为数字技术有限公司 | 一种信息更新的方法、装置及系统 |
WO2016041501A1 (zh) * | 2014-09-16 | 2016-03-24 | 华为技术有限公司 | 一种内存分配的方法及装置 |
US10353609B2 (en) | 2014-09-16 | 2019-07-16 | Huawei Technologies Co., Ltd. | Memory allocation method and apparatus |
US10990303B2 (en) | 2014-09-16 | 2021-04-27 | Huawei Technologies Co., Ltd. | Memory allocation method and apparatus |
CN104252419A (zh) * | 2014-09-16 | 2014-12-31 | 杭州华为数字技术有限公司 | 一种内存分配的方法及装置 |
CN104252419B (zh) * | 2014-09-16 | 2017-09-19 | 华为技术有限公司 | 一种内存分配的方法及装置 |
CN104268101A (zh) * | 2014-09-22 | 2015-01-07 | 无锡城市云计算中心有限公司 | 一种存储空间分配方法及装置 |
CN104268101B (zh) * | 2014-09-22 | 2017-12-05 | 无锡城市云计算中心有限公司 | 一种存储空间分配方法及装置 |
CN105701020B (zh) * | 2014-11-28 | 2018-11-30 | 华为技术有限公司 | 一种内存访问的方法、相关装置和系统 |
CN105701020A (zh) * | 2014-11-28 | 2016-06-22 | 华为技术有限公司 | 一种内存访问的方法、相关装置和系统 |
CN105224246A (zh) * | 2015-09-25 | 2016-01-06 | 联想(北京)有限公司 | 一种信息以及内存配置方法和装置 |
CN107015914A (zh) * | 2016-01-28 | 2017-08-04 | 长城汽车股份有限公司 | 数据标定方法及系统 |
WO2018041074A1 (zh) * | 2016-08-31 | 2018-03-08 | 华为技术有限公司 | 一种内存设备的访问方法、装置和系统 |
CN106383666A (zh) * | 2016-09-07 | 2017-02-08 | 东信和平科技股份有限公司 | 一种数据存储方法及装置 |
CN106383666B (zh) * | 2016-09-07 | 2020-05-01 | 东信和平科技股份有限公司 | 一种数据存储方法及装置 |
CN108196958A (zh) * | 2017-12-29 | 2018-06-22 | 北京泽塔云科技股份有限公司 | 资源调度分配方法、计算机系统及超融合架构系统 |
CN115269198A (zh) * | 2022-08-10 | 2022-11-01 | 抖音视界有限公司 | 基于服务器集群的访问请求处理方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
US8806169B1 (en) | 2014-08-12 |
EP2784670A4 (en) | 2015-04-01 |
US20140237209A1 (en) | 2014-08-21 |
EP2784670A1 (en) | 2014-10-01 |
EP2784670B1 (en) | 2019-03-06 |
CN103136110B (zh) | 2016-03-30 |
WO2014124576A1 (zh) | 2014-08-21 |
US20140258669A1 (en) | 2014-09-11 |
US9026766B2 (en) | 2015-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103136110A (zh) | 内存管理方法、内存管理装置及numa系统 | |
CN110427284B (zh) | 数据处理方法、分布式系统、计算机系统和介质 | |
CN102282544A (zh) | 存储系统 | |
CN103324533A (zh) | 分布式数据处理方法、装置及系统 | |
CN105339929A (zh) | 选择用于取消重复数据的存储 | |
CN102156738A (zh) | 数据块处理方法、数据块存储设备及系统 | |
CN108363641B (zh) | 一种主备机数据传递方法、控制节点以及数据库系统 | |
CN102308274B (zh) | 一种访问关机硬盘的方法、网卡和硬盘卡 | |
CN103761190A (zh) | 数据处理方法及装置 | |
CN105045723A (zh) | 一种缓存数据处理方法、装置和系统 | |
CN106843773A (zh) | 存储方法和分布式存储系统 | |
CN106648440A (zh) | 操作存储设备的控制方法和存储设备 | |
CN107329704A (zh) | 一种缓存镜像方法及控制器 | |
CN103049392A (zh) | 缓存目录的实现方法及装置 | |
US6721612B2 (en) | Method and system for installing program in parallel computer system | |
CN104484134A (zh) | 分布式存储的磁盘分配方法及装置 | |
CN110134338A (zh) | 一种分布式存储系统及其数据冗余保护方法和相关设备 | |
CN103617024B (zh) | 一种并发数据处理方法、装置和系统 | |
CN108615077B (zh) | 一种应用于深度学习网络的缓存优化方法及装置 | |
CN103902472B (zh) | 基于内存芯片互连的内存访问处理方法、内存芯片及系统 | |
CN106164874A (zh) | 多核系统中数据访问者目录的访问方法及设备 | |
CN112099728B (zh) | 一种执行写操作、读操作的方法及装置 | |
CN102724301A (zh) | 云数据库系统以及云数据读写处理方法、设备 | |
CN105306614A (zh) | 地址管理方法、系统、地址管理器与本地地址管理装置 | |
CN104834644A (zh) | 一种自搜索存储装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |