CN116436978B - 面向云计算的内存分配方法、内存获取方法、装置和设备 - Google Patents
面向云计算的内存分配方法、内存获取方法、装置和设备 Download PDFInfo
- Publication number
- CN116436978B CN116436978B CN202310695558.5A CN202310695558A CN116436978B CN 116436978 B CN116436978 B CN 116436978B CN 202310695558 A CN202310695558 A CN 202310695558A CN 116436978 B CN116436978 B CN 116436978B
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- remote memory
- matching
- contribution
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 556
- 238000000034 method Methods 0.000 title claims abstract description 127
- 238000004891 communication Methods 0.000 claims abstract description 122
- 238000011156 evaluation Methods 0.000 claims abstract description 54
- 238000012216 screening Methods 0.000 claims abstract description 42
- 235000008694 Humulus lupulus Nutrition 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 2
- 230000000694 effects Effects 0.000 abstract description 16
- 238000013468 resource allocation Methods 0.000 abstract description 7
- 238000013467 fragmentation Methods 0.000 abstract description 5
- 238000006062 fragmentation reaction Methods 0.000 abstract description 5
- 230000008569 process Effects 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000000737 periodic effect Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000010387 memory retrieval Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/52—Network services specially adapted for the location of the user terminal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Abstract
本发明公开了一种面向云计算的内存分配方法、内存获取方法、装置和设备,该方法包括:接收在预设时间内来自不同节点的请求消息,根据请求方节点的标识和请求远程内存资源大小,对集群中的节点分别进行通信性能和内存资源大小的筛选,为每个请求方节点确定出一个贡献节点集合,建立不同请求方节点与不同贡献节点集合内的贡献方节点之间的匹配关系,生成至少两个有效匹配组合,计算集合中每个有效匹配组合的评价指标值;确定目标有效匹配组合,并按照目标效匹配组合为每个请求方节点提供远程内存资源。本方法为远程内存贡献节点与请求节点找到最优的内存资源分配组合,避免远程内存碎片化,使得远程内存空间高效利用、系统综合效果较优。
Description
技术领域
本发明涉及计算机领域,尤其是涉及一种面向云计算的内存分配方法、内存获取方法、装置和设备。
背景技术
云计算通常是由数十台、数百台、甚至上万台计算机服务器节点组成,这些服务器节点大部分是采用商用标准服务器,它们拥有各自独立的处理器、内存和硬盘存储空间。随着大数据分析和人工智能的发展,应用程序需要的内存越来越大。单台服务器节点无法满足应用程序对内存的需要,因此考虑使用其他服务器节点的远程内存,从众多的节点范围内合理、高效地选择一个或多个节点作为贡献方为请求方节点提供内存资源。
目前,采用的一种分配远程内存的方法,主要是以请求方节点为中心、根据距离由近及远寻找可以作为贡献方节点,并为请求方节点分配远程内存。但这种方法会导致多个通信距离近的内存贡献方节点一起共同满足一个内存请求方节点的需求的情况,引起系统管理复杂。另外,该方法需逐个对内存请求方节点进行内存分配,并不考虑后续的其他内存请求方节点和贡献方的内存分配情况,导致系统整体分配结果效果不佳。
发明内容
有鉴于此,本发明提供了一种面向云计算的内存分配方法、装置、设备及存储介质,以解决上述为请求方节点分配远程内存资源导致分配效果不佳的问题。
第一方面,本发明提供了一种面向云计算的内存分配方法,该方法包括:
接收在预设时间内来自不同节点的请求消息,每个请求消息用于请求获取远程内存资源,每个请求消息中包括:请求方节点的标识和请求远程内存资源大小;
根据请求方节点的标识和请求远程内存资源大小,对集群中的节点分别进行通信性能和内存资源大小的筛选,为每个请求方节点确定出一个贡献节点集合,每个贡献节点集合中包括至少一个贡献方节点;
建立不同请求方节点与不同贡献节点集合内的贡献方节点之间的匹配关系,生成至少两个有效匹配组合,其中,每个有效匹配组合包含多个匹配关系,每个匹配关系为一个请求方节点与为其提供远程内存资源的一个贡献方节点之间的绑定关系;
计算每个有效匹配组合的评价指标值,比较所有评价指标;
根据评价指标值确定目标评价指标,以及根据所述目标有效匹配组合为不同节点请求方节点提供远程内存资源。
结合第一方面,在第一方面的一种可能的实施方式中,根据请求方节点的标识和请求远程内存资源大小,对集群中的节点进行通信性能的筛选,包括:根据请求方节点的标识在集群的节点拓扑信息表中筛选出符合通信性能要求的一个或多个贡献方节点,得到第一贡献节点集合。
结合第一方面,在第一方面的另一种可能的实施方式中,根据请求方节点请求的远程资源内存大小,对集群中的节点进行内存资源大小的筛选,为请求方节点确定出一个贡献节点集合,包括:在第一贡献节点集合中筛选满足当前请求方节点所需的远程内存资源大小的一个或多个贡献方节点,并对所述筛选的一个或多个贡献方节点按照预设规则排序得到第二贡献节点集合。
结合第一方面,在第一方面的又一种可能的实施方式中,根据请求方节点的标识在集群的节点拓扑信息表中筛选出符合通信性能要求的一个或多个贡献方节点,包括:
建立节点拓扑信息表,节点拓扑信息表包括:集群中每个节点的节点信息、各个节点之间的连接关系、节点之间的通信延迟参数、通信带宽参数和节点可贡献的内存资源;根据请求方节点的标识确定请求方节点的位置;根据请求方节点的位置在所述节点拓扑信息表中筛选出符合通信性能要求,并且符合通信距离要求的一个或多个贡献方节点。
结合第一方面,在第一方面的又一种可能的实施方式中,筛选出符合通信性能要求的一个或多个贡献方节点,包括:筛选当前请求方节点与当前贡献方节点之间的通信距离不超过预设通信距离。
其中,通信距离为当前请求方节点与当前贡献方节点的每一跳路由通信距离和,每一跳路由的通信距离为该段通信延迟参数与通信带宽参数之积。
结合第一方面,在第一方面的又一种可能的实施方式中,建立不同请求方节点与至少一个贡献节点集合内的贡献方节点之间的匹配关系,生成至少一个有效匹配组合的集合,包括:
获取第i个请求方节点所请求的远程内存资源大小Ei,以及为所述第i个请求方节点筛选的贡献节点集合,所述贡献节点集合中包括m个贡献方节点,m个节点中的任一个节点的内存资源大小为Pj,m≥1且为正整数;
采用枚举法根据所述第i个请求方节点所请求的远程内存资源Ei和贡献方节点的内存资源Pj按照规则建立两个或两个以上匹配关系,生成至少两个有效匹配组合。
结合第一方面,在第一方面的又一种可能的实施方式中,采用枚举法根据所述第i个请求方节点所请求的远程内存资源Ei和贡献方节点的内存资源Pj按照规则建立两个或两个以上匹配关系,包括:按照以下规则根据第i个请求方节点所请求的远程内存资源Ei和贡献方的内存资源Pj建立匹配关系:
如果满足,则为第i个请求方节点分配远程内存资源大小为Ei,
如果不满足,则为第i个请求方节点分配远程内存资源大小为Pj。
结合第一方面,在第一方面的又一种可能的实施方式中,计算每个有效匹配组合的评价指标值,包括:根据第i个请求方节点申请的远程内存资源Ei和实际分配远程内存Ri,以及通信路由跳数计算每个有效匹配组合的评价指标值。
结合第一方面,在第一方面的又一种可能的实施方式中,根据第i个请求方节点申请的远程内存资源Ei和实际分配远程内存Ri,以及通信路由跳数计算每个有效匹配组合的评价指标值,包括:利用预设关系式计算每个有效匹配组合的评价指标值;预设关系式为:
其中,Ok为第k个有效匹配组合对应的评价指标值,Ei为第i个请求方节点所请求的远程内存资源大小,Ri为第i个请求方节点实际分配的远程内存资源大小,Wi为远程内存请求方节点与远程内存贡献方节点之间的路由跳数,n为匹配关系数。
结合第一方面,在第一方面的又一种可能的实施方式中,建立节点拓扑信息表之后,还包括:建立集群中包含每个节点的数组单元,其中每个数组单元中包括:一个链表指针、可贡献内存资源的大小、节点类型;设置每个数组单元的索引,索引为每个节点的节点号;根据每个节点的数组单元和每个数组单元的索引以及节点连接关系,生成节点拓扑图。
结合第一方面,在第一方面的又一种可能的实施方式中,方法还包括:周期性地与集群中各个节点通信,并获取每个节点的可贡献内存资源大小以及是否有远程内存需求;如果贡献方节点的内存资源发生变化,或有远程内存需求,则记录并更新节点拓扑信息表。
结合第一方面,在第一方面的又一种可能的实施方式中,方法还包括:如果满足,则将贡献方节点的内存资源Pj拆分成两个或两个以上部分,其中,一部分内存资源用于提供给当前请求方节点,剩余部分内存资源用于提供给其他请求方节点。
结合第一方面,在第一方面的又一种可能的实施方式中,方法还包括:将目标有效分配组合的指示消息发送给不同的请求方节点和对应的各个贡献方节点,以及记录和更新节点拓扑信息表。
第二方面,本发明还提供了一种面向云计算的内存分配方法,方法包括:
接收在预设时间内来自不同节点的请求消息,每个请求消息用于请求获取远程内存资源,每个请求消息中包括:请求方节点的标识和请求远程内存资源大小;
根据请求方节点的标识和请求远程内存资源大小,对集群中的节点分别进行通信性能和内存资源大小的筛选,为每个请求方节点确定出一个贡献节点集合,每个贡献节点集合中包括至少一个贡献方节点;
建立不同请求方节点与不同贡献节点集合内的贡献方节点之间的匹配关系,生成至少两个有效匹配组合,其中,每个有效匹配组合包含多个匹配关系,每个所述匹配关系为一个请求方节点与为其提供远程内存资源的一个贡献方节点之间的绑定关系;
将所述至少两个有效匹配组合发送至不同的请求方节点,以使每个请求方节点选择目标有效匹配组合并获取远程内存资源。
第三方面,本发明还提供了一种面向云计算的内存获取方法,方法包括:
第一节点生成第一请求消息,所述第一请求消息包括:第一节点的标识和第一节点请求获取的远程内存资源大小;
第一节点发送第一请求消息给控制器;
第一节点接收控制器根据所述第一请求消息反馈的目标有效匹配组合,所述目标有效组合包括所述第一节点与为其提供远程内存资源的贡献方节点之间的绑定关系;
第一节点根据所述目标有效匹配组合获取所述贡献方节点提供的远程内存资源。
第四方面,本发明还提供了一种面向云计算的内存获取方法,方法包括:
第二节点生成第二请求消息,所述第二请求消息包括:第二节点的标识和第二节点请求获取的远程内存资源大小;
第二节点发送第二请求消息给控制器;
第二节点接收控制器根据所述第二请求消息反馈的至少两个有效匹配组合,其中,每个有效匹配组合包含多个匹配关系,每个所述匹配关系为一个请求方节点与为其提供远程内存资源的一个贡献方节点之间的绑定关系;
所述第二节点在所述至少两个有效匹配组合中确定目标有效匹配组合,并根据所述目标有效匹配组合获取贡献方节点提供的远程内存资源。
第五方面,本发明还提供了一种面向云计算的内存分配装置,装置包括:
第一接收模块,用于接收在预设时间内来自不同节点的请求消息,每个请求消息用于请求获取远程内存资源,每个请求消息中包括:请求方节点的标识和请求远程内存资源大小;
第一确定模块,用于根据请求方节点的标识和请求远程内存资源大小,对集群中的节点分别进行通信性能和内存资源大小的筛选,为每个请求方节点确定出一个贡献节点集合,贡献节点集合中包括至少一个贡献方节点;
第一匹配模块,用于建立不同请求方节点与不同贡献节点集合内的两个或两个以上贡献方节点之间的匹配关系,生成至少两个有效匹配组合的集合,其中,每个有效匹配组合包含多个匹配关系,每个匹配关系为一个请求方节点与为其提供远程内存资源的一个贡献方节点之间的绑定关系;
第一计算模块,用于计算每个有效匹配组合的评价指标值,并比较所有评价指标值;
第一确定模块,还用于根据评价指标值确定目标有效匹配组合,以及根据所述目标有效匹配组合为每个请求方节点提供远程内存资源。
第六方面,本发明还提供了一种面向云计算的内存分配装置,装置包括:
第二接收模块,用于接收在预设时间内来自不同节点的请求消息,每个请求消息用于请求获取远程内存资源,每个请求消息中包括:请求方节点的标识和请求远程内存资源大小;
第二确定模块,用于根据请求方节点的标识和请求远程内存资源大小,对集群中的节点分别进行通信性能和内存资源大小的筛选,为每个请求方节点确定出一个贡献节点集合,每个贡献节点集合中包括至少一个贡献方节点;
第二匹配模块,用于建立不同请求方节点与不同贡献节点集合内的贡献方节点之间的匹配关系,生成至少两个有效匹配组合,其中,每个有效匹配组合包含多个匹配关系,每个所述匹配关系为一个请求方节点与为其提供远程内存资源的一个贡献方节点之间的绑定关系;
第二发送模块,用于将所述至少两个有效匹配组合发送至不同的请求方节点,以使每个请求方节点选择目标有效匹配组合并获取远程内存资源。
第七方面,本发明还提供了一种内存分配系统,系统包括控制器和计算机集群,计算机集群中包括多个节点,多个节点中的部分节点为请求方节点,部分节点为贡献方节点;
一个或多个请求方节点向控制器发送请求消息,每个请求消息用于请求获取远程内存资源,每个请求消息中包括:请求方节点的标识和请求远程内存资源大小;
控制器接收在预设时间段内来自不同节点的请求消息,根据请求方节点的标识和请求远程内存资源大小,对集群中的节点分别进行通信性能和内存资源大小的筛选,为每个请求方节点确定出一个贡献节点集合,每个贡献节点集合中包括至少一个贡献方节点;
控制器建立不同请求方节点与不同贡献节点集合内的贡献方节点之间的匹配关系,生成至少两个有效匹配组合,其中,每个有效匹配组合包含多个匹配关系,每个所述匹配关系为一个请求方节点与为其提供远程内存资源的一个贡献方节点之间的绑定关系;以及将所述至少两个有效匹配组合发送至不同的请求方节点。
多个请求方节点中的第一节点接收控制器根据第一请求消息反馈的目标有效匹配组合,该目标有效组合包括所述第一节点与为其提供远程内存资源的贡献方节点之间的绑定关系;并根据目标有效匹配组合获取贡献方节点提供的远程内存资源。
结合第七方面,在第七方面的一种可能的实施方式中,控制器还建立节点拓扑信息表,所述节点拓扑信息表中包括:计算机集群中相连的每个节点信息、各节点之间的连接关系、节点之间的通讯延迟参数和通信带宽参数、节点类型以及节点可贡献内存。
第八方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或第二方面及其对应的任一实施方式的面向云计算的内存分配方法。
另外,该处理器在执行计算机指令时,还执行上述第三方面和第四方面所述的面向云计算的内存获取方法。
可选的,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或第二方面及其对应的任一实施方式的面向云计算的内存分配方法,或者执行前述第三方面和第四方面所述的面向云计算的内存获取方法。
本发明提供了一种面向云计算的内存分配方法、内存获取方法、装置和设备,先通过对集群中的节点分别进行通信性能和内存资源大小的筛选,为每个请求方节点确定出一个贡献节点集合,然后建立不同请求方节点与不同贡献方节点之间的匹配关系,为所有请求方节点筛选的贡献方节点的多个匹配关系形成至少两个有效匹配组合,再计算每个有效匹配组合的评价指标值;比较所有评价指标值确定目标有效匹配组合,并按照该目标有效匹配组合为不同请求方节点提供远程内存资源。
本方法解决了在众多的节点范围内多远程内存贡献节点与多远程内存请求节点的匹配问题,从系统综合效果为远程内存贡献节点与远程内存请求节点找到最优的匹配组合,避免了逐个匹配引起的不合理分配结果,采用一个远程内存贡献节点满足一个远程内存请求,避免了远程内存碎片化,使得远程内存空间高效利用、系统综合效果较优。
另外,本方法在筛选贡献方节点的过程中,不仅考虑与请求方节点的距离,还考虑节点间的通信性能和可贡献的内存资源大小,所以为不同请求方节点筛选出的相匹配的贡献方节点能更有效、更便捷地提供远程资源服务。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种面向云计算的内存分配方法的流程示意图;
图2是本发明实施例提供的一种为请求方节点筛选贡献方节点的流程示意图;
图3是本发明实施例提供的另一种为请求方节点筛选贡献方节点的流程示意图;
图4是本发明实施例提供的另一种面向云计算的内存分配方法的流程示意图;
图5a是本发明实施例提供的一种节点拓扑图;
图5b是本发明实施例提供的一种节点拓扑信息表的示意图;
图6是本发明实施例的一种内存获取方法的流程示意图;
图7是本发明实施例提供另一种内存获取方法的流程示意图;
图8是本发明实施例提供的一种内存分配装置和内存获取装置的结构框图;
图9是本发明实施例提供的另一种内存分配装置和内存获取装置的结构框图;
图10是本发明实施例提供的又一种内存分配装置的结构框图;
图11是本发明实施例提供的一种计算机设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的技术方案应用于一种计算机集群的应用场景,比如云计算平台,或其他网络平台等。该应用场景中包括控制器和计算机集群,计算机集群中包括多个节点,且这些节点既可以作为请求方节点,用于向服务器或控制器请求远程内存,又可以作为贡献方节点,用于为请求方节点提供远程内存资源。
应理解,控制器包括但不限于是一种控制装置或控制模块,还可以是全局内存管理器或全局内存控制器等,本实施例对此不予限制。
目前对于远程内存资源的分配方法,首先是建立节点分布表,该节点分布表包括每个节点可贡献内存大小以及各节点之间的连接关系,如果有内存请求者请求分配远程内存,则在以请求者为中心、根据距离由近及远寻找可以作为贡献者的节点并为请求者分配远程内存。
上述方案的距离为其他节点到请求方节点的路由跳数,在分配远程内存时,首先搜索第一跳周边节点,当第一跳周边节点的空闲内存总和可以满足请求者的需求时,则将一个或多个周边节点的内存分配给请求方节点,如果不够则继续搜索第二跳,逐次进行,直至满足内存请求者的需求。
该方案将远程内存分配问题简化成为每个内存请求方的远程内存需求分配问题,同时,将通信距离作为一项重要的因素来考虑。其中,远程直接内存访问RDMA通信网络是一种CPU-ByPass技术,该方案仅考虑通信距离的影响因素可能导致多个通信距离近的内存贡献方节点满足一个内存请求方节点的需求的情况,但会引起系统管理过于复杂。
需要说明的是,本发明实施例的技术方案可以应用于RDMA技术的远程内存请求方和贡献方的匹配,以及CXL技术的内存需求方和内存贡献方的匹配。此外,还可以应用于除RDMA和CXL (Compute Express Link) 技术领域之外的其他方法或技术,本实施例对此不予限制。
其中,CXL是一种新型的高速互联技术。
另外,在多个远程内存请求方和远程内存贡献方的远程内存需要匹配的情况下,逐个内存请求方进行分配内存分配并不考虑后续的内存请求方节点的分配情况,其分配结果的综合效果不佳。
本发明提出一种高效的远程内存分配方法和内存获取方法,解决在众多的节点范围内匹配内存贡献方节点和内存请求方节点的内存分配的问题,目的是达到远程内存空间高效利用,以及系统综合性能最佳的整体效果。
根据本发明实施例,提供了一种面向云计算的内存分配方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中提供了一种面向云计算的内存分配方法,可用于控制器、全局内存管理器、全局内存控制器或控制中心等网络设备,图1是根据本发明实施例的一种面向云计算的内存分配方法的流程图,如图1所示,该流程包括如下步骤:
步骤S101:接收在预设时间内来自不同节点的请求消息,每个请求消息用于请求获取远程内存资源。
其中,每个请求消息中包括:请求方节点的标识和请求远程内存资源大小。另外,还可以包括请求方节点的位置、通信情况等信息。
预设时间可以自定义,比如周期性地或基于外部条件主动触发接收请求消息,本实施例对此不做限定。
步骤S102:根据请求方节点的标识和请求远程内存资源大小,对集群中的节点分别进行通信性能和内存资源大小的筛选,为每个请求方节点确定出一个贡献节点集合。
其中,每个贡献节点集合中包括至少一个贡献方节点,且至少一个贡献方节点符合请求方节点的内存资源需求和通信性能条件,进一步地,内存资源需求是指请求方节点所需的内存资源大小,通信性能条件包括通信距离等条件。
具体地,如图2所示,一种实施方式包括如下:
步骤S102-1:根据请求方节点的标识在集群的节点拓扑信息表中筛选出符合通信性能要求的一个或多个贡献方节点,得到第一贡献节点集合。
步骤S102-2:在第一贡献节点集合中筛选满足请求方节点所需的远程内存资源大小的一个或多个贡献方节点,并对所述筛选的一个或多个贡献方节点按照预设规则排序得到第二贡献节点集合。
其中,所述预设规则排序可以是按照内存资源从大到小的顺序排序,或者还可以其他自定义规则,本实施例对此不做限制。
并且第二贡献节点集合为前述步骤S102中为当前节点确定的一个贡献节点集合。
可选的,所述第二贡献节点集合中贡献方节点的数量不超过10个。
步骤S103:建立不同请求方节点与不同贡献节点集合内的贡献方节点之间的匹配关系,生成至少两个有效匹配组合。
其中,每个有效匹配组合包含多个匹配关系,每个匹配关系为一个请求方节点与为其提供远程内存资源的一个贡献方节点之间的绑定关系。进一步地,每个有效组合中包括所有请求方节点与相匹配的贡献方节点之间的匹配关系。此外,匹配方式可以采用枚举法。
一个请求方节点可对应一个贡献节点集合为其提供内存资源,每个贡献节点集合中可以包括一个或多个贡献方节点。例如节点1对应的贡献节点集合中包括节点{3,4},节点3和节点4都可以为节点1提供远程内存资源。类似的,节点2对应的贡献节点集合为{3,4,5},表示节点3、节点4和节点5都可以为节点2提供远程内存资源。
建立一种匹配关系是,节点3为请求方节点1的贡献方节点,则节点1与节点3之间为一个匹配关系,同理地,节点4为节点2的贡献方节点,则节点2与节点4为另一个匹配关系,则第一有效匹配组合为:节点1与节点3,节点2与节点4。同样,还可以生成第二有效匹配组合和第三有效匹配组合,该第二有效匹配组合为:节点1与节点4,节点2与节点3。第三有效匹配组合为:节点1与节点4,节点2与节点5。轮询所有节点匹配关系后,生成至少两个有效匹配组合。
步骤S104:计算每个有效匹配组合的评价指标值,并比较所有评价指标值。
具体地,一种计算每个有效匹配组合的评价指标值,包括:
根据第i个请求方节点申请的远程内存资源Ei和实际分配远程内存Ri,以及通信路由跳数计算每个有效匹配组合的评价指标值;
进一步地,可利用预设关系式计算每个有效匹配组合的评价指标值;预设关系式为:
其中,Ok为第k个有效匹配组合对应的评价指标值,Ei为第i个请求方节点所请求的远程内存资源大小,Ri为第i个请求方节点实际分配的远程内存资源大小,Wi为远程内存请求方节点与远程内存贡献方节点之间的路由跳数,n为匹配关系数。
步骤S105:根据评价指标值确定目标效匹配组合,以及根据目标有效匹配组合为每个请求方节点提供远程内存资源。
具体地,一种实施方式是,比较所有评价指标值,并选择所有评价指标值中最小的一个,该最小评价指标值对应的有效匹配组合为目标有效匹配组合,该目标有效匹配组合包含为每个请求方节点提供的至少一个贡献方节点的远程内存资源分配方案。
控制器按照该确定的远程内存资源分配方案为每个请求方节点提供远程内存资源。
本实施例提供的方法解决了在众多的节点范围内多远程内存贡献节点与多远程内存请求节点的匹配问题,从系统综合效果为远程内存贡献节点与远程内存请求节点找到最优的匹配组合,避免了逐个匹配引起的不合理分配结果,采用一个远程内存贡献节点满足一个远程内存请求,避免了远程内存碎片化,使得远程内存空间高效利用、系统综合效果较优。
在本实施例的一种可能的实施方式中,在上述步骤S102中,如图3所示,还包括:
步骤S1021:建立节点拓扑信息表。
节点拓扑信息表中包括:集群中相连的每个节点的节点信息、各个节点之间的连接关系、节点之间的通信延迟参数和通信带宽参数、节点类型以及节点可贡献内存资源大小。
其中,该节点拓扑信息表可在接收请求方节点发送的请求消息之前获取,并生成。
步骤S1022:根据请求方节点的标识确定请求方节点的位置。
步骤S1023:根据请求方节点的位置在节点拓扑信息表中筛选出符合通信性能要求,并且符合通信距离要求的一个或多个贡献方节点。
具体地,步骤S1023的一种实施方式是:根据请求方节点的位置,以及通信性能的要求,在节点拓扑信息表中搜索可提供远程内存的贡献方节点,并建立远程内存贡献节点链表。其中,远程内存贡献节点链表中包括至少一个内存贡献节点。
更进一步地,上述步骤S1023的具体实施方式可以采用如图2所示的步骤S102-1和S102-2,本实施例此处不再赘述。
此外,上述方法还包括:如果检测到有节点信息、节点的连接关系、通信延迟参数、通信带宽参数、节点类型和节点可贡献内存中的至少一项发生变化,则根据发生变化项更新节点拓扑信息表,并利用更新后的节点拓扑信息表为请求方节点筛选可提供远程内存资源的贡献方节点。
进一步地,上述根据请求方节点的位置,以及通信性能的要求,在节点拓扑信息表中搜索可提供远程内存的贡献方节点,包括:根据节点拓扑信息表中节点的通讯延迟参数和通信带宽参数,查找满足通信性能的要求的一个或多个可提供远程内存的贡献方节点。
本实施例中,在确定的远程内存贡献节点链表中至少一个内存贡献节点还满足通信距离的要求;通信距离为远程内存贡献节点与请求方节点的每一跳路由通信距离之和,通信距离要求通信距离之和不超过预设通信距离,每一跳路由的通信距离为该段通信延迟参数与通信带宽参数之积。
通过公式表示为:
其中,L为上述远程内存贡献节点与请求方节点的每一跳路由通信距离之和,Lmax为预设通信距离,ai-j为通信延迟参数,bi-j为通信带宽参数,为通信延迟参数ai-j与通信带宽参数bi-j之积。
本实施例提供的方法,先通过通信性能要求筛选符合条件的一个或多个贡献方节点,然后再在筛选出的所有贡献方节点中通过内存大小筛选符合当前请求方节点需求的节点,最后计算执行请求方节点和贡献方节点匹配,构建至少两个有效匹配组合,并计算有效匹配组合的评价指标值,从而使得筛选的贡献方节点性能最优、提供远程内存资源效率最高。
另外,本方法在筛选贡献方节点的过程中,不仅考虑与请求方节点的距离,还考虑节点间的通信性能和可贡献的内存资源大小,所以为不同请求方节点筛选出的相匹配的贡献方节点能更有效、更便捷地提供远程资源服务。
具体地,一种实施方式是,设第i个请求方节点所请求的远程内存资源大小为Ei;上述步骤S103中,建立不同请求方节点与不同贡献节点集合内的贡献方节点之间的匹配关系,生成至少两个有效匹配组合,包括:
对第i个请求方节点筛选的贡献方节点数量为m个,其中,m个节点中的任一个节点的内存资源大小为Pj,m≥1且为正整数;
采用枚举法根据第i个请求方节点所请求的远程内存资源Ei和贡献方节点的内存资源Pj按照规则建立匹配关系,生成至少两个有效匹配组合。
进一步地,采用枚举法根据第i个请求方节点所请求的远程内存资源Ei和贡献方节点的内存资源Pj按照规则建立匹配关系,生成至少两个有效匹配组合,具体包括:
按照以下规则根据第i个请求方节点所请求的远程内存资源Ei和贡献方的内存资源Pj建立匹配关系:
如果满足,则为第i个请求方节点分配远程内存资源大小为Ei;如果不满足/>,则为第j个请求方节点提供的远程内存资源大小为Pj。
其中,Ei为第i个请求方节点请求的内存资源大小,Pj为第j个贡献方节点可贡献的远程内存资源大小。i,j为常数,用于标识请求方节点和贡献方节点。
其中,匹配判定算法或者称为远程内存匹配方法,该算法包括但不仅限于CXL技术。此外匹配判定算法还可以是其他匹配算法,用于与其他机间内存共享技术的匹配方法/算法模型都可使用。
进一步地,上述方法还包括:当满足条件时,将第j个贡献方节点可贡献的内存资源Pj拆分成两个或两个以上部分,其中,一部分内存资源用于提供给当前请求方节点,剩余部分内存资源用于提供给其他请求方节点。例如拆分成第一部分和第二补充,第一部分资源大小为Ei,第二部分资源大小为Pj-Ei。
例如,将第一部分内存资源大小为Ei给远程内存的请求方节点Mi,将第二部分(Pj-Ei)远程内存继续作为该节点的可贡献内存;否则该远程内存贡献节点Kj的可贡献远程内存Pj全部分配给远程内存请求方节点Mi。
在本实施例的另一实施方式中,上述步骤S104,确定目标有效匹配组合之后,还包括:将目标有效分配组合的指示消息发送给不同的请求方节点和对应的各个贡献方节点,以及记录和更新节点拓扑信息表,从而使节点拓扑信息表为最新表。
可选的,在另一实施例中,还提供了一种内存资源分配方案,如图4所示,该方法包括:
步骤S201:接收在预设时间内来自不同节点的请求消息,每个请求消息用于请求获取远程内存资源,每个请求消息中包括:请求方节点的标识和请求远程内存资源大小。
该步骤S201同前述实施例的步骤S101。
步骤S202:根据请求方节点的标识和请求远程内存资源大小,对集群中的节点分别进行通信性能和内存资源大小的筛选,为每个请求方节点确定出一个贡献节点集合。
其中,每个贡献节点集合中包括至少一个贡献方节点。
该步骤S202同前述实施例的步骤S102。
步骤S203:建立不同请求方节点与至少一个贡献节点集合内的贡献方节点之间的匹配关系,生成至少两个有效匹配组合。
该步骤S203同前述实施例的步骤S103。
步骤S204:将至少两个有效匹配组合发送至不同的请求方节点,以使每个请求方节点选择目标有效匹配组合并获取远程内存资源。
与前述实施例的步骤S104不同,该步骤中,控制器将多个有效匹配组合发送给不同的请求方节点,比如第一节点或第二节点,然后由接收端的请求方节点自行确定目标有效匹配组合,然后按照该目标有效匹配组合获取贡献节点的远程内存资源。
一种确定目标有效匹配组合的方式是,采用前述步骤S104的方法,计算每个有效匹配组合集合的评价指标值,并从所有评价指标值中选择做小的一个作为目标评价指标值,再确定该目标评价指标值所对应的有效匹配组合为目标有效匹配组合。
具体地确定过程可参见前述实施例的描述,本实施例此处不再赘述。
本实施例中提供两种方案,一种是,控制器直接根据请求方节点的内存需求为其确定目标有效匹配组合,并按照该目标有效匹配组合的方案为请求方节点提供远程内存资源。另一种是,控制器将多个远程内存资源分配方案全部发送给请求方节点,使请求方节点自己选择确定使用哪一种方案。第二种方法由用户/客户端的请求方节点选择,相比于第一种分配方案更灵活。
下面结合一具体实施例对本发明的技术方案进行详细说明。
基于前述实施例的描述,本实施例提供的远程内存资源分配方法包括以下方法流程:
第一步,建立节点拓扑信息表。使用邻接表记录节点拓扑分布图即该节点相连的每个节点信息以及各节点之间的连接关系,节点之间的通信延迟参数 ai-j和通信带宽参数bi-j,节点的类型以及节点可贡献内存,其中ai-j=aj-i,bi-j=bj-i。如图5a和5b所示,其中,图5a为一种节点拓扑图,图5b为一种节点拓扑信息表的示意图。
如图5a所示,该节点拓扑图中共包含有14个节点,节点编号分别为0-13。首先建立一个数组,数组的索引即为节点编号,每个数组单元包括一个链表指针、可贡献空闲内存的大小、节点类型以及其他需要的信息。数组单元中的链表指针plist指向一个链表,如图5b所示,该链表记录与该节点相邻的所有节点,每个链表单元记录节点号以及两节点之间的通信延迟参数ai-j和通信带宽参数bi-j。如数组索引2的数组单元记录节点2的相关信息,链表指针记录与节点2相邻的节点6、12、1、11、5的在数组中的索引号,以及这些节点之间的通信延迟参数和通信带宽参数。
第二步,周期性地与各节点通信更新各节点的可贡献内存空间大小,以及是否有远程内存请求及大小。查询周期设为1分钟,周期间隔可以根据内存工作集预测算法的特点进行设定。在该周期内更新节点拓扑信息表记录最新的各节点可贡献内存空间情况;并且将在该周期内远程内存请求节点及需要的远程内存大小记录下来,准备与远程内存贡献方进行匹配。
然后,依照系统对于通信性能的要求,为该周期远程内存请求节点建立可用远程内存贡献节点集合。设该周期内共有n个远程内存请求节点,第i个远程内存请求方节点表示为Mi(i=1,2,…,n),其请求的远程内存大小为Ei( i=1,2,…,n)。对于每一个远程内存请求节点搜索前述建立的节点拓扑信息表,建立可选远程内存贡献节点链表,该链表按可贡献内存大小进行排序。可选远程内存贡献节点必须满足系统对于通信距离的要求,通信距离为远程内存贡献节点与远程内存请求节点的每一跳路由通信距离和,每一跳路由的通信距离为,因此远程内存贡献节点与远程内存请求节点的通信距离为:/>
其中,可选的远程内存贡献节点与远程内存请求节点的通信距离不能超过预设通信距离Lmax。公式表示为:
依据远程内存请求节点的内存请求,在上述基础上建立可实际分配的远程内存贡献节点集合。设对于第i个远程内存请求节点的可选远程内存贡献节点有m个,第j个可选远程内存贡献节点记为Kj(j = 1,2,…, m),其可贡献内存记为Pj(j = 1,2,…, m)。对于远程内存请求方节点Mi节点按照由小至大顺序搜索该节点对应的可选远程内存贡献节点链表,进行匹配判定。由于远程内存请求方节点Mi节点请求的内存大小与远程内存贡献节点的可贡献内存大小并不完全一致,因此远程内存贡献节点记为Kj与远程内存请求方节点Mi的匹配判定如下:
(1)当,(i=1,2,......,n,j=1,2,......,m)时,远程内存贡献节点Kj不能为远程内存请求方节点Mi分配远程内存;
(2)当,(i=1,2,......,n,j=1,2,......,m)时,确定远程内存贡献节点Kj可以为远程内存请求方节点Mi分配远程内存。
进一步地,为了避免远程内存空间浪费,当时,远程内存贡献节点Kj将远程内存拆成两部分,其中大小为Ei的远程内存分配给远程内存的请求方节点Mi,剩余Pj-Ei远程内存继续作为该节点的可贡献内存。否则该远程内存贡献节点Kj的可贡献远程内存Pj全部分配给远程内存请求方节点Mi。
可选的,为了加快远程内存的匹配速度和降低算法复杂度,每一个周期的远程内存匹配过程中单个节点的可贡献内存只能拆分一次为两部分。
通过上述匹配判定算法,为每一个远程内存请求节点,找出既满足内存大小又满足通信距离的远程内存贡献节点集合。将远程内存请求方节点Mi的远程内存贡献节点集合记为Qi。为了降低计算复杂度,本实施例中限制Qi最多拥有10个远程内存贡献节点(即按小至大顺序找出既满足内存大小又满足通信距离的远程贡献节点个数≤10)。
如果远程内存请求方节点Mi的远程内存贡献节点集合为空,则直接向远程内存请求节点返回错误及原因,由远程内存请求节点自己判断是否拆分远程内存请求重新发起请求,并将该远程内存请求方节点Mi的请求置为无效不予考虑。
本实施例中,构建匹配效果评价函数的一种具体实施方式是:采用枚举法为远程内存请求节点与远程内存贡献节点构建有效匹配组合,并计算该有效匹配组合所对应的评价指标值。
当远程内存贡献节点Kj在时远程内存会进行拆分。可选的,具体地,1G还是其他值可以根据实际情况设定,本实施例对此不做限制,因此实际分配的远程内存并不一定等于远程内存贡献节点的可贡献内存大小。本实施例将实际分配给第i个远程内存请求节点的远程内存大小为Ri(i=1,2…,n)。
第三步,采用枚举法为远程内存请求节点与远程内存贡献节点构建有效匹配组合,并生成至少两个有效匹配组合。其中,每个有效匹配组合的定义为对于远程内存请求方节点Mi,寻找到一个合适的远程内存贡献节点Kj,其中Kji∈Qi,组合内不同的远程内存请求方节点Mi匹配的远程内存贡献节点的不相同。综合考虑远程内存空间的有效利用情况和通信距离对性能的影响。Wi为远程内存请求方节点与远程内存贡献方节点的路由跳数,有效匹配组合中假设组合k的匹配效果评价指标值通过如下关系式计算:
其中,约束条件如下:
第四步,比较各个有效匹配组合的评价指标值,选择Ok值最小的匹配有效组合确认为最优的远程内存匹配组合,即目标有效匹配组合。
第五步,将该目标有效匹配组合的远程内存匹配结果记录,并通知各远程内存请求方节点以及远程内存贡献方节点,同时更新节点拓扑信息表。
至此,一个周期的远程内存请求节点以及远程内存贡献节点的匹配过程结束。该方法为远程内存贡献节点与请求节点找到最优的内存资源分配组合,避免远程内存碎片化,使得远程内存空间高效利用、系统综合效果较优。
在又一实施例中,与前述的内存分配方法相对应,本发明实施例还提供一种面向云计算的内存获取方法,该方法可应用于前述的任一请求节点,比如第一节点,如图6所示,该方法包括:
步骤S301:第一节点生成第一请求消息,第一节点为一请求方节点,第一请求消息包括:第一节点的标识和第一节点请求获取的远程内存资源大小。
步骤S302:第一节点发送第一请求消息给控制器。对应前述实施例的步骤S101。
步骤S303:第一节点接收控制器根据第一请求消息反馈的目标有效匹配组合,目标有效组合包括第一节点与为其提供远程内存资源的贡献方节点之间的绑定关系。
具体过程参见前述实施例的步骤S101至S105,本实施例此处不再赘述。
步骤S304:第一节点根据目标有效匹配组合获取贡献方节点提供的远程内存资源。
可选的,在另一实施例中,对应于前述如图4所示的方法步骤,如图7所示,该面向云计算的内存获取方法,该方法应用于第二节点,第二节点为任一请求方节点,方法包括:
步骤S401:第二节点生成第二请求消息,第二节点为请求方节点,第二请求消息包括:第二节点的标识和第二节点请求获取的远程内存资源大小。同前述步骤S301。
步骤S402:第二节点发送第二请求消息给控制器。同前述步骤S302。
步骤S403:第二节点接收控制器根据第二请求消息反馈的至少两个有效匹配组合,每个有效匹配组合包含多个匹配关系,每个所述匹配关系为一个请求方节点与为其提供远程内存资源的一个贡献方节点之间的绑定关系。
具体过程与前述实施例的步骤S101至S103的方法过程相同,本实施例此处不再赘述。
步骤S404:第二节点在至少两个有效匹配组合中确定目标有效匹配组合,并根据目标有效匹配组合获取贡献方节点提供的远程内存资源。
一种实施方式是,确定过程与前述步骤S104和S105方法相同,参见前述实施例的描述,此处不再赘述。
另外,本发明实施例还提供一种内存分配系统,该系统包括控制器和计算机集群,计算机集群中包括多个节点,多个节点中的部分节点为请求方节点,部分节点为贡献方节点。
以请求方节点为例,方法包括:
一个或多个请求方节点向控制器发送一个或多个请求消息,每个请求消息用于请求获取远程内存资源,每个请求消息中包括:当前请求方节点的标识和请求远程内存资源大小。
控制器接收在预设时间内来自不同节点的请求消息,根据请求方节点的标识和请求远程内存资源大小,对集群中的节点分别进行通信性能和内存资源大小的筛选,为每个请求方节点确定出一个贡献节点集合,每个贡献节点集合中包括至少一个贡献方节点;建立不同请求方节点与不同贡献节点集合内的贡献方节点之间的匹配关系,生成至少两个有效匹配组合;计算每个有效匹配组合的评价指标值,并比较所有评价指标值;根据评价指标值确定目标有效匹配组合,以及根据目标有效匹配组合为每个请求方节点提供远程内存资源。比如将该目标有效匹配组合发送给第一节点。
第一节点接收控制器根据第一请求消息反馈的目标有效匹配组合,该目标有效组合包括第一节点与为第一节点提供远程内存资源的贡献方节点之间的绑定关系;然后根据目标有效匹配组合获取该贡献方节点提供的远程内存资源。其中,第一节点是多个请求方节点之一。
此外,在周期性请求远程内存资源的过程中,控制器还建立节点拓扑信息表,并利用节点拓扑信息表,以及每个请求方节点的标识和请求远程内存资源大小,通过匹配判定算法为每个请求方节点确定贡献节点集合。
其中,拓扑信息表中包括:计算机集群中相连的每个节点信息、各节点之间的连接关系、节点之间的通讯延迟参数和通信带宽参数、节点类型以及节点可贡献内存。
本实施例提供的系统解决了在众多的节点范围内,多远程内存贡献节点与多远程内存请求节点的匹配问题,从系统综合效果为远程内存贡献节点与远程内存请求节点找到最优的匹配组合,避免了逐个匹配引起的不合理分配结果,采用一个远程内存贡献节点满足一个远程内存请求,避免了远程内存碎片化,使得远程内存空间高效利用、系统综合性能效果较优。
下面介绍与上述方法实施例对应的装置实施例。
在本实施例中还提供了一种面向云计算的内存分配装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种面向云计算的内存分配装置,如图8所示,该装置包括:第一接收模块801、第一确定模块802、第一匹配模块803和第一计算模块804。此外,该装置中还可以包括其他模块,比如存储模块等,本实施例对此不做限制。
其中,第一接收模块801,用于接收在预设时间内来自不同节点的请求消息,每个请求消息用于请求获取远程内存资源,每个请求消息中包括:请求方节点的标识和请求远程内存资源大小;
第一确定模块802,用于根据请求方节点的标识和请求远程内存资源大小,对集群中的节点分别进行通信性能和内存资源大小的筛选,为每个请求方节点确定出一个贡献节点集合,每个贡献节点集合中包括至少一个贡献方节点。
第一匹配模块803,用于建立不同请求方节点与至少一个贡献节点集合内的贡献方节点之间的匹配关系,生成至少一个有效匹配组合的集合。
第一计算模块804,用于计算集合内每个有效匹配组合集合的评价指标值,并比较所有评价指标值。
第一确定模块802,还用于根据评价指标值确定目标有效匹配组合,以及根据目标有效匹配组合为每个请求方节点提供远程内存资源。
此外,在图8中还包括一种面向云计算的内存获取装置,应用于前述第一节点,该装置包括:
第一生成模块805,用于生成第一请求消息,第一请求消息包括:第一节点的标识和第一节点请求获取的远程内存资源大小;
第一发送模块806,用于发送第一请求消息给控制器;
第三接收模块807,用于接收控制器根据第一请求消息反馈的目标有效匹配组合,目标有效组合包括第一节点与为其分配远程内存资源的贡献方节点之间的绑定关系;
第一获取模块808,用于根据目标有效匹配组合获取贡献方节点提供的远程内存资源。
其中,内存获取装置用于向内存分配装置发送请求消息,比如第一请求消息,然后内存分配装置通过前述方法实施例的流程确定出目标有效匹配组合,并将该目标有效匹配组合发送给内存获取装置,内存获取装置的第一获取模块接收该目标有效匹配组合后,按照该目标有效匹配组合获取远程内存资源,从而实现了远程内存空间高效利用、系统综合效果较优的有益效果。
可选的,上述内存分配装置和内存获取装置还用于实现前述方法实施例的其他方法步骤,本实施例此处不再赘述。
另外,在另一实施例中,如图9所示,还公开了另一种面向云计算的内存分配装置和内存获取装置,其中,该内存分配装置包括:
第二接收模块901,用于接收在预设时间内来自不同节点的请求消息,每个请求消息用于请求获取远程内存资源,每个请求消息中包括:请求方节点的标识和请求远程内存资源大小。
第二确定模块902,用于根据请求方节点的标识和请求远程内存资源大小,对集群中的节点分别进行通信性能和内存资源大小的筛选,为每个请求方节点确定出一个贡献节点集合,每个贡献节点集合中包括至少一个贡献方节点。
第二匹配模块903,用于建立不同请求方节点与至少一个贡献节点集合内的贡献方节点之间的匹配关系,生成至少两个有效匹配组合。
其中,每个有效匹配组合包含多个匹配关系,每个所述匹配关系为一个请求方节点与为其提供远程内存资源的一个贡献方节点之间的绑定关系。
第二发送模块904,用于将至少两个有效匹配组合发送至不同的请求方节点,以使每个请求方节点选择目标有效匹配组合并获取远程内存资源。
另外,内存获取装置可以是另一种请求方节点,比如第二节点,该内存获取装置包括:
第二生成模块905,用于生成第二请求消息,第二节点为请求方节点,第二请求消息包括:第二节点的标识和第二节点请求获取的远程内存资源大小。
第三发送模块906,用于发送第二请求消息给控制器。
第四接收模块907,用于接收控制器根据第二请求消息反馈的至少两个有效匹配组合,每个有效匹配组合包括一个请求方节点与为其提供远程内存资源的一个贡献方节点之间的绑定关系。
第二获取模块908,用于在至少两个有效匹配组合中确定目标有效匹配组合,并根据目标有效匹配组合获取贡献方节点提供的远程内存资源。
本实施例中的内存分配装置是以功能单元的形式来呈现,这里的单元是指ASIC电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
上述各个模块和单元的更进一步的功能描述与上述请求方节点实施例相同,在此不再赘述。
在硬件实现层面,本发明实施例上述远程内存需求方节点或请求方节点,具体包括:CPU处理器、主内存管理器、多个内存管理器和内存组、多个远端内存控制器和通信单元1。CPU处理器与主内存管理器连接,主内存管理器与多个内存控制器和远端内存控制器连接,内存控制器与内存控制组连接,远端内存控制器与通信单元连接。
本发明实施例采用了远程直接数据访问技术,每一个服务器节点都安装了一块或多块专用网卡(高端以太网卡或者IB网卡)。服务器之间通过RDMA技术可以实现内存的远程共享。
另外,本发明还提出了另一种内存分配装置,如图10所示,该装置包括通讯单元、周期通信单元、节点拓扑信息记录单元、内存请求处理单元、有效贡献节点筛选单元1、有效贡献节点筛选单元2、最优组合确定单元和匹配结果通知与记录单元。
具体地,通讯单元负责与服务器节点进行数据通信,按照通信协议要求完成数据的收发工作。
周期通信单元,负责按照指定周期间隔与服务器节点进行通信,获取服务器节点可贡献内存大小信息、远程内存释放信息、远程内存请求信息以及故障信息等。
远程内存匹配装置,与某个服务器节点不能正常通信,则判定其该服务器为故障。周期通信单元,根据获取的最新可贡献内存信息更新至节点拓扑信息记录单元;然后,处理远程内存释放信息将其发送给匹配结果通知与记录单元,匹配结果通知与记录单元将更改远程内存供求双方的绑定记录信息,同时通知远程内存供求双方的服务器节点,服务器最新的可贡献远程内存信息在下一个通信周期由服务器节点报上来;最后处理远程内存请求,将请求发往内存请求处理单元。
内存请求处理单元,用于将一个周期内的内存请求节点按节点拓扑信息记录单元的顺序进行排序组织好,然后将该数据发送给有效贡献节点筛选单元1。
有效贡献节点筛选单元1,负责查询节点拓扑信息记录为内存请求节点搜索符合通信距离的有效远程内存贡献节点,利用邻接表构建可选远程内存贡献节点链表,然后将该数据发给有效贡献节点筛选单元2。
有效贡献节点筛选单元2,负责查询节点拓扑信息记录为内存请求节点搜索可贡献内存满足需求的有效远程内存贡献节点并按可贡献内存大小进行排序,构建新的可选远程内存贡献节点链表,然后将该数据发给最优组合确定单元。
最优组合确定单元,用于采用枚举法穷举每一个有效组合,并按照评价函数计算匹配效果评价指标值,最后选取评价指标值最小的组合确定为最优有效匹配组合;然后将最优有效匹配组合发给匹配通知与记录单元。
匹配通知与记录单元,用于将最优有效匹配组合绑定关系记录下来,同时更新远程内存贡献节点的可贡献内存信息,最后通过通讯单元发送数据通知服务器节点远程内存的匹配关系及远程内存大小,至此完成一次匹配过程。
本发明实施例还提供一种计算机设备,具有上述图8至图10所示的远程内存分配装置。
请参阅图11,图11是本发明可选实施例提供的一种计算机设备的结构示意图,如图9所示,该计算机设备包括:一个或多个处理器10、存储器20,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。
在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算机设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图11中以一个处理器10为例。
处理器10可以是中央处理器,网络处理器或其组合。其中,处理器10还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
其中,存储器20存储有可由至少一个处理器10执行的指令,以使至少一个处理器10执行实现上述实施例示出的方法。
存储器20可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据一种小程序落地页的展现的计算机设备的使用所创建的数据等。此外,存储器20可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器20可选包括相对于处理器10远程设置的存储器,这些远程存储器可以通过网络连接至该计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器20可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器20还可以包括上述种类的存储器的组合。
该计算机设备还包括通信接口30,用于该计算机设备与其他设备或通信网络通信。
本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。
其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的远程内存分配方法、内存获取方法。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (17)
1.一种面向云计算的内存分配方法,其特征在于,所述方法包括:
接收在预设时间内来自不同节点的请求消息,每个请求消息用于请求获取远程内存资源,每个请求消息中包括:请求方节点的标识和请求远程内存资源大小;
根据请求方节点的标识和请求远程内存资源大小,对集群中的节点分别进行通信性能和内存资源大小的筛选,为每个请求方节点确定出一个贡献节点集合,每个贡献节点集合中包括至少一个贡献方节点;
建立不同请求方节点与不同贡献节点集合内的贡献方节点之间的匹配关系,生成至少两个有效匹配组合,其中,每个有效匹配组合包含多个匹配关系,每个所述匹配关系为一个请求方节点与为其提供远程内存资源的一个贡献方节点之间的绑定关系;
计算每个有效匹配组合的评价指标值,并比较所有评价指标值;
根据评价指标值确定目标有效匹配组合,以及根据所述目标有效匹配组合为每个请求方节点提供远程内存资源;
其中,建立不同请求方节点与至少一个贡献节点集合内的贡献方节点之间的匹配关系,生成至少一个有效匹配组合的集合,包括:
获取第i个请求方节点所请求的远程内存资源大小Ei,以及为所述第i个请求方节点筛选的贡献节点集合,所述贡献节点集合中包括m个贡献方节点,m个节点中的任一个节点的内存资源大小为Pj,m≥1且为正整数;
采用枚举法根据所述第i个请求方节点所请求的远程内存资源Ei和贡献方节点的内存资源Pj按照规则建立两个或两个以上匹配关系,生成至少两个有效匹配组合。
2.根据权利要求1所述的方法,其特征在于,根据请求方节点的标识和请求远程内存资源大小,对集群中的节点进行通信性能的筛选,包括:
根据请求方节点的标识在集群的节点拓扑信息表中筛选出符合通信性能要求的一个或多个贡献方节点,得到第一贡献节点集合。
3.根据权利要求2所述的方法,其特征在于,根据请求方节点请求的远程资源内存大小,对集群中的节点进行内存资源大小的筛选,为请求方节点确定出一个贡献节点集合,包括:
在所述第一贡献节点集合中筛选满足当前请求方节点所需的远程内存资源大小的一个或多个贡献方节点,并对所述筛选的一个或多个贡献方节点按照预设规则排序得到第二贡献节点集合。
4.根据权利要求2或3所述的方法,其特征在于,根据请求方节点的标识在集群的节点拓扑信息表中筛选出符合通信性能要求的一个或多个贡献方节点,包括:
建立节点拓扑信息表,节点拓扑信息表包括:集群中每个节点的节点信息、各个节点之间的连接关系、节点之间的通信延迟参数、通信带宽参数和节点可贡献的内存资源;
根据请求方节点的标识确定请求方节点的位置;
根据请求方节点的位置在所述节点拓扑信息表中筛选出符合通信性能要求,并且符合通信距离要求的一个或多个贡献方节点。
5.根据权利要求4所述的方法,其特征在于,筛选出符合通信性能要求的一个或多个贡献方节点,包括:
筛选当前请求方节点与当前贡献方节点之间的通信距离不超过预设通信距离;
其中,通信距离为当前请求方节点与当前贡献方节点的每一跳路由通信距离和,每一跳路由的通信距离为通信延迟参数与通信带宽参数之积。
6.根据权利要求1所述的方法,其特征在于,采用枚举法根据所述第i个请求方节点所请求的远程内存资源Ei和贡献方节点的内存资源Pj按照规则建立两个或两个以上匹配关系,包括:
按照以下规则根据第i个请求方节点所请求的远程内存资源Ei和贡献方的内存资源Pj建立匹配关系;
如果满足,则为第i个请求方节点分配远程内存资源大小为Ei;
如果不满足,则为第j个贡献方节点提供的远程内存资源大小为Pj。
7.根据权利要求1所述的方法,其特征在于,计算每个有效匹配组合的评价指标值,包括:
根据第i个请求方节点申请的远程内存资源Ei和实际分配远程内存Ri,以及通信路由跳数计算每个有效匹配组合的评价指标值。
8.根据权利要求6所述的方法,其特征在于,根据第i个请求方节点申请的远程内存资源Ei和实际分配远程内存Ri,以及通信路由跳数计算每个有效匹配组合的评价指标值,包括:
利用预设关系式计算每个有效匹配组合的评价指标值;预设关系式为:
其中,Ok为第k个有效匹配组合对应的评价指标值,Ei为第i个请求方节点所请求的远程内存资源大小,Ri为第i个请求方节点实际分配的远程内存资源大小,Wi为远程内存请求方节点与远程内存贡献方节点之间的路由跳数,n为匹配关系数。
9.根据权利要求4所述的方法,其特征在于,建立节点拓扑信息表之后,所述方法还包括:
建立集群中包含每个节点的数组单元,其中每个数组单元中包括:一个链表指针、可贡献内存资源的大小、节点类型;
设置每个数组单元的索引,索引为每个节点的节点号;
根据每个节点的数组单元和每个数组单元的索引以及节点连接关系,生成节点拓扑图。
10.根据权利要求4所述的方法,其特征在于,所述方法还包括:
周期性地与集群中各个节点通信,并获取每个节点的可贡献内存资源大小以及是否有远程内存需求;
如果贡献方节点的内存资源发生变化,或有远程内存需求,则记录并更新节点拓扑信息表。
11.根据权利要求6所述的方法,其特征在于,所述方法还包括:
如果满足,则将贡献方节点的内存资源Pj拆分成两个或两个以上部分,其中,一部分内存资源用于提供给当前请求方节点,剩余部分内存资源用于提供给其他请求方节点。
12.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
将目标有效分配组合的指示消息发送给不同的请求方节点和对应的各个贡献方节点,以及记录和更新节点拓扑信息表。
13.一种面向云计算的内存分配方法,其特征在于,所述方法包括:
接收在预设时间内来自不同节点的请求消息,每个请求消息用于请求获取远程内存资源,每个请求消息中包括:请求方节点的标识和请求远程内存资源大小;
根据请求方节点的标识和请求远程内存资源大小,对集群中的节点分别进行通信性能和内存资源大小的筛选,为每个请求方节点确定出一个贡献节点集合,每个贡献节点集合中包括至少一个贡献方节点;
建立不同请求方节点与不同贡献节点集合内的贡献方节点之间的匹配关系,生成至少两个有效匹配组合,其中,每个有效匹配组合包含多个匹配关系,每个所述匹配关系为一个请求方节点与为其提供远程内存资源的一个贡献方节点之间的绑定关系;
将所述至少两个有效匹配组合发送至不同的请求方节点,以使每个请求方节点选择目标有效匹配组合并获取远程内存资源
其中,建立不同请求方节点与至少一个贡献节点集合内的贡献方节点之间的匹配关系,生成至少一个有效匹配组合的集合,包括:
获取第i个请求方节点所请求的远程内存资源大小Ei,以及为所述第i个请求方节点筛选的贡献节点集合,所述贡献节点集合中包括m个贡献方节点,m个节点中的任一个节点的内存资源大小为Pj,m≥1且为正整数;
采用枚举法根据所述第i个请求方节点所请求的远程内存资源Ei和贡献方节点的内存资源Pj按照规则建立两个或两个以上匹配关系,生成至少两个有效匹配组合。
14.一种面向云计算的内存分配装置,其特征在于,所述装置包括:
第一接收模块,用于接收在预设时间内来自不同节点的请求消息,每个请求消息用于请求获取远程内存资源,每个请求消息中包括:请求方节点的标识和请求远程内存资源大小;
第一确定模块,用于根据请求方节点的标识和请求远程内存资源大小,对集群中的节点分别进行通信性能和内存资源大小的筛选,为每个请求方节点确定出一个贡献节点集合,每个贡献节点集合中包括至少一个贡献方节点;
第一匹配模块,用于建立不同请求方节点与不同贡献节点集合内的两个或两个以上贡献方节点之间的匹配关系,生成至少两个有效匹配组合的集合,其中,每个有效匹配组合包含多个匹配关系,每个所述匹配关系为一个请求方节点与为其提供远程内存资源的一个贡献方节点之间的绑定关系;
第一计算模块,用于计算每个有效匹配组合的评价指标值,并比较所有评价指标值;
所述第一确定模块,还用于根据评价指标值确定目标有效匹配组合,以及根据所述目标有效匹配组合为每个请求方节点提供远程内存资源;
所述第一匹配模块,具体用于获取第i个请求方节点所请求的远程内存资源大小Ei,以及为所述第i个请求方节点筛选的贡献节点集合,采用枚举法根据所述第i个请求方节点所请求的远程内存资源Ei和贡献方节点的内存资源Pj按照规则建立两个或两个以上匹配关系,生成至少两个有效匹配组合,所述贡献节点集合中包括m个贡献方节点,m个节点中的任一个节点的内存资源大小为Pj,m≥1且为正整数。
15.一种面向云计算的内存分配装置,其特征在于,所述装置包括:
第二接收模块,用于接收在预设时间内来自不同节点的请求消息,每个请求消息用于请求获取远程内存资源,每个请求消息中包括:请求方节点的标识和请求远程内存资源大小;
第二确定模块,用于根据请求方节点的标识和请求远程内存资源大小,对集群中的节点分别进行通信性能和内存资源大小的筛选,为每个请求方节点确定出一个贡献节点集合,每个贡献节点集合中包括至少一个贡献方节点;
第二匹配模块,用于建立不同请求方节点与不同贡献节点集合内的贡献方节点之间的匹配关系,生成至少两个有效匹配组合,其中,每个有效匹配组合包含多个匹配关系,每个所述匹配关系为一个请求方节点与为其提供远程内存资源的一个贡献方节点之间的绑定关系;
第二发送模块,用于将所述至少两个有效匹配组合发送至不同的请求方节点,以使每个请求方节点选择目标有效匹配组合并获取远程内存资源;
所述第二匹配模块,具体用于获取第i个请求方节点所请求的远程内存资源大小Ei,以及为所述第i个请求方节点筛选的贡献节点集合,采用枚举法根据所述第i个请求方节点所请求的远程内存资源Ei和贡献方节点的内存资源Pj按照规则建立两个或两个以上匹配关系,生成至少两个有效匹配组合,所述贡献节点集合中包括m个贡献方节点,m个节点中的任一个节点的内存资源大小为Pj,m≥1且为正整数。
16.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器和所述处理器之间互相通信连接,
所述存储器中存储有计算机指令,所述处理器通过执行计算机指令,从而执行权利要求1至12中任一项,或者权利要求13中所述的面向云计算的内存分配方法。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令;
所述计算机指令用于使计算机执行权利要求1至12中任一项,或者权利要求13中所述的面向云计算的内存分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310695558.5A CN116436978B (zh) | 2023-06-13 | 2023-06-13 | 面向云计算的内存分配方法、内存获取方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310695558.5A CN116436978B (zh) | 2023-06-13 | 2023-06-13 | 面向云计算的内存分配方法、内存获取方法、装置和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116436978A CN116436978A (zh) | 2023-07-14 |
CN116436978B true CN116436978B (zh) | 2023-08-29 |
Family
ID=87083654
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310695558.5A Active CN116436978B (zh) | 2023-06-13 | 2023-06-13 | 面向云计算的内存分配方法、内存获取方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116436978B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104166597A (zh) * | 2013-05-17 | 2014-11-26 | 华为技术有限公司 | 一种分配远程内存的方法及装置 |
CN104571934A (zh) * | 2013-10-18 | 2015-04-29 | 华为技术有限公司 | 一种内存访问的方法、设备和系统 |
-
2023
- 2023-06-13 CN CN202310695558.5A patent/CN116436978B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104166597A (zh) * | 2013-05-17 | 2014-11-26 | 华为技术有限公司 | 一种分配远程内存的方法及装置 |
CN104571934A (zh) * | 2013-10-18 | 2015-04-29 | 华为技术有限公司 | 一种内存访问的方法、设备和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116436978A (zh) | 2023-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200364608A1 (en) | Communicating in a federated learning environment | |
US9596295B2 (en) | Computing connected components in large graphs | |
US9317336B2 (en) | Method and apparatus for assignment of virtual resources within a cloud environment | |
US11637889B2 (en) | Configuration recommendation for a microservice architecture | |
CN107545338B (zh) | 业务数据处理方法及业务数据处理系统 | |
EP3754915B1 (en) | Data processing method and apparatus | |
EP3596600B1 (en) | Systems and methods for compute node management protocols | |
CN110365748A (zh) | 业务数据的处理方法和装置、存储介质及电子装置 | |
CN109451540B (zh) | 一种网络切片的资源分配方法和设备 | |
JP6881575B2 (ja) | 資源割当システム、管理装置、方法およびプログラム | |
CN104052803A (zh) | 一种去中心化的分布式渲染方法及渲染系统 | |
CN105515977B (zh) | 获取网络中传输路径的方法、装置和系统 | |
CN110069210B (zh) | 一种存储系统、存储资源的分配方法及装置 | |
CN109710406B (zh) | 数据分配及其模型训练方法、装置、及计算集群 | |
US20220318071A1 (en) | Load balancing method and related device | |
CN109413202B (zh) | 区块链交易信息的排序系统及方法 | |
CN112532674A (zh) | 一种网络边缘计算系统的创建方法、装置及介质 | |
US7962650B2 (en) | Dynamic component placement in an event-driven component-oriented network data processing system | |
KR20170014804A (ko) | 클라우드 서비스를 위한 가상 머신 프로비저닝 시스템 및 방법 | |
WO2024066626A1 (zh) | 实时音视频网络的路由规划方法及装置 | |
CN112532758B (zh) | 一种网络边缘计算系统的创建方法、装置及介质 | |
CN116436978B (zh) | 面向云计算的内存分配方法、内存获取方法、装置和设备 | |
CN115168017B (zh) | 一种任务调度云平台及其任务调度方法 | |
CN112433850A (zh) | 一种任务全局调度的方法、装置、设备及可读介质 | |
CN117499017B (zh) | 区块链网络传输方法、系统及存储介质和终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |