CN104166597A - 一种分配远程内存的方法及装置 - Google Patents

一种分配远程内存的方法及装置 Download PDF

Info

Publication number
CN104166597A
CN104166597A CN201310186194.4A CN201310186194A CN104166597A CN 104166597 A CN104166597 A CN 104166597A CN 201310186194 A CN201310186194 A CN 201310186194A CN 104166597 A CN104166597 A CN 104166597A
Authority
CN
China
Prior art keywords
node
memory
internal memory
mid
contributor
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
Application number
CN201310186194.4A
Other languages
English (en)
Other versions
CN104166597B (zh
Inventor
张立新
侯锐
张柳航
张科
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
Original Assignee
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd, Institute of Computing Technology of CAS filed Critical Huawei Technologies Co Ltd
Priority to CN201310186194.4A priority Critical patent/CN104166597B/zh
Priority to PCT/CN2014/075674 priority patent/WO2014183531A1/zh
Publication of CN104166597A publication Critical patent/CN104166597A/zh
Application granted granted Critical
Publication of CN104166597B publication Critical patent/CN104166597B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/502Proximity

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明实施例公开了一种分配远程内存的方法及装置,用于服务器节点集群,所述方法包括:建立节点分布表,所述节点分布表包括每个节点可贡献内存大小以及各节点之间的连接关系;当有节点作为请求者请求分配远程内存时,在所述节点分布表内以所述请求者为中心、根据距离由近及远寻找可以作为贡献者的节点并为所述请求者分配远程内存,所述距离包括其他节点到所述请求者的路由的跳数。本发明实施例首先创建可以体现出各服务器节点的物理位置及可贡献内存大小的节点分布表,然后按照最短路径优先的思路为请求者分配远程内存,不但使请求者可以获取到所需的内存容量,更使得所获取到的内存因为最短路径的优势在使用时效率更高。

Description

一种分配远程内存的方法及装置
技术领域
本发明涉及云计算领域,尤其是涉及一种分配远程内存的方法及装置。
背景技术
云计算产生的背景之一,便是帮助企业来处理海量的数据,越来越多的数据也需要云计算的产品来帮助进行实时分析。而在做海量数据处理时,需要有大内存容量的机器,所以云计算负载应用对大内存有强烈需求。而另一方面,云计算所借助的数据中心根据规模不同,通常由几十台、几百台、甚至上万台计算机服务器节点组成,这些服务器节点大部分都是采用市场上的商用标准服务器,它们拥有各自独立的处理器、私有的内存区域以及独占的硬盘存储空间。显然单台的服务器节点是无法满足云计算对内存的需要的,而当在集群范围内实现了各个服务器节点可以使用其他远程节点的内存时,具体该如何在众多的节点范围内合理、高效地分配远程内存,是一个不小的难题。
发明内容
有鉴于此,本发明实施例的目的是提供一种分配远程内存的方法及装置,以解决集群范围内无法高效地分配远程内存的问题。
一方面,本发明实施例提供了一种分配远程内存的方法,用于服务器节点集群,所述方法包括:
建立节点分布表,所述节点分布表包括每个节点可贡献内存大小以及各节点之间的连接关系;
判断是否有节点作为请求者请求分配远程内存,
若有,则在所述节点分布表内以所述请求者为中心、根据距离由近及远寻找可以作为贡献者的节点并为所述请求者分配远程内存,所述距离包括其他节点到所述请求者的路由的跳数。
优选的,所述根据距离由近及远寻找可以作为贡献者的节点并为所述请求者分配远程内存,包括:
a、判断距离所述请求者≤i跳范围内的周边节点可贡献内存的总和是否大于等于所述请求者请求的内存,若是,则继续步骤b,若否,则令i增1,并执行步骤a,其中i为自然数且初始时i=1;
b、将所述周边节点按照可贡献内存从小到大排序;
c、按照所述从小到大的顺序判断所述周边节点中是否存在可以单独或共同提供请求者所需内存的一个或多个周边节点以作为贡献者,若存在,则将所述贡献者可以贡献的内存分配给所述请求者,若不存在,则令i增1,执行步骤a。
优选的,所述按照所述从小到大的顺序依次判断所述周边节点中是否存在可以单独或共同提供请求者所需内存的一个或多个周边节点以作为贡献者,包括:
按照所述从小到大的顺序,逐一将所述周边节点的可贡献内存与所述请求者所请求的内存进行比较;
若所述请求的内存小于等于所述周边节点中一节点可贡献的内存,则停止比较,并将这一节点作为所述贡献者;
若所述请求的内存均大于所述周边节点中任一节点可贡献的内存,则在所述周边节点中选择两个或多个节点共同贡献内存,以满足所述请求的内存容量,并将所选择的两个或多个节点作为所述贡献者,其中所述选择的选择策略为保证所选节点的数目最少。
优选的,所述方法还包括:
在步骤a之前,判断i是否达到预设的阈值,若是,则停止执行并返回申请失败信息。
优选的,所述方法还包括:
在所述为所述请求者分配远程内存之后,通知所述贡献者已贡献给所述请求者的内存大小,并在所述节点分布表中更改所述贡献者可贡献的内存大小。
优选的,所述方法还包括:
在所述建立节点分布表之后,周期性地向所述服务节点集群内的各个节点发送状态请求信号;
若节点返回正常心跳信号,则在所述节点分布表中维持该节点的存在,否则,从所述节点分布表中删除该节点。
优选的,所述方法还包括:
在所述为所述请求者分配远程内存之后,接收所述请求者发送的获取所分配的远程内存的请求没有获得响应的消息;
根据所述方法重新为所述请求者寻找贡献者并分配远程内存。
另一方面,本发明实施例还提供了一种分配远程内存的装置,用于服务器节点集群,所述装置包括:
节点分布表建立单元,用于建立节点分布表,所述节点分布表包括每个节点可贡献内存大小以及各节点之间的连接关系;
内存请求判断单元,用于判断是否有节点作为请求者请求分配远程内存,若有,则触发内存分配单元;
内存分配单元,用于在所述节点分布表内以所述请求者为中心、根据距离由近及远寻找可以作为贡献者的节点并为所述请求者分配远程内存,所述距离包括其他节点到所述请求者的路由的跳数。
优选的,所述内存分配单元包括:
内存总和判断子单元,用于判断距离所述请求者≤i跳范围内的周边节点可贡献内存的总和是否大于等于所述请求者请求的内存,若是,则触发节点排序子单元,若否,则触发控制子单元,其中i为自然数且初始时i=1;
节点排序子单元,用于将所述周边节点按照可贡献内存从小到大排序;
内存选择子单元,用于按照所述从小到大的顺序判断所述周边节点中是否存在可以单独或共同提供请求者所需内存的一个或多个周边节点以作为贡献者,若存在,则将所述贡献者可以贡献的内存分配给所述请求者,若不存在,则触发控制子单元;
流程控制子单元,用于令i增1,然后触发内存总和判断子单元。
优选的,所述内存选择子单元用于按照所述从小到大的顺序依次判断所述周边节点中是否存在可以单独或共同提供请求者所需内存的一个或多个周边节点以作为贡献者时,具体用于:
按照所述从小到大的顺序,逐一将所述周边节点的可贡献内存与所述请求者所请求的内存进行比较;
若所述请求的内存小于等于所述周边节点中一节点可贡献的内存,则停止比较,并将这一节点作为所述贡献者;
若所述请求的内存均大于所述周边节点中任一节点可贡献的内存,则在所述周边节点中选择两个或多个节点共同贡献内存,以满足所述请求的内存容量,并将所选择的两个或多个节点作为所述贡献者,其中所述选择的选择策略为保证所选节点的数目最少。
优选的,所述内存分配单元还包括:
结束判断子单元,用于在触发内存总和判断子单元之前判断i是否达到预设的阈值,若是,则停止执行并返回申请失败信息。
优选的,所述装置还包括:
内存变更响应单元,用于通知所述贡献者已贡献给所述请求者的内存大小,并在所述节点分布表中更改所述贡献者可贡献的内存大小。
优选的,所述装置还包括:
节点维护单元,用于周期性地向所述服务节点集群内的各个节点发送状态请求信号,若节点返回正常心跳信号,则在所述节点分布表中维持该节点的存在,否则,从所述节点分布表中删除该节点。
优选的,所述装置还包括:
异常处理单元,用于接收所述请求者发送的请求获取所分配的远程内存的请求没有获得响应的消息,并重新触发内存分配单元。
本发明实施例首先通过资源管理系统创建并维护一张可以体现出集群内各服务器节点的物理位置及可贡献内存大小的节点分布表,然后在分配远程内存的时候使用一种对物理位置敏感的分配策略,即考虑请求者和提供者之间的距离远近,按照最短路径优先的思路为请求者分配远程内存,从而不但使请求者可以获取到所需的内存容量,更使得所获取到的内存因为最短路径的优势在使用时效率更高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是基于云控制芯片的系统组件示意图;
图2是云控制芯片的组成与架构示意图;
图3是实现资源按需分配的示意图;
图4是本发明实例一方法的流程图;
图5是节点分布表拓扑结构示意图;
图6是按照由近及远地方式分配远程内存的详细流程图;
图7~11是本发明实施例二中执行各步骤时所对应的节点分布表变化示意图;
图12是本发明实施例三装置的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的方法是建立在集群范围内各服务器节点可以彼此借用远程内存这一基础之上的,故下面先对如何实现服务器节点之间借用远程内存做一个简要的说明:
在现有技术中,当需要借助远程内存时可以采用远程直接数据存取(RDMA)技术。RDMA让计算机可以直接存取其它计算机的内存,而不需要经过处理器耗时的传输,具有使一台计算机直接将数据通过网络传送到另一台计算机内存中的特性,它将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响。图1展示了RDMA数据流的传输示意过程。相比传统的缓冲区拷贝技术(Buffer copy)和带有DMA引擎的缓冲区拷贝技术(Buffer copy with DMA engine),RDMA技术通过消除外部存储器复制和文本交换操作,因而能腾出总线空间和CPU周期用于改进应用系统性能,从而减少对带宽和处理器开销的需要,显著降低了时延。
但是,RDMA是一种点对点协议,不但需要在每台服务器上均安装专用网卡(如高端以太网卡或者IB网卡),致使RDMA的硬件实现成本较高,而且更重要的是,RDMA技术并不能在数据中心中对远程内存资源进行合理地、高效地分配,即无法在集群范围内实现各个节点动态地使用其他远程节点的内存。
在本发明中,为了实现服务器节点之间可以借用远程内存,即为了实现在数据中心中动态分配资源特别是内存资源,本发明使所有节点都包含一颗云控制芯片,并使用相同的接口和系统中其它节点相连。一个板子上可以集成不同的处理器和其它部件。云控制芯片提供PCIe和自主设计的接口用来连接处理器芯片。自主设计的接口为处理器芯片和云控制芯片直接通信做了优化,用来连接自主可控的处理器芯片。PCIe接口可以连接任何带PCIe端口处理器芯片,它的通信效率受PCIe所限制,但是接纳市场上绝大部分的CPU芯片和GPU、FPGA等其他计算加速芯片。譬如,支持通用性的系统可以连接主流x86服务器芯片,支持高性能计算的系统可以连接GPU芯片。需要大内存的系统,可以按需采用“内存节点”。一个内存节点没有处理器芯片,只有一块或数块云控制芯片。可参见图1a、1b所示,图1a、1b均是基于云控制芯片的系统组件示意图,图1a为ARM计算节点,图1b为大容量内存节点。
本发明提出的远程内存使用方法和机制依靠云控制芯片和资源管理系统来实现。它们管理数据中心服务器系统中的计算、内存、互连等资源,形成计算云、内存云、IO云。云控制芯片主要由片上交换网络,一体化内存控制模块,I/O设备虚拟化控制器,硬件实现的通信协议栈,以及PCIe接口和服务处理核等模块组成,图2示出了云控制芯片的组成与架构。
本发明中,远程内存的使用通过软件API(Application ProgrammingInterface,应用程序编程接口)进行:首先通过向资源管理系统发起申请,通过互连网络,动态将多个节点间的资源有机组合起来,实现虚拟服务器;之后,一旦组合成功,这些物理资源被虚拟服务器独占式使用;在使用完毕后,需要将上述资源归还给资源管理系统。在硬件实现上,通过增加对应的硬件管理和地址翻译机制,以及高速I/O通信栈来保障远程的节点访问。
在此过程中,数据中心的资源管理系统可以集中位于某服务器节点或分布式管理,负责收集、管理、分配各个节点资源,包括各个节点贡献出来的内存资源,并对各个节点上云控制芯片内的RTLB(Remote TranslationLookaside Buffer:一种由本地物理地址至远程节点编号和远程节点物理地址的转换表)进行初始化、设置和更新等操作;本发明中,可向其他服务器节点提供或贡献内存容量的节点称为贡献节点或贡献者;由贡献节点提供数据中心范围内其他节点使用的内存空间称为被贡献内存;申请和使用这些被贡献内存的节点称为请求节点或请求者。
图3a、3b给出了实现资源按需分配的示意图。其中图3a示出了4台独立的传统计算机节点,而经过本发明以上技术处理后,各种资源通过整合分别形成计算云、内存云、存储云以及互连云,参见图3b所示。这样就不再有传统计算机节点的概念和边界。通过资源调度和按需分配,就形成了多台虚拟服务器。比如,图3b左侧虚线框内的资源形成了第一台虚拟服务器,而右侧虚线框形成的第二台虚拟服务器则与第一台进行了有效的资源调度和共享。
以上内容简要描述了本发明是如何使各节点之间能够使用远程内存,即如何使集群范围内的内存动态分配成为现实。那么接下来更进一步的,如何合理、高效地去分配远程内存,便是本发明要着重解决的问题。下面进行详细描述:
实施例一
参见图4,为本发明实例一方法的流程图,所述方法为一种分配远程内存的方法,其特征在于,用于服务器节点集群,所述方法包括:
S401、建立节点分布表,所述节点分布表包括每个节点可贡献内存大小以及各节点之间的连接关系。
在本实施例中,节点分布表包括每个节点可贡献内存大小以及各节点之间的连接关系,其中各节点之间的连接关系也可以说是各节点之间的拓扑结构。在本发明某些实施例中,这个节点分布表可以只有一张,而且保存在全局管理者(如资源管理系统)那里。而具体如何记录所述拓扑结构可以有很多种方式,例如:可以直接记录下所有节点间两两之间的连接关系;或者从每个节点出发,记录所有与该节点直接或间接相连的节点,甚至也可以只记录所有与该节点直连的节点(可以推出来所有节点间两两之间的连接关系)。在本实施例中,是由资源管理系统负责远程内存的分配,资源管理系统集中位于某服务器节点或分布式管理,负责收集、管理、分配各个节点资源,包括各个节点贡献出来的内存资源,并对各个节点上云控制芯片内的RTLB进行初始化、设置和更新等操作。在分配时的基本思路是考虑请求者和提供者之间的距离远近,即最短路径优先原则。涵盖全局的资源管理系统实时监控每个节点的参数(包括物理位置,内存使用情况,负载情况,健康状况等),然后依据请求者的物理位置来选取合适的内存提供者。资源管理者系统在满足一定距离范围内(如网络中若干hop之内的节点)去选取提供者提供内存。所述节点分布表用拓扑结构表示时可参见图5所示,图中Core1、Core2等代表各个服务器节点的处理器核,即CPU。
S402、判断是否有节点作为请求者请求分配远程内存。
S403、若有,则在所述节点分布表内以所述请求者为中心、根据距离由近及远寻找可以作为贡献者的节点并为所述请求者分配远程内存,所述距离包括其他节点到所述请求者的路由的跳数。
本实施例所述的距离,主要包括其他节点到所述请求者的路由的跳数(hop),或者也可以看成是通信转发的次数。在计算机网络中,一个hop是指从一个主机(或路由器)到下一个路由器。由于本发明使用内嵌路由功能的云控制芯片,因此hop在本发明中也可以指从一个服务器节点到下一个服务器节点。从拓扑结构的角度来看,两节点间的距离即将这两节点相连所经过的最少的边数,若只需要经过一条边,则这两节点即直接相连。在本发明某些实施例中,优选的所述根据距离由近及远寻找可以作为贡献者的节点并为所述请求者分配远程内存,可以具体包括:
a、判断距离所述请求者≤i跳范围内的周边节点可贡献内存的总和是否大于等于所述请求者请求的内存,若是,则继续步骤b,若否,则令i增1,并执行步骤a,其中i为自然数且初始时i=1;
b、将所述周边节点按照可贡献内存从小到大排序;
c、按照所述从小到大的顺序判断所述周边节点中是否存在可以单独或共同提供请求者所需内存的一个或多个周边节点以作为贡献者,若存在,则将所述贡献者可以贡献的内存分配给所述请求者,若不存在,则令i增1,执行步骤a。
在本发明某些实施例中,优选的步骤c中所述按照所述从小到大的顺序依次判断所述周边节点中是否存在可以单独或共同提供请求者所需内存的一个或多个周边节点以作为贡献者,可以具体包括:
按照所述从小到大的顺序,逐一将所述周边节点的可贡献内存容量与所述请求者所请求的内存容量进行比较;
若所述请求的内存容量小于等于所述周边节点中一节点可贡献的内存容量,则停止比较,并将这一节点作为所述贡献者;
若所述请求的内存容量均大于所述周边节点中任一节点可贡献的内存容量,则在所述周边节点中选择两个或多个节点共同贡献内存,以满足所述请求的内存容量,并将所选择的两个或多个节点作为所述贡献者,其中所述选择的选择策略为保证所选的节点的数目最少。
此外,在本发明某些实施例中,所述方法还可以包括:
在步骤a之前,判断i是否达到预设的阈值,若是,则停止执行并返回申请失败信息。
经过上面的叙述可以看出:首先是由请求节点发起远程内存请求,内含请求的内存容量。然后资源管理系统先查找距离请求节点一跳的周边邻近节点,将邻近节点中可被贡献内存的信息进行统计,并按容量从小至大排序,可以避免内存的浪费。如果一跳的邻近节点中被贡献内存的总容量大于或等于请求容量,则将请求内存容量与可贡献内存容量从小至大进行逐一比较:如果请求内存容量小于某节点的可贡献内存容量,则停止比较,并将此可贡献内存区域标记给请求节点;如果请求内存容量大于单一节点的可贡献内存容量,则在一跳的邻近节点中选择两个或多个节点,共同贡献内存,以满足请求容量。选择策略,应尽量保证使用的贡献节点数目最小。如果一跳的邻近节点没有可贡献的内存空间或可贡献的内存总容量不足以满足请求总量,则资源管理系统查找距离请求节点两跳的周边节点,将一跳和两跳节点中可被贡献内存的信息进行统计,并按容量从小至大排序。如果一跳和两跳的邻近节点中被贡献内存的总容量大于或等于请求容量,则将请求内存容量与可贡献内存容量从小至大进行逐一比较,选择贡献节点,具体可依据上述“一跳内”的办法来选取。如果两跳距离内的节点依旧不能满足请求,则查找三跳、四跳、甚至更远的周边节点,依此类推,直至满足请求节点的请求或达到阈值。图6是按照以上由近及远地方式分配远程内存的详细流程图。
此外在本发明某些实施例中,所述方法还可以包括:
在所述为所述请求者分配远程内存之后,通知所述贡献者已贡献给所述请求者的内存容量,并在所述节点分布表中更改所述贡献者可贡献的内存容量。
在本发明某些实施例中,所述方法还可以包括:
在所述根据每个节点可贡献内存大小和物理位置建立节点分布表之后:
1)周期性地向所述服务节点集群内的各个节点发送状态请求信号;
2)若节点返回正常心跳信号,则在所述节点分布表中维持该节点的存在,否则,从所述节点分布表中删除该节点。换句话说,如果贡献节点没有返回应答信号(如此节点宕机),则资源管理系统可认为此贡献节点已经停止贡献,需要删除表中的相应条目。此外,如果有节点正在使用该节点的内存,则资源管理系统还需通使用节点。
在本发明某些实施例中,所述方法还可以包括:
在为所述请求者分配远程内存之后:
i)接收所述请求者发送的获取所分配的远程内存的请求没有获得响应的消息;
ii)根据所述方法重新为所述请求者寻找贡献者并分配远程内存。
换句话说,在资源管理系统发现贡献节点停止贡献(如发生了单点故障)之前,请求者可能已经发现向贡献者发出的远程内存请求没有获得响应,则请求者不再向此贡献者发出请求,同时通知资源管理系统,并请求在周边其他贡献节点中为其分配距离最近且满足容量需求的内存。以上1)~2)或i)~ii)可以分别使用或联合使用,形成本实施例的单点故障解决机制。
此外,在本发明某些实施例中可以再增加信息收集手段:由云控制芯片收集当前节点上的链路带宽利用率和内存利用率,然后通过云控制芯片传递上述信息至每个芯片中的服务处理器核,再由服务处理器核配合资源管理调度系统对带宽、内存等资源进行动态调度。
本实施例首先通过资源管理系统创建并维护一张可以体现出集群内各服务器节点的物理位置及可贡献内存大小的节点分布表,然后在分配远程内存的时候使用一种对物理位置敏感的分配策略,即考虑请求者和提供者之间的距离远近,按照最短路径优先的思路为请求者分配远程内存,从而不但使请求者可以获取到所需的内存容量,更使得所获取到的内存因为最短路径的优势在使用时效率更高。
实施例二
下面以上述实施例为基础并结合具体场景对本发明做进一步阐述,参见图7~图11所示,是本发明实施例二中执行各步骤时所对应的节点分布表变化示意图:
图7:某一时刻,Core6需要额外的8G内存,可是自身内存已经满足不了需求,于是向资源管理系统提出内存分配请求。资源管理系统根据各个节点与请求者的距离,将节点进行分类,可以分为1hop范围、2hop范围….。图中“空4G”表示本节点上有4G内存空余,“用4G”表示本节点上有4G内存正在被使用。
图8:资源管理系统首先从距离比较近的那类节点上申请物理内存分配给请求节点,并不要求某一个节点一次性满足请求,可以提供部分帮助,单位为1G。例如先向core2发出请求。
图9:Core2只能提供4G,提供后,Core2、Core6都得修改内存控制器当中的内存配置表,同时资源管理系统继续向Core5发出请求。
图10:Core5提供剩余4G给请求者,同时,Core5和Core6内存控制器中的内存配置表进行相应的更改。至此,一个分配任务结束,只要资源管理系统一次只处理一个分配任务,那么即可保证一致性。
图11:当Core6不再需要占用别人的物理内存时,向资源管理系统提出申请。资源管理系统通过Core6内存管理器当中的内存配置选项,释放相应节点的内存,Core2、Core5释放之前分配给Core6的内存,同时修改内存控制器当中的内存配置表。
本实施例首先通过资源管理系统创建并维护一张可以体现出集群内各服务器节点的物理位置及可贡献内存大小的节点分布表,然后在分配远程内存的时候使用一种对物理位置敏感的分配策略,即考虑请求者和提供者之间的距离远近,按照最短路径优先的思路为请求者分配远程内存,从而不但使请求者可以获取到所需的内存容量,更使得所获取到的内存因为最短路径的优势在使用时效率更高。
实施例三
图12是本发明实施例三装置的示意图,本实施例与上述两个方法实施例相对应,提供了一种分配远程内存的装置1200,用于服务器节点集群,所述装置1200包括:
节点分布表建立单元1201,用于建立节点分布表,所述节点分布表包括每个节点可贡献内存大小以及各节点之间的连接关系;
内存请求判断单元1202,用于判断是否有节点作为请求者请求分配远程内存,若有,则触发内存分配单元1203;
内存分配单元1203,用于在所述节点分布表内以所述请求者为中心、根据距离由近及远寻找可以作为贡献者的节点并为所述请求者分配远程内存,所述距离包括其他节点到所述请求者的路由的跳数。
优选的,所述内存分配单元1203具体可以包括:
内存总和判断子单元,用于判断距离所述请求者≤i跳范围内的周边节点可贡献内存的总和是否大于等于所述请求者请求的内存,若是,则触发节点排序子单元,若否,则触发控制子单元,其中i为自然数且初始时i=1;
节点排序子单元,用于将所述周边节点按照可贡献内存从小到大排序;
内存选择子单元,用于按照所述从小到大的顺序判断所述周边节点中是否存在可以单独或共同提供请求者所需内存的一个或多个周边节点以作为贡献者,若存在,则将所述贡献者可以贡献的内存分配给所述请求者,若不存在,则触发控制子单元;
流程控制子单元,用于令i增1,然后触发内存总和判断子单元。
优选的,所述内存选择子单元用于按照所述从小到大的顺序依次判断所述周边节点中是否存在可以单独或共同提供请求者所需内存的一个或多个周边节点以作为贡献者时,具体用于:
按照所述从小到大的顺序,逐一将所述周边节点的可贡献内存与所述请求者所请求的内存进行比较;
若所述请求的内存小于等于所述周边节点中一节点可贡献的内存,则停止比较,并将这一节点作为所述贡献者;
若所述请求的内存均大于所述周边节点中任一节点可贡献的内存,则在所述周边节点中选择两个或多个节点共同贡献内存,以满足所述请求的内存容量,并将所选择的两个或多个节点作为所述贡献者,其中所述选择的选择策略为保证所选节点的数目最少。
优选的,所述内存分配单元1203具体还可以包括:
结束判断子单元,用于在触发内存总和判断子单元之前判断i是否达到预设的阈值,若是,则停止执行并返回申请失败信息。
优选的,所述装置1200还可以包括:
内存变更响应单元1204,用于通知所述贡献者已贡献给所述请求者的内存大小,并在所述节点分布表中更改所述贡献者可贡献的内存大小。
优选的,所述装置1200还可以包括:
节点维护单元1205,用于周期性地向所述服务节点集群内的各个节点发送状态请求信号,若节点返回正常心跳信号,则在所述节点分布表中维持该节点的存在,否则,从所述节点分布表中删除该节点。
优选的,所述装置1200还可以包括:
异常处理单元1206,用于接收所述请求者发送的请求获取所分配的远程内存的请求没有获得响应的消息,并重新触发内存分配单元。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本实施例首先通过资源管理系统创建并维护一张可以体现出集群内各服务器节点的物理位置及可贡献内存大小的节点分布表,然后在分配远程内存的时候使用一种对物理位置敏感的分配策略,即考虑请求者和提供者之间的距离远近,按照最短路径优先的思路为请求者分配远程内存,从而不但使请求者可以获取到所需的内存容量,更使得所获取到的内存因为最短路径的优势在使用时效率更高。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM、RAM、磁碟、光盘等。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。本文中应用了具体个例对本发明的原理及实施方式进行了闸述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (14)

1.一种分配远程内存的方法,用于服务器节点集群,其特征在于,所述方法包括:
建立节点分布表,所述节点分布表包括每个节点可贡献内存大小以及各节点之间的连接关系;
判断是否有节点作为请求者请求分配远程内存,
若有,则在所述节点分布表内以所述请求者为中心、根据距离由近及远寻找可以作为贡献者的节点并为所述请求者分配远程内存,所述距离包括其他节点到所述请求者的路由的跳数。
2.根据权利要求1所述的方法,其特征在于,所述根据距离由近及远寻找可以作为贡献者的节点并为所述请求者分配远程内存,包括:
a、判断距离所述请求者≤i跳范围内的周边节点可贡献内存的总和是否大于等于所述请求者请求的内存,若是,则继续步骤b,若否,则令i增1,并执行步骤a,其中i为自然数且初始时i=1;
b、将所述周边节点按照可贡献内存从小到大排序;
c、按照所述从小到大的顺序判断所述周边节点中是否存在可以单独或共同提供请求者所需内存的一个或多个周边节点以作为贡献者,若存在,则将所述贡献者可以贡献的内存分配给所述请求者,若不存在,则令i增1,执行步骤a。
3.根据权利要求2所述的方法,其特征在于,所述按照所述从小到大的顺序依次判断所述周边节点中是否存在可以单独或共同提供请求者所需内存的一个或多个周边节点以作为贡献者,包括:
按照所述从小到大的顺序,逐一将所述周边节点的可贡献内存与所述请求者所请求的内存进行比较;
若所述请求的内存小于等于所述周边节点中一节点可贡献的内存,则停止比较,并将这一节点作为所述贡献者;
若所述请求的内存均大于所述周边节点中任一节点可贡献的内存,则在所述周边节点中选择两个或多个节点共同贡献内存,以满足所述请求的内存容量,并将所选择的两个或多个节点作为所述贡献者,其中所述选择的选择策略为保证所选节点的数目最少。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在步骤a之前,判断i是否达到预设的阈值,若是,则停止执行并返回申请失败信息。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述为所述请求者分配远程内存之后,通知所述贡献者已贡献给所述请求者的内存大小,并在所述节点分布表中更改所述贡献者可贡献的内存大小。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述建立节点分布表之后,周期性地向所述服务节点集群内的各个节点发送状态请求信号;
若节点返回正常心跳信号,则在所述节点分布表中维持该节点的存在,否则,从所述节点分布表中删除该节点。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述为所述请求者分配远程内存之后,接收所述请求者发送的获取所分配的远程内存的请求没有获得响应的消息;
根据所述方法重新为所述请求者寻找贡献者并分配远程内存。
8.一种分配远程内存的装置,用于服务器节点集群,其特征在于,所述装置包括:
节点分布表建立单元,用于建立节点分布表,所述节点分布表包括每个节点可贡献内存大小以及各节点之间的连接关系;
内存请求判断单元,用于判断是否有节点作为请求者请求分配远程内存,若有,则触发内存分配单元;
内存分配单元,用于在所述节点分布表内以所述请求者为中心、根据距离由近及远寻找可以作为贡献者的节点并为所述请求者分配远程内存,所述距离包括其他节点到所述请求者的路由的跳数。
9.根据权利要求8所述的装置,其特征在于,所述内存分配单元包括:
内存总和判断子单元,用于判断距离所述请求者≤i跳范围内的周边节点可贡献内存的总和是否大于等于所述请求者请求的内存,若是,则触发节点排序子单元,若否,则触发控制子单元,其中i为自然数且初始时i=1;
节点排序子单元,用于将所述周边节点按照可贡献内存从小到大排序;
内存选择子单元,用于按照所述从小到大的顺序判断所述周边节点中是否存在可以单独或共同提供请求者所需内存的一个或多个周边节点以作为贡献者,若存在,则将所述贡献者可以贡献的内存分配给所述请求者,若不存在,则触发控制子单元;
流程控制子单元,用于令i增1,然后触发内存总和判断子单元。
10.根据权利要求9所述的装置,其特征在于,所述内存选择子单元用于按照所述从小到大的顺序依次判断所述周边节点中是否存在可以单独或共同提供请求者所需内存的一个或多个周边节点以作为贡献者时,具体用于:
按照所述从小到大的顺序,逐一将所述周边节点的可贡献内存与所述请求者所请求的内存进行比较;
若所述请求的内存小于等于所述周边节点中一节点可贡献的内存,则停止比较,并将这一节点作为所述贡献者;
若所述请求的内存均大于所述周边节点中任一节点可贡献的内存,则在所述周边节点中选择两个或多个节点共同贡献内存,以满足所述请求的内存容量,并将所选择的两个或多个节点作为所述贡献者,其中所述选择的选择策略为保证所选节点的数目最少。
11.根据权利要求9所述的装置,其特征在于,所述内存分配单元还包括:
结束判断子单元,用于在触发内存总和判断子单元之前判断i是否达到预设的阈值,若是,则停止执行并返回申请失败信息。
12.根据权利要求8所述的装置,其特征在于,所述装置还包括:
内存变更响应单元,用于通知所述贡献者已贡献给所述请求者的内存大小,并在所述节点分布表中更改所述贡献者可贡献的内存大小。
13.根据权利要求8所述的装置,其特征在于,所述装置还包括:
节点维护单元,用于周期性地向所述服务节点集群内的各个节点发送状态请求信号,若节点返回正常心跳信号,则在所述节点分布表中维持该节点的存在,否则,从所述节点分布表中删除该节点。
14.根据权利要求8所述的装置,其特征在于,所述装置还包括:
异常处理单元,用于接收所述请求者发送的请求获取所分配的远程内存的请求没有获得响应的消息,并重新触发内存分配单元。
CN201310186194.4A 2013-05-17 2013-05-17 一种分配远程内存的方法及装置 Active CN104166597B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201310186194.4A CN104166597B (zh) 2013-05-17 2013-05-17 一种分配远程内存的方法及装置
PCT/CN2014/075674 WO2014183531A1 (zh) 2013-05-17 2014-04-18 一种分配远程内存的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310186194.4A CN104166597B (zh) 2013-05-17 2013-05-17 一种分配远程内存的方法及装置

Publications (2)

Publication Number Publication Date
CN104166597A true CN104166597A (zh) 2014-11-26
CN104166597B CN104166597B (zh) 2018-07-03

Family

ID=51897678

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310186194.4A Active CN104166597B (zh) 2013-05-17 2013-05-17 一种分配远程内存的方法及装置

Country Status (2)

Country Link
CN (1) CN104166597B (zh)
WO (1) WO2014183531A1 (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572569A (zh) * 2015-01-21 2015-04-29 江苏微锐超算科技有限公司 基于arm和fpga的高性能计算节点及计算方法
CN105518611A (zh) * 2014-12-27 2016-04-20 华为技术有限公司 一种远程直接数据存取方法、设备和系统
CN105739965A (zh) * 2016-01-18 2016-07-06 深圳先进技术研究院 一种基于rdma的arm手机集群的组装方法
WO2016107135A1 (zh) * 2014-12-30 2016-07-07 中兴通讯股份有限公司 内存管理方法及系统和计算机存储介质
WO2016172862A1 (zh) * 2015-04-28 2016-11-03 华为技术有限公司 一种内存管理方法、设备和系统
WO2016201704A1 (zh) * 2015-06-19 2016-12-22 华为技术有限公司 一种光开关控制方法及装置
CN107908474A (zh) * 2017-10-27 2018-04-13 郑州云海信息技术有限公司 一种基于rdma协议的内存分配使用方法及系统
WO2019029236A1 (zh) * 2017-08-07 2019-02-14 华为技术有限公司 一种内存分配方法和服务器
CN111007987A (zh) * 2019-11-08 2020-04-14 苏州浪潮智能科技有限公司 一种用于raid io的内存管理方法、系统、终端及存储介质
CN111913907A (zh) * 2020-08-13 2020-11-10 上海钜成锐讯科技有限公司 一种fpga集群方法、fpga芯片和fpga集群系统
CN115495246A (zh) * 2022-09-30 2022-12-20 上海交通大学 分离式内存架构下的混合远内存调度方法
CN116436978A (zh) * 2023-06-13 2023-07-14 苏州浪潮智能科技有限公司 面向云计算的内存分配方法、内存获取方法、装置和设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001331547A (ja) * 2000-05-22 2001-11-30 Ge Toshiba Silicones Co Ltd 建造物目地設計方法、建造物目地設計システム、建造物目地設計サーバー動作方法、建造物目地設計サーバー、建造物目地設計クライアント動作方法、建造物目地設計クライアント、および建造物目地設計に対応するプログラムを記録したコンピュータ読み取り可能な記録媒体
US20050238035A1 (en) * 2004-04-27 2005-10-27 Hewlett-Packard System and method for remote direct memory access over a network switch fabric
CN101158927A (zh) * 2007-10-25 2008-04-09 中国科学院计算技术研究所 一种内存共享的系统和装置及方法
CN101277252A (zh) * 2007-03-30 2008-10-01 迈普(四川)通信技术有限公司 多分支Trie树的遍历方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001331457A (ja) * 2000-05-19 2001-11-30 Ricoh Co Ltd 分散共有メモリ方式

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001331547A (ja) * 2000-05-22 2001-11-30 Ge Toshiba Silicones Co Ltd 建造物目地設計方法、建造物目地設計システム、建造物目地設計サーバー動作方法、建造物目地設計サーバー、建造物目地設計クライアント動作方法、建造物目地設計クライアント、および建造物目地設計に対応するプログラムを記録したコンピュータ読み取り可能な記録媒体
US20050238035A1 (en) * 2004-04-27 2005-10-27 Hewlett-Packard System and method for remote direct memory access over a network switch fabric
CN101277252A (zh) * 2007-03-30 2008-10-01 迈普(四川)通信技术有限公司 多分支Trie树的遍历方法
CN101158927A (zh) * 2007-10-25 2008-04-09 中国科学院计算技术研究所 一种内存共享的系统和装置及方法

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105518611A (zh) * 2014-12-27 2016-04-20 华为技术有限公司 一种远程直接数据存取方法、设备和系统
CN105518611B (zh) * 2014-12-27 2019-10-25 华为技术有限公司 一种远程直接数据存取方法、设备和系统
WO2016107135A1 (zh) * 2014-12-30 2016-07-07 中兴通讯股份有限公司 内存管理方法及系统和计算机存储介质
CN105808448A (zh) * 2014-12-30 2016-07-27 中兴通讯股份有限公司 内存管理方法及系统
CN104572569A (zh) * 2015-01-21 2015-04-29 江苏微锐超算科技有限公司 基于arm和fpga的高性能计算节点及计算方法
WO2016172862A1 (zh) * 2015-04-28 2016-11-03 华为技术有限公司 一种内存管理方法、设备和系统
CN107003904A (zh) * 2015-04-28 2017-08-01 华为技术有限公司 一种内存管理方法、设备和系统
CN106471482B (zh) * 2015-06-19 2019-05-03 华为技术有限公司 一种光开关控制方法及装置
CN106471482A (zh) * 2015-06-19 2017-03-01 华为技术有限公司 一种光开关控制方法及装置
WO2016201704A1 (zh) * 2015-06-19 2016-12-22 华为技术有限公司 一种光开关控制方法及装置
US10439736B2 (en) 2015-06-19 2019-10-08 Huawei Technologies Co., Ltd. Optical switch control method, and apparatus
CN105739965A (zh) * 2016-01-18 2016-07-06 深圳先进技术研究院 一种基于rdma的arm手机集群的组装方法
CN105739965B (zh) * 2016-01-18 2019-03-05 深圳先进技术研究院 一种基于rdma的arm手机集群的组装方法
WO2019029236A1 (zh) * 2017-08-07 2019-02-14 华为技术有限公司 一种内存分配方法和服务器
CN109388490A (zh) * 2017-08-07 2019-02-26 杭州华为数字技术有限公司 一种内存分配方法和服务器
CN109388490B (zh) * 2017-08-07 2020-11-17 华为技术有限公司 一种内存分配方法和服务器
US11042412B2 (en) 2017-08-07 2021-06-22 Huawei Technologies Co., Ltd. Memory allocation method and server
CN107908474A (zh) * 2017-10-27 2018-04-13 郑州云海信息技术有限公司 一种基于rdma协议的内存分配使用方法及系统
CN111007987A (zh) * 2019-11-08 2020-04-14 苏州浪潮智能科技有限公司 一种用于raid io的内存管理方法、系统、终端及存储介质
CN111913907A (zh) * 2020-08-13 2020-11-10 上海钜成锐讯科技有限公司 一种fpga集群方法、fpga芯片和fpga集群系统
CN115495246A (zh) * 2022-09-30 2022-12-20 上海交通大学 分离式内存架构下的混合远内存调度方法
CN116436978A (zh) * 2023-06-13 2023-07-14 苏州浪潮智能科技有限公司 面向云计算的内存分配方法、内存获取方法、装置和设备
CN116436978B (zh) * 2023-06-13 2023-08-29 苏州浪潮智能科技有限公司 面向云计算的内存分配方法、内存获取方法、装置和设备

Also Published As

Publication number Publication date
WO2014183531A1 (zh) 2014-11-20
CN104166597B (zh) 2018-07-03

Similar Documents

Publication Publication Date Title
CN104166597A (zh) 一种分配远程内存的方法及装置
US11934883B2 (en) Computer cluster arrangement for processing a computation task and method for operation thereof
CN105408879B (zh) 快捷外围部件互连域的资源管理
US8230432B2 (en) Defragmenting blocks in a clustered or distributed computing system
CN108431796B (zh) 分布式资源管理系统和方法
WO2017072933A1 (ja) 計算機システムの管理システム及び管理方法
Srinivasan et al. Aerospike: Architecture of a real-time operational dbms
CN106453360B (zh) 基于iSCSI协议的分布式块存储数据访问方法及系统
US8112526B2 (en) Process migration based on service availability in a multi-node environment
CN102082692A (zh) 基于网络数据流向的虚拟机迁移方法、设备和集群系统
US11734172B2 (en) Data transmission method and apparatus using resources in a resource pool of a same NUMA node
JP6477266B2 (ja) ダンプ管理装置、ダンプ管理プログラム及びダンプ管理方法
CN105074674A (zh) 计算机系统以及资源管理方法
CN105242872A (zh) 一种面向虚拟集群的共享存储系统
KR20200080458A (ko) 클라우드 멀티-클러스터 장치
CN103810109A (zh) 内存分配方法、装置及系统
EP4184324A1 (en) Efficient accelerator offload in multi-accelerator framework
KR20180046078A (ko) 데이터베이스 리밸런싱 방법
US11956313B2 (en) Dynamic storage sharing across network devices
RU2721235C2 (ru) Способ и система для маршрутизации и выполнения транзакций
EP4109261A2 (en) Access processing method, device, storage medium and program product
JP2010527550A (ja) 共有イーサネット・ポート用の論理ポート・レベルにおいて帯域幅キャッピングを実装するための方法、装置及びコンピュータ・プログラム
EP3602309B1 (en) A memory allocation manager and method performed thereby for managing memory allocation
US10824640B1 (en) Framework for scheduling concurrent replication cycles
US20240160487A1 (en) Flexible gpu resource scheduling method in large-scale container operation environment

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant