管理内存的方法、装置和系统与流程

文档序号:15998807发布日期:2018-11-20 19:11阅读:192来源:国知局

本发明涉及计算机领域,并且更具体地,涉及管理内存的方法、装置和系统



背景技术:

目前,管理资源的服务器系统根据规模不同,通常由几十台、几百台、甚至上万台计算机服务器节点组成。这些服务器节点大部分都是采用市场上的商用标准服务器,它们拥有各自独立内存等硬件设备。

随着云计算模式的不断普及和广为接受,服务器节点需要为云计算服务,因此,应用负载变得越来越多样化,与事务处理和网络服务这样的传统负载相比,新出现的工作负载均是以数据为中心的。这些新的输入输出(IO,Input/Output)密集型的负载运行在大规模集群上(几百或几千台服务器),处理着多种多样的数据(有结构化的、无结构的、多媒体的)。

因此,需要一种能够使各服务器节点之间容易地共享内存资源的方法。



技术实现要素:

本发明实施例提供一种管理内存的方法、装置和系统,能够容易地实现内存资源的共享。

第一方面,提供了一种管理内存的方法,该方法包括:内存管理系统中的请求节点发送第一指示信息,该第一指示信息用于指示该请求节点所需内存的长度;接收第二指示信息,该第二指示信息用于指示能够提供远程内存的至少一个贡献节点中的目标贡献节点向该请求节点提供的第一远程内存,其中,该第一远程内存是根据该第一指示信息确定的,该第一远程内存的长度大于或等于该请求节点所需内存的长度;从能够使用的虚拟地址中,确定与该第一远程内存相对应的第一虚拟地址;当需要读写指针在该第一虚拟地址范围内的第一数据时,发送针对该第一数据的第一数据读写指令,该第一数据读写指令包括第三指示信息,该第三指示信息用于指示该第一远程内存中用于存储该第一数据的存储空间,以便于该目标贡献节点根据该第三指示信息,存取该第一数据。

在一种可能的实施方式中,该内存管理系统中的请求节点发送第一指示信息包括:内存管理系统中的请求节点获取用于指示该目标贡献节点的贡献节点信息;根据该贡献节点信息,向该目标贡献节点发送第一指示信息;以及该接收第二指示信息包括:接收该目标贡献节点发送的第二指示信息。

结合第一方面和第一种可能的实施方式,在第二种可能的实施方式中,该根据该贡献节点信息,向该目标贡献节点发送第一指示信息,包括:根据该贡献节点信息,向该目标贡献节点发送针对第二数据的第二数据写指令,该第二数据写指令包括该第一指示信息;以及该接收该目标贡献节点发送的第二指示信息包括:接收该目标贡献节点发送的用于指示该第二数据存储完成的第二数据写应答,该第二数据写应答包括该第二指示信息。

结合第一方面、第一种可能的实施方式和第二种可能的实施方式,在第三种可能的实施方式中,该内存管理系统中的请求节点发送第一指示信息包括:内存管理系统中的请求节点向控制中心发送第一指示信息,以便于该控制中心根据该第一指示信息和该贡献节点能够提供的远程内存的长度,从该贡献节点中确定该目标贡献节点以及该第一远程内存,其中,该贡献节点能够提供的远程内存的长度是该控制中心根据该贡献节点发送的用于指示该贡献节点能够提供的远程内存的长度的第四指示信息确定的;以及该接收第二指示信息包括:接收该控制中心发送的第二指示信息。

结合第一方面、第一种可能的实施方式、第二种可能的实施方式和第三种可能的实施方式,在第四种可能的实施方式中,该方法还包括:接收该控制中心发送的用于指示该目标贡献节点的贡献节点信息,以及该发送针对该第一数据的第一数据读写指令,包括:根据该贡献节点信息,向该目标贡献节点发送针对该第一数据的第一数据读写指令。

结合第一方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式和第四种可能的实施方式,在第五种可能的实施方式中,该发送针对该第一数据的第一数据读写指令,包括:广播针对该第一数据的第一数据读写指令,以便于该贡献节点在确定该存储空间在该贡献节点能够提供的远程内存的范围内后,存取该第一数据。

结合第一方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式和第五种可能的实施方式,在第六种可能的实施方式中,内存管理系统包括至少两个贡献节点,该至少两个贡献节点能够提供的远程内存的物理地址相异。

结合第一方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式、第五种可能的实施方式和第六种可能的实施方式,在第七种可能的实施方式中,该根据该第一远程内存,确定第一虚拟地址,包括:从该请求节点内的本地内存中,确定与该第一远程内存相对应的第一本地内存,根据该第一本地内存,确定第一虚拟地址。

结合第一方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式、第五种可能的实施方式、第六种可能的实施方式和第七种可能的实施方式,在第八种可能的实施方式中,该第一远程内存的长度与该请求节点所需内存的长度相同,以及该第二指示信息用于指示该第一远程内存的起始物理地址;该第一远程内存的长度与该第一数据的长度相同,以及该第三指示信息用于指示该存储空间的起始物理地址。

结合第一方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式、第五种可能的实施方式、第六种可能的实施方式、第七种可能的实施方式和第八种可能的实施方式,在第九种可能的实施方式中,该第二指示信息用于指示该第一远程内存的起始物理地址和长度;以及当该第一数据的长度与该第二指示信息指示的该第一远程内存的长度相同时,该第三指示信息用于指示该第一远程内存的起始物理地址;当该第一数据的长度小于该第二指示信息指示的该第一远程内存的长度时,该第三指示信息用于指示该存储空间的起始物理地址和长度。

第二方面,提供了一种管理内存的方法,该方法包括:内存管理系统中的贡献节点确定第一远程内存,该第一远程内存是根据来自请求节点的第一指示信息确定的,该第一指示信息用于指示该请求节点所需内存的长度,该第一远程内存的长度大于或等于该请求节点所需内存的长度;接收该请求节点发送的针对第一数据的第一数据读写指令,该第一数据读写指令用于指示该贡献节点存取该第一数据,该第一数据读写指令包括第三指示信息,该第三指示信息用于指示该第一远程内存中用于存储该第一数据的存储空间;根据第一数据读写指令和该第三指示信息,存取该第一数据。

在一种可能的实施方式中,该内存管理系统中的贡献节点确定第一远程内存包括:内存管理系统中的贡献节点接收该请求节点发送的该第一指示信息;根据该第一指示信息,确定该第一远程内存;以及该方法还包括:向该请求节点发送用于指示该第一远程内存的第二指示信息。

结合第二方面和第一种可能的实施方式,在第二种可能的实施方式中,该内存管理系统中的贡献节点接收该请求节点发送的该第一指示信息包括:内存管理系统中的贡献节点接收该请求节点发送的针对第二数据的第二数据写指令以及该第二数据,该第二数据写指令包括该第一指示信息;根据该第一指示信息,确定该第一远程内存,并将该第一数据存储在该第一远程内存中;以及该向该请求节点发送用于指示该第一远程内存的第二指示信息包括:向该请求节点发送的用于指示该第二数据存储完成的第二数据写应答,该第二数据写应答包括用于指示该第一远程内存的第二指示信息。

结合第二方面、第一种可能的实施方式和第二种可能的实施方式,在第三种可能的实施方式中,该内存管理系统中的贡献节点确定第一远程内存包括:内存管理系统中的贡献节点向控制中心发送第四指示信息,该第四指示信息用于指示该贡献节点能够提供的远程内存的起始物理地址和长度;接收该控制中心发送的第二指示信息,该第二指示信息是该控制中心根据该第一指示信息和该第四指示信息确定的;根据该第二指示信息,确定该第一远程内存。

结合第二方面、第一种可能的实施方式、第二种可能的实施方式和第三种可能的实施方式,在第四种可能的实施方式中,该根据第一数据读写指令和该第三指示信息,存取该第一数据,包括:确定该存储空间在该第一远程内存的范围内;根据第一数据读写指令,在该存储空间内存取该第一数据。

结合第二方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式和第四种可能的实施方式,在第五种可能的实施方式中,该请求节点所需内存的长度与该第一数据的长度相同,该目标贡献节点能够提供的远程内存的长度与该请求节点所需内存的长度相同,以及该第二指示信息和该第三指示信息用于指示该第一远程内存的起始物理地址。

结合第二方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式和第五种可能的实施方式,在第六种可能的实施方式中,该第二指示信息用于指示该第一远程内存的起始物理地址和长度;以及当该第一数据的长度与该第二指示信息指示的该第一远程内存的长度相同时,该第三指示信息用于指示该第一远程内存的起始物理地址;当该第一数据的长度小于该第二指示信息指示的该第一远程内存的长度时,该第三指示信息用于指示该存储空间的起始物理地址和长度。

结合第二方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式、第五种可能的实施方式和第六种可能的实施方式,在第七种可能的实施方式中,该方法还包括:获取用于指示该请求节点的请求节点信息;根据该请求节点信息,确定该请求节点;禁止除该请求节点以外的节点使用该第一远程内存。

第三方面,提供了一种管理内存的方法,该方法包括:内存管理系统中的控制中心确定至少一个贡献节点能够提供的远程内存的起始物理地址和长度,接收请求节点发送的第一指示信息,第一指示信息用于指示该请求节点所需内存的长度,根据该第一指示信息和该至少一个贡献节点能够提供的远程内存的起始物理地址和长度,从该贡献节点中确定目标贡献节点以及该目标贡献节点向该请求节点提供的第一远程内存,该第一远程内存的长度大于或等于该请求节点所需内存的长度;向该请求节点和该目标贡献节点发送用于指示该第一远程内存的第二指示信息,以便于该请求节点和该目标贡献节点根据该第二指示信息,确定该第一远程内存,并在该第一远程内存进行针对第一数据存取,其中,该第一数据的指针在该请求节点为该第一远程内存分配的第一虚拟地址范围内。

在一种可能的实施方式中,该方法还包括:向该请求节点发送用于指示该目标贡献节点的贡献节点信息,以便于该请求节点根据该贡献节点信息,向该目标贡献节点发送针对该第一数据的第一数据读写指令。

结合第三方面和第一种可能的实施方式,在第二种可能的实施方式中,该方法还包括:向该贡献节点发送用于指示该请求节点的请求节点信息,以便于该目标贡献节点根据该请求节点信息,确定该请求节点,并禁止除该请求节点以外的节点使用该第一远程内存。

结合第三方面、第一种可能的实施方式和第二种可能的实施方式,在第三种可能的实施方式中,该内存管理系统包括至少两个贡献节点,以及该根据该第一指示信息和该第四指示信息,从该贡献节点中确定目标贡献节点以及该目标贡献节点向该请求节点提供的第一远程内存包括:根据该第一指示信息和该第四指示信息,从该贡献节点中确定目标贡献节点以及该目标贡献节点向该请求节点提供的第一远程内存,以使包括该第一远程内存在内的各贡献节点提供的远程内存的物理地址相异。

结合第三方面、第一种可能的实施方式、第二种可能的实施方式和第三种可能的实施方式,在第四种可能的实施方式中,该请求节点所需内存的长度与该第一数据的长度相同,该目标贡献节点能够提供的远程内存的长度与该请求节点所需内存的长度相同,以及该第二指示信息和该第三指示信息用于指示该第一远程内存的起始物理地址。

结合第三方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式和第四种可能的实施方式,在第五种可能的实施方式中,该第二指示信息用于指示该第一远程内存的起始物理地址和长度;以及当该第一数据的长度与该第二指示信息指示的该第一远程内存的长度相同时,该第三指示信息用于指示该第一远程内存的起始物理地址;当该第一数据的长度小于该第二指示信息指示的该第一远程内存的长度时,该第三指示信息用于指示用于存储该第一数据的存储空间的起始物理地址和长度。

第四方面,提供了一种管理内存的装置,该装置包括:发送单元,用于使内存管理系统中的请求节点发送第一指示信息,该第一指示信息用于指示该请求节点所需内存的长度;接收单元,用于该第二指示信息用于指示能够提供远程内存的至少一个贡献节点中的目标贡献节点向该请求节点提供的第一远程内存,其中,该第一远程内存是根据该第一指示信息确定的,该第一远程内存的长度大于或等于该请求节点所需内存的长度;处理单元,用于从能够使用的虚拟地址中,确定与该第一远程内存相对应的第一虚拟地址;用于当需要读写指针在该第一虚拟地址范围内的第一数据时,控制该发送单元发送针对该第一数据的第一数据读写指令,该第一数据读写指令包括第三指示信息,该第三指示信息用于指示该第一远程内存中用于存储该第一数据的存储空间,以便于该目标贡献节点根据该第三指示信息,存取该第一数据。

在一种可能的实施方式中,该处理单元具体用于获取用于指示该目标贡献节点的贡献节点信息;该发送单元具体用于根据该贡献节点信息,向该目标贡献节点发送第一指示信息;该接收单元具体用于接收该目标贡献节点发送的第二指示信息。

结合第四方面和第一种可能的实施方式,在第二种可能的实施方式中,该发送单元具体用于根据该贡献节点信息,向该目标贡献节点发送针对第二数据的第二数据写指令,该第二数据写指令包括该第一指示信息;以及该接收单元具体用于接收该目标贡献节点发送的用于指示该第二数据存储完成的第二数据写应答,该第二数据写应答包括该第二指示信息。

结合第四方面、第一种可能的实施方式和第二种可能的实施方式,在第三种可能的实施方式中,该发送单元具体用于向控制中心发送第一指示信息,以便于该控制中心根据该第一指示信息和该贡献节点能够提供的远程内存的长度,从该贡献节点中确定该目标贡献节点以及该第一远程内存,其中,该贡献节点能够提供的远程内存的长度是该控制中心根据该贡献节点发送的用于指示该贡献节点能够提供的远程内存的长度的第四指示信息确定的;以及该接收单元具体用于接收该控制中心发送的第二指示信息。

结合第四方面、第一种可能的实施方式、第二种可能的实施方式和第三种可能的实施方式,在第四种可能的实施方式中,该接收单元还用于接收该控制中心发送的用于指示该目标贡献节点的贡献节点信息,以及该发送单元具体用于根据该贡献节点信息,向该目标贡献节点发送针对该第一数据的第一数据读写指令。

结合第四方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式和第四种可能的实施方式,在第五种可能的实施方式中,该发送单元具体用于广播针对该第一数据的第一数据读写指令,以便于该贡献节点在确定该存储空间在该贡献节点能够提供的远程内存的范围内后,存取该第一数据。

结合第四方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式和第五种可能的实施方式,在第六种可能的实施方式中,该内存管理系统包括至少两个贡献节点,该至少两个贡献节点能够提供的远程内存的物理地址相异。

结合第四方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式、第五种可能的实施方式和第六种可能的实施方式,在第七种可能的实施方式中,该处理单元具体用于从该请求节点内的本地内存中,确定与该第一远程内存相对应的第一本地内存;用于根据该第一本地内存,确定第一虚拟地址。

结合第四方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式、第五种可能的实施方式、第六种可能的实施方式和第七种可能的实施方式,在第八种可能的实施方式中,该第一远程内存的长度与该请求节点所需内存的长度相同,以及该第二指示信息用于指示该第一远程内存的起始物理地址;该第一远程内存的长度与该第一数据的长度相同,以及该第三指示信息用于指示该存储空间的起始物理地址。

结合第四方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式、第五种可能的实施方式、第六种可能的实施方式、第七种可能的实施方式和第八种可能的实施方式,在第九种可能的实施方式中,该第二指示信息用于指示该第一远程内存的起始物理地址和长度;以及当该第一数据的长度与该第二指示信息指示的该第一远程内存的长度相同时,该第三指示信息用于指示该第一远程内存的起始物理地址;当该第一数据的长度小于该第二指示信息指示的该第一远程内存的长度时,该第三指示信息用于指示该存储空间的起始物理地址和长度。

第五方面,提供了一种管理内存的装置,该装置包括:处理单元,用于使内存管理系统中的贡献节点确定第一远程内存,该第一远程内存是根据来自请求节点的第一指示信息确定的,该第一指示信息用于指示该请求节点所需内存的长度,该第一远程内存的长度大于或等于该请求节点所需内存的长度;接收单元,用于接收该请求节点发送的针对第一数据的第一数据读写指令,该第一数据读写指令用于指示该贡献节点存取该第一数据,该第一数据读写指令包括第三指示信息,该第三指示信息用于指示该第一远程内存中用于存储该第一数据的存储空间;该处理单元还用于根据第一数据读写指令和该第三指示信息,存取该第一数据。

在一种可能的实施方式中,该接收单元具体用于接收该请求节点发送的该第一指示信息;该处理单元具体用于根据该第一指示信息,确定该第一远程内存;以及该装置还包括:发送单元,用于向该请求节点发送用于指示该第一远程内存的第二指示信息。

结合第五方面和第一种可能的实施方式,在第二种可能的实施方式中,该接收单元具体用于接收该请求节点发送的针对第二数据的第二数据写指令以及该第二数据,该第二数据写指令包括该第一指示信息;该处理单元具体用于根据该第一指示信息,确定该第一远程内存,并将该第一数据存储在该第一远程内存中;该发送单元具体用于向该请求节点发送的用于指示该第二数据存储完成的第二数据写应答,该第二数据写应答包括用于指示该第一远程内存的第二指示信息。

结合第五方面、第一种可能的实施方式和第二种可能的实施方式,在第三种可能的实施方式中,该装置还包括:发送单元,用于向控制中心发送第四指示信息,该第四指示信息用于指示该贡献节点能够提供的远程内存的起始物理地址和长度;该接收单元具体用于接收该控制中心发送的第二指示信息,该第二指示信息是该控制中心根据该第一指示信息和该第四指示信息确定的;该处理单元具体用于根据该第二指示信息,确定该第一远程内存。

结合第五方面、第一种可能的实施方式、第二种可能的实施方式和第三种可能的实施方式,在第四种可能的实施方式中,该处理单元具体用于确定该存储空间在该第一远程内存的范围内;用于根据第一数据读写指令,在该存储空间内存取该第一数据。

结合第五方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式和第四种可能的实施方式,在第五种可能的实施方式中,该请求节点所需内存的长度与该第一数据的长度相同,该目标贡献节点能够提供的远程内存的长度与该请求节点所需内存的长度相同,以及该第二指示信息和该第三指示信息用于指示该第一远程内存的起始物理地址。

结合第五方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式和第五种可能的实施方式,在第六种可能的实施方式中,该第二指示信息用于指示该第一远程内存的起始物理地址和长度;以及当该第一数据的长度与该第二指示信息指示的该第一远程内存的长度相同时,该第三指示信息用于指示该第一远程内存的起始物理地址;当该第一数据的长度小于该第二指示信息指示的该第一远程内存的长度时,该第三指示信息用于指示该存储空间的起始物理地址和长度。

结合第五方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式、第五种可能的实施方式和第六种可能的实施方式,在第七种可能的实施方式中,该处理单元还用于获取用于指示该请求节点的请求节点信息;用于根据该请求节点信息,确定该请求节点;用于禁止除该请求节点以外的节点使用该第一远程内存。

第六方面,提供了一种管理内存的装置,该装置包括:处理单元,用于使内存管理系统中的控制中心确定至少一个贡献节点能够提供的远程内存的起始物理地址和长度;接收单元,用于接收请求节点发送的第一指示信息,第一指示信息用于指示该请求节点所需内存的长度;该处理单元还用于根据该第一指示信息和该至少一个贡献节点能够提供的远程内存的起始物理地址和长度,从该贡献节点中确定目标贡献节点以及该目标贡献节点向该请求节点提供的第一远程内存,该第一远程内存的长度大于或等于该请求节点所需内存的长度;发送单元,用于向该请求节点和该目标贡献节点发送用于指示该第一远程内存的第二指示信息,以便于该请求节点和该目标贡献节点根据该第二指示信息,确定该第一远程内存,并在该第一远程内存进行针对第一数据存取,其中,该第一数据的指针在该请求节点为该第一远程内存分配的第一虚拟地址范围内。

在一种可能的实施方式中,该发送单元还用于向该请求节点发送用于指示该目标贡献节点的贡献节点信息,以便于该请求节点根据该贡献节点信息,向该目标贡献节点发送针对该第一数据的第一数据读写指令。

结合第六方面和第一种可能的实施方式,在第二种可能的实施方式中,该发送单元还用于向该贡献节点发送用于指示该请求节点的请求节点信息,以便于该目标贡献节点根据该请求节点信息,确定该请求节点,并禁止除该请求节点以外的节点使用该第一远程内存。

结合第六方面、第一种可能的实施方式和第二种可能的实施方式,在第三种可能的实施方式中,该内存管理系统包括至少两个贡献节点,以及该根据该第一指示信息和该第四指示信息,从该贡献节点中确定目标贡献节点以及该目标贡献节点向该请求节点提供的第一远程内存包括:根据该第一指示信息和该第四指示信息,从该贡献节点中确定目标贡献节点以及该目标贡献节点向该请求节点提供的第一远程内存,以使包括该第一远程内存在内的各贡献节点提供的远程内存的物理地址相异。

结合第六方面、第一种可能的实施方式、第二种可能的实施方式和第三种可能的实施方式,在第四种可能的实施方式中,该请求节点所需内存的长度与该第一数据的长度相同,该目标贡献节点能够提供的远程内存的长度与该请求节点所需内存的长度相同,以及该第二指示信息和该第三指示信息用于指示该第一远程内存的起始物理地址。

结合第六方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式和第四种可能的实施方式,在第五种可能的实施方式中,该第二指示信息用于指示该第一远程内存的起始物理地址和长度;以及当该第一数据的长度与该第二指示信息指示的该第一远程内存的长度相同时,该第三指示信息用于指示该第一远程内存的起始物理地址;当该第一数据的长度小于该第二指示信息指示的该第一远程内存的长度时,该第三指示信息用于指示用于存储该第一数据的存储空间的起始物理地址和长度。

第七方面,提供了一种管理内存的系统,该系统包括:至少一个请求节点,用于发送第一指示信息,该第一指示信息用于指示该请求节点所需内存的长度,接收第二指示信息,该第二指示信息用于指示能够提供远程内存的至少一个贡献节点中的目标贡献节点向该请求节点提供的第一远程内存,其中,该第一远程内存是根据该第一指示信息确定的,该第一远程内存的长度大于或等于该请求节点所需内存的长度,从能够使用的虚拟地址中,确定与该第一远程内存相对应的第一虚拟地址,当需要读写指针在该第一虚拟地址范围内的第一数据时,发送针对该第一数据的第一数据读写指令,该第一数据读写指令包括第三指示信息,该第三指示信息用于指示该第一远程内存中用于存储该第一数据的存储空间,以便于该目标贡献节点根据该第三指示信息,存取该第一数据;至少一个贡献节点,用于确定第一远程内存,该第一远程内存是根据来自请求节点的第一指示信息确定的,该第一指示信息用于指示该请求节点所需内存的长度,该第一远程内存的长度大于或等于该请求节点所需内存的长度,接收该请求节点发送的针对第一数据的第一数据读写指令,该第一数据读写指令用于指示该贡献节点存取该第一数据,该第一数据读写指令包括第三指示信息,该第三指示信息用于指示该第一远程内存中用于存储该第一数据的存储空间,根据第一数据读写指令和该第三指示信息,存取该第一数据。

在一种可能的实施方式中,该系统还包括:控制中心,用于确定至少一个贡献节点能够提供的远程内存的起始物理地址和长度;接收请求节点发送的第一指示信息,第一指示信息用于指示该请求节点所需内存的长度;根据该第一指示信息和该至少一个贡献节点能够提供的远程内存的起始物理地址和长度,从该贡献节点中确定目标贡献节点以及该目标贡献节点向该请求节点提供的第一远程内存,该第一远程内存的长度大于或等于该请求节点所需内存的长度;向该请求节点和该目标贡献节点发送用于指示该第一远程内存的第二指示信息,以便于该请求节点和该目标贡献节点根据该第二指示信息,确定该第一远程内存,并在该第一远程内存进行针对第一数据存取,其中,该第一数据的指针在该请求节点为该第一远程内存分配的第一虚拟地址范围内。

根据本发明实施例的管理内存的方法、装置和系统,通过根据请求节点所需要的内存和贡献节点能够提供的内存,从贡献节点中确定供请求节点使用的远程内存,在请求节点中为该远程内存分配虚拟地址,在请求节点需要存储指针在该虚拟地址范围内的数据时,可以根据该虚拟地址与该远程内存的对应关系,确定需要在贡献节点上对该数据进行存取,从而可以向该贡献节点发送数据读写指令,以实现在远程内存上对该数据的存取,从而,能够容易地实现内存的共享。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据本发明一实施例的管理内存的方法的示意性流程图。

图2是根据本发明另一实施例的管理内存的方法的示意性流程图。

图3是根据本发明再一实施例的管理内存的方法的示意性流程图。

图4是根据本发明一实施例的管理内存的装置的示意性框图。

图5是根据本发明另一实施例的管理内存的装置的示意性框图。

图6是根据本发明再一实施例的管理内存的装置的示意性框图。

图7是根据本发明一实施例的管理内存的系统的示意性框图。

图8是根据本发明一实施例的管理内存的系统的示意性结构图

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的技术方案,可以应用于具有两个以上的服务器节点的服务器系统,各服务器节点可以具有独立的硬件结构,以能够独立的实现相同或相异的业务,并且,各服务器节点彼此之间能够进行通信。

需要说明的是,在本发明实施例中,各服务器节点均具有的一定的内存空间,但各服务器节点的内存大小可以相同或相异,本发明并未特别限定。

为了便于理解,在以下说明中,将该两个以上的服务器节点中因其自身内存不足等而请求使用其他服务器节点的一方称为请求节点,将能够向其他服务器节点提供内存(以下,称为远程内存)的一方称为贡献节点。需要说明的是,在本发明实施例中,一个服务器节点可以在某一时段内作为请求节点,并在另一时段内作为贡献节点,或者一个服务器节点可以同时作为请求节点以及对于另一服务器节点的贡献节点。

图1示出了从请求节点的角度描述的管理内存的方法100的示意性流程图。如图1所示,该方法100包括:

S110,内存管理系统中的请求节点发送第一指示信息,该第一指示信息用于指示该请求节点所需内存的长度;

该实施例中,内存的长度代表内存的容量大小;该请求节点所需内存的长度即该请求节点所需的内存的容量。

S120,该请求节点接收第二指示信息,该第二指示信息用于指示能够提供远程内存的至少一个贡献节点中的目标贡献节点向该请求节点提供的第一远程内存,其中,该第一远程内存是根据该第一指示信息确定的,该第一远程内存的长度大于或等于该请求节点所需内存的长度;

S130,该请求节点从能够使用的虚拟地址中,确定与该第一远程内存相对应的第一虚拟地址;

S140,当需要读写指针在该第一虚拟地址范围内的第一数据时,该请求节点发送针对该第一数据的第一数据读写指令,该第一数据读写指令包括第三指示信息,该第三指示信息用于指示该第一远程内存中用于存储该第一数据的存储空间,以便于该目标贡献节点根据该第三指示信息,存取该第一数据。

具体地说,在S110,例如,当请求节点的本地内存不足或者需要使用贡献节点提供的大容量内存以执行应用或处理业务时,请求节点可以向外部发送请求消息,该请求消息可以携带指示该请求节点所需要的内存的信息(第一指示信息的一例),应理解,在本发明实施例中,该第一指示信息所指示的内存容量可以大于该请求节点所需要的内存容量,也可以等于该请求节点所需要的内存容量,本发明并未特别限定。

在本发明实施例中,请求节点可以获知该系统内的各贡献节点的路由信息(后述贡献节点信息的一例),从而,可以直接向该贡献节点发送上述请求消息(即,情况1),或者,可以在系统内配置后述控制中心,以统一执行对系统内各贡献节点提供的远程内存的分配,从而,请求节点可以向该系统内的控制中心发送上述请求消息(即,情况2),下面,分别对情况1和情况2进行说明。

情况1

可选地,在本发明实施例中,该内存管理系统中的请求节点发送第一指示信息包括:

内存管理系统中的请求节点获取用于指示该目标贡献节点的贡献节点信息;

根据该贡献节点信息,向该目标贡献节点发送第一指示信息;以及

该接收第二指示信息包括:

接收该目标贡献节点发送的第二指示信息。

并且,可选地,该贡献节点信息包括该贡献节点在该内存管理系统中的标识或该贡献节点在该内存管理系统中的位置。

具体地说,在本发明实施例中,系统内的各服务节点(包括贡献节点以及请求节点)可以获知彼此之间的路由信息(贡献节点信息的一例),并且,该路由信息可以是该服务节点的节点标识(Node ID),也可以是该服务节点的位置,例如,贡献节点可以在系统中广播指示其能够提供的远程内存的信息(例如,该信息可以指示该远程内存的大小以及该贡献节点的路由信息),请求节点可以根据该信息,确定该贡献节点以及该贡献节点能够提供远程内存,从而,在S110,请求节点可以根据各服务节点的路由信息,向系统中的贡献节点,发送请求消息,该请求消息可以携带指示该请求节点所需要的内存的信息(第一指示信息的一例)。

可选地,在本发明实施例中,该根据该贡献节点信息,向该目标贡献节点发送第一指示信息,包括:

根据该贡献节点信息,向该目标贡献节点发送针对第二数据的第二数据写指令,该第二数据写指令包括该第一指示信息。

具体地说,在本发明实施例中,如上所述,系统内的各服务节点(包括贡献节点以及请求节点)可以获知彼此之间的路由信息,从而,当请求节点的本地内存不足或者需要使用贡献节点提供的大容量内存以执行应用或处理业务时,例如,需要写入该应用或业务的数据(第二数据的一例)时,请求节点可以根据各服务节点的路由信息,向系统中的其他服务节点(包括贡献节点),发送针对该第二数据的数据写指令(第二数据写指令的一例),该第二数据写指令可以携带指示该请求节点所需要的内存的信息(第一指示信息的一例)。应理解,第一指示信息所指示的该请求节点所需要的内存的长度可以大于或等于该第二数据的长度,本发明并未特别限定。

该服务节点在接收到该请求消息后,可以根据该请求消息可以携带的第一指示信息,以及该服务节点能够对外提供的内存容量,确定是否能够为该请求节点提供其所需要的内存。

例如,如果该服务节点能够对外提供的内存容量大于或等于该请求节点提供其所需要的内存,则可以作为贡献节点。并且,该贡献节点可以向该请求节点返回响应消息,该响应消息可以携带指示该服务节点能够提供的内存(第一远程内存)的信息(第二指示信息)。在S120,请求节点可以接收该贡献节点发送的第二指示信息。从而,请求节点以及贡献节点双方可以获知,请求节点获得了该贡献节点中的第一远程内存的使用权,在本发明实施例中,该请求节点可以独占地使用该第一远程内存,从而能够提高业务的安全性。

可选地,该接收该目标贡献节点发送的第二指示信息包括:

接收该目标贡献节点发送的用于指示该第二数据存储完成的第二数据写应答,该第二数据写应答包括该第二指示信息。

具体地说,如果上述第一指示信息携带于第二数据写指令中,则由于第一指示信息所指示的该请求节点所需要的内存的长度大于或等于该第二数据的长度,因此,贡献节点可以根据该第二数据写指令,将该第二数据存储在第一远程内存的部分或全部存储空间,从而,贡献节点可以在发送给请求节点的用于指示该第二数据存储完成的第二数据写应答中携带该第二指示信息。

应理解,以上列举的第一数据和第二数据可以是相同的数据也可以是相异的数据,本发明并未特别限定。

可选地,该第一远程内存的长度与该请求节点所需内存的长度相同,以及该第二指示信息用于指示该第一远程内存的起始物理地址。

具体地说,如果该贡献节点提供的内存容量与该请求节点所需要的内存容量相同,则该贡献节点可以仅向请求节点返回该第一远程内存(在该贡献节点中)的起始物理地址(第二指示信息的一例)。从而,在该第二指示信息仅指示该起始物理地址的情况下,请求节点可以默认地确定该贡献节点提供的内存容量与该请求节点所需要的内存容量相同。

可选地,该第一远程内存的长度大于该请求节点所需内存的长度,以及该第二指示信息用于指示该第一远程内存的起始物理地址及长度。

具体地说,如果该贡献节点提供的内存容量大于该请求节点所需要的内存容量,则该贡献节点可以向请求节点返回该第一远程内存(在该贡献节点中)的起始物理地址及长度(第二指示信息的另一例)。从而,请求节点可以根据该第二指示信息,确定该第一远程内存的起始物理地址及长度,根据需要来使用该第一远程内存中的任意存储空间。

情况2

该内存管理系统中的请求节点发送第一指示信息包括:

内存管理系统中的请求节点向控制中心发送第一指示信息,以便于该控制中心根据该第一指示信息和该贡献节点能够提供的远程内存的长度,从该贡献节点中确定该目标贡献节点以及该第一远程内存,其中,该贡献节点能够提供的远程内存的长度是该控制中心根据该贡献节点发送的用于指示该贡献节点能够提供的远程内存的长度的第四指示信息确定的;以及

该接收第二指示信息包括:

接收该控制中心发送的第二指示信息。

在本发明实施例中,在系统内可以设置控制中心,用于获取服务器节点能够提供的远程内存的信息,并统一调度该远程内存资源。并且,在本发明实施例中,该控制中心可以与各服务器节点相独立,即,控制中心可以具有独立的硬件结构(例如,处理器、存储器及I/O设备等),从而与各服务器之间通过信令或消息等方式进行通信,或者,也可以在各服务器节点的系统内设置客户端,从而与各服务器节点共用处理器等硬件设备(例如,处理器、存储器及I/O设备等)。

具体地说,例如,当服务器节点(贡献节点)处于空闲或者有未使用的内存时,该节点能够向其他服务器节点提供内存(远程内存),并且,例如,在清理该远程内存内的数据、删除该远程内存在本节点内部的页表映射关系后,该贡献节点可以向控制中心上报指示其能够提供的远程内存的信息(第四指示信息),例如,该第四指示信息可以指示该远程内存在贡献节点中的物理地址及长度。从而,控制中心(或者说,配置在请求节点内的客户端)能够获知贡献节点的信息(例如,该贡献节点在系统内的路由信息)以及该贡献节点提供的远程内存的信息(例如,该远程内存的物理地址及长度)。

在S110,请求节点可以向控制中心发送请求信息,该请求消息可以携带指示该请求节点所需要的内存的信息(第一指示信息的一例)。

控制中心可以根据该第一指示信息以及该第四指示信息,确定能够贡献节点以及该贡献节点提供给请求节点的内存(第一远程内存)。例如,如果服务节点能够对外提供的内存容量大于或等于该请求节点提供其所需要的内存,则可以作为贡献节点。并且,在本发明实施例中,该控制中心确定的,第一远程内存可以大于或等于该第一指示信息指示的内存长度。该第一远程内存可以小于或等于该第四指示信息指示的内存长度。

并且,控制中心可以将指示该第一远程内存的信息(第二指示信息)发送给请求节点以及贡献节点,从而,请求节点以及贡献节点双方可以获知,请求节点获得了该贡献节点中的第一远程内存的使用权,在本发明实施例中,该请求节点可以独占地使用该第一远程内存,从而能够提高业务的安全性。

在S120,请求节点接收该控制中心发送的该第二指示信息。

可选地,该第一远程内存的长度与该请求节点所需内存的长度相同,以及该第二指示信息用于指示该第一远程内存的起始物理地址。

具体地说,如果该贡献节点提供的内存容量与该请求节点所需要的内存容量相同,则该贡献节点可以仅向请求节点返回该第一远程内存(在该贡献节点中)的起始物理地址(第二指示信息的一例)。从而,在该第二指示信息仅指示该起始物理地址的情况下,请求节点可以默认地确定该贡献节点提供的内存容量与该请求节点所需要的内存容量相同。

可选地,该第一远程内存的长度大于该请求节点所需内存的长度,以及该第二指示信息用于指示该第一远程内存的起始物理地址及长度。

具体地说,如果该贡献节点提供的内存容量大于该请求节点所需要的内存容量,则该贡献节点可以向请求节点返回该第一远程内存(在该贡献节点中)的起始物理地址及长度(第二指示信息的另一例)。从而,请求节点可以根据该第二指示信息,确定该第一远程内存的起始物理地址及长度,根据需要来使用该第一远程内存中的任意存储空间。

如上所述,在请求节点获得该第一远程内存的使用权后,在S130,请求节点可以为该第一远程内存分配虚拟地址(第一虚拟地址)。

可选地,该根据该第一远程内存,确定第一虚拟地址,包括:

根据所述第一远程内存,确定第一虚拟地址,其中,该第一虚拟地址与为该请求节点的本地内存分配的第二虚拟地址相异,该请求节点能够分配的虚拟地址的范围大于等于该第一远程内存与本地内存之和的范围。

具体地说,目前,通常的计算机系统中处理器能够达到32位乃至64位,从而,能够使用的虚拟地址的范围可以达到232乃至264,而通常的计算机系统中的内存容量远小于该值,从而,可以有足够的虚拟地址分配给该第一远程内存,请求节点可以将该第一远程内存视为其本地的内存空间,从而,可以使用与现有技术相同或类似的方法,为该内存空间(第一远程内存)分配虚拟地址(第一虚拟地址)。并且,为了避免指示混乱,可以规定分配给该第一远程内存的第一虚拟地址与分配给该请求节点中本地内存的第二虚拟地址相异。

从而,需要存取指针在第一虚拟地址范围内的数据(第一数据)时,可以根据该指针确定该第一数据存储或需要存储在第一远程内存(具体地说,是第一远程内存全部或部分存储空间),以在第一远程内存中存取该第一数据(随后详细说明)。

根据本发明实施例的管理内存的方法,能够不影响请求节点对本地内存的使用,降低数据存储流程的复杂度。

可选地,该根据该第一远程内存,确定第一虚拟地址,包括:

从该请求节点内的本地内存中,确定与该第一远程内存相对应的第一本地内存,

根据该第一本地内存,确定第一虚拟地址。

具体地说,请求节点可以根据该第一远程内存的长度,从将该请求节点的本地内存中确定一段内存空间(第一本地内存),并根据预设的算法或映射关系,例如,根据预设的比例(例如,1字节(Byte)的本地内存对应1千字节(Kbyte)的远程内存,应理解,以上列举的比例仅为示例性说明,本发明并不限定于此),生成该第一本地内存与该第一远程内存的对应关系页表。由于第一本地内存是请求节点的本地内存,因此,可以使用与现有技术相同或类似的方法,为该第一本地内存分配虚拟地址。

从而,需要存取指针在第一虚拟地址范围内的数据(第一数据)时,可以根据该指针确定第一本地内存(具体地说,是第一本地内存全部或部分存储空间),并根据如上述生成的该第一本地内存与该第一远程内存的对应关系页表,确定第一远程内存(具体地说,是第一远程内存全部或部分存储空间),以在第一远程内存中存取该第一数据(随后详细说明)。这里,需要说明的是,在本发明实施例中,可以使用与现有技术相同或类似的方法,根据该指针确定第一本地内存。

根据本发明实施例的管理内存的方法,能够减少对现有数据存储流程及方法的改变,提高了实用性。

在S140,请求节点在接收到针对指针在第一虚拟地址范围内的数据(第一数据)的读写指令(第一数据读写指令)时,可以根据该第一数据的指针,确定该第一数据存储(对应读指令)或需要存储(对应写指令)在远程内存中。其后,请求节点可以根据该第一数据的长度确定第一远程内存中用于存储该第一数据的存储空间。并且,在第一数据读写指令中携带指示该存储空间的信息(第三指示信息)

例如,在本发明实施例中,该第一远程内存的长度与该第一数据的长度相同,以及该第三指示信息用于指示该存储空间的起始物理地址。

具体的,如果该第一数据的指针长度与第一远程内存的长度相同,则需要使用该第一远程内存的全部存储空间,此时,在请求节点向贡献节点发送的数据读写指令(第一数据读写指令)中,可以携带指示该第一远程内存的起始物理地址的信息(第三指示信息的一例)。从而,在该第三指示信息仅指示该存储空间的起始物理地址,且指示的该存储空间的起始物理地址与第一远程内存的起始物理地址相同的情况下,贡献节点可以默认地确定该第一数据的长度与第一远程内存的长度相同,从而,可以实现对该第一数据的存取。

再例如,在本发明实施例中,该第一数据的长度小于该第二指示信息指示的该第一远程内存的长度时,该第三指示信息用于指示该存储空间的起始物理地址和长度

具体的,如果该第一数据的指针长度小于第一远程内存的长度,则需要使用该第一远程内存的部分存储空间,此时,在请求节点向贡献节点发送的数据读写指令(第一数据读写指令)中,可以携带指示该第一远程内存的部分存储空间的起始物理地址及长度的信息(第三指示信息的另一例)。从而,贡献节点可以根据该第三指示信息,在该第一远程内存中存取该第一数据。

可选地,在本发明实施例中,内存管理系统中的请求节点能够获取用于指示该目标贡献节点的贡献节点信息;以及

该根据该贡献节点信息,向该目标贡献节点发送第一指示信息,包括:

根据该贡献节点信息,向该目标贡献节点发送针对第二数据的第二数据写指令以及该第二数据,该第二数据写指令包括该第一指示信息;以及

该接收该目标贡献节点发送的第二指示信息包括:

接收该目标贡献节点发送的用于指示该第二数据存储完成的第二数据写应答,该第二数据写应答包括该第二指示信息。

并且,在本发明实施例中,该贡献节点信息包括该贡献节点在该内存管理系统中的标识或该贡献节点在该内存管理系统中的位置;

该请求信息包括该请求节点在该内存管理系统中的标识或该请求节点在该内存管理系统中的位置。

具体地说,在本发明实施例中,系统内的各服务节点(包括贡献节点以及请求节点)可以获知彼此之间的路由信息,并且,该路由信息可以是该服务节点的节点标识(Node ID),也可以是该服务节点的位置,例如,服务器节点可以在系统中广播指示该Node ID或该服务节点的位置的信息,从而,在S140,请求节点可以根据贡献节点的路由信息,向系统中的贡献节点,发送针对上述第一数据的数据读写指令(第一数据读写指令),该第一数据读写指令可以携带指示该第一数据存储或需要存储在的内存空间(第一远程内存的部分或全部存储空间)的信息(第三指示信息)。贡献节点可以接收带第一数据读写指令,并根据该第三指示信息,从第一远程内存中确定该第一数据存储或需要存储在的内存空间(第一远程内存的部分或全部存储空间),并对该第一数据进行存取。

可选地,在本发明实施例中,该发送针对该第一数据的第一数据读写指令,包括:

广播针对该第一数据的第一数据读写指令,以便于该贡献节点在确定该存储空间在该贡献节点能够提供的远程内存的范围内后,存取该第一数据。

具体地说,在本发明实施例中,请求节点在确定了该第一数据存储或需要存储在的存储空间后,可以在系统内广播针对上述第一数据的数据读写指令(第一数据读写指令),该第一数据读写指令可以携带指示该第一数据存储或需要存储在的存储空间(第一远程内存的部分或全部存储空间)的信息(第三指示信息)。由于在情况1中该贡献节点能够自主确定该第一远程内存的长度及起始物理地址,在情况2中该贡献节点能够从控制中心获知该第一远程内存的长度及起始物理地址。因此,当上述第三指示信息指示的该第一数据存储或需要存储在的存储空间在该第一远程内存的范围内时,可以确定能够在第一远程内存中进行针对该第一数据的存取。

由此,实现了在贡献节点中对来自请求节点的数据的存取。

在本发明实施例中,该内存管理系统包括至少两个贡献节点,该至少两个贡献节点能够提供的远程内存的物理地址相异。

具体地说,在系统内包括至少两个贡献节点的情况下,控制中心可以使至少两个贡献节点中的贡献节点a提供的远程内存a的物理地址与贡献节点b提供的远程内存b的物理地址相异,从而,在请求节点采用广播方式发送上述第一数据读写指令时,例如,如果请求节点需要使用贡献节点a提供的远程内存a,则第一数据读写指令中携带指示远程内存a中的存储空间的物理地址的信息(第三指示信息的一例),当贡献节点b接收到该第一数据读写指令时,由于第三指示信息指示的物理地址不在远程内存b的物理地址的范围内,因此,不会根据该第一数据读写指令进行读写。与此相对,当贡献节点a接收到该第一数据读写指令时,由于第三指示信息指示的物理地址在远程内存a的物理地址的范围内,因此,根据该第一数据读写指令进行读写。

在本发明实施例中,贡献节点b在接收到该第一数据读写指令,并由于第三指示信息指示的物理地址不在远程内存b的物理地址的范围内而确定不会根据该第一数据读写指令进行读写后,可以相系统内的相邻节点转发该第一数据读写指令,从而,能够加速该第一数据读写指令到达贡献节点a。并且,为了避免系统内出现信令风暴,贡献节点b对该第一数据读写指令仅转发一次。

根据本发明实施例的管理内存的方法,通过根据请求节点所需要的内存和贡献节点能够提供的内存,从贡献节点中确定供请求节点使用的远程内存,在请求节点中为该远程内存分配虚拟地址,在请求节点需要存储指针在该虚拟地址范围内的数据时,可以根据该虚拟地址与该远程内存的对应关系,确定需要在贡献节点上对该数据进行存取,从而可以向该贡献节点发送数据读写指令,以实现在远程内存上对该数据的存取,从而,容易地能够实现内存的共享。

图2示出了从贡献节点的角度描述的管理内存的方法200的示意性流程图。如图2所示,该方法200包括:

S210,内存管理系统中的贡献节点确定第一远程内存,该第一远程内存是根据来自请求节点的第一指示信息确定的,该第一指示信息用于指示该请求节点所需内存的长度,该第一远程内存的长度大于或等于该请求节点所需内存的长度;

该实施例中,内存的长度代表内存的容量大小。

S220,该贡献节点接收该请求节点发送的针对第一数据的第一数据读写指令,该第一数据读写指令用于指示该贡献节点存取该第一数据,该第一数据读写指令包括第三指示信息,该第三指示信息用于指示该第一远程内存中用于存储该第一数据的存储空间;

S230,该贡献节点根据第一数据读写指令和该第三指示信息,存取该第一数据。

具体地说,例如,当请求节点的本地内存不足或者需要使用贡献节点提供的大容量内存以执行应用或处理业务时,请求节点可以向外部发送请求消息,该请求消息可以携带指示该请求节点所需要的内存的信息(第一指示信息的一例),应理解,在本发明实施例中,该第一指示信息所指示的内存容量可以大于该请求节点所需要的内存容量,也可以等于该请求节点所需要的内存容量,本发明并未特别限定。

在本发明实施例中,请求节点可以获知该系统内的各贡献节点的路由信息(后述贡献节点信息的一例),并直接向该贡献节点发送上述请求消息,从而贡献节点可以接收该请求节点发送的第一指示信息(即,情况3),或者,可以在系统内配置后述控制中心,以统一执行对系统内各贡献节点提供的远程内存的分配(即,情况4),下面,分别对情况3和情况4进行说明。

情况3

可选地,在本发明实施例中,该内存管理系统中的贡献节点确定第一远程内存包括:

内存管理系统中的贡献节点接收该请求节点发送的该第一指示信息;

根据该第一指示信息,确定该第一远程内存;以及

该方法还包括:

向该请求节点发送用于指示该第一远程内存的第二指示信息。

具体地说,在本发明实施例中,系统内的各服务节点(包括贡献节点以及请求节点)可以获知彼此之间的路由信息(贡献节点信息的一例),并且,该路由信息可以是该服务节点的节点标识(Node ID),也可以是该服务节点的位置,例如,贡献节点可以在系统中广播指示其能够提供的远程内存的信息(例如,该信息可以指示该远程内存的大小以及该贡献节点的路由信息),请求节点可以根据该信息,确定该贡献节点以及该贡献节点能够提供远程内存,从而,请求节点可以根据各服务节点的路由信息,向系统中的贡献节点,发送请求消息,该请求消息可以携带指示该请求节点所需要的内存的信息(第一指示信息的一例),从而,在S210,该贡献节点在接收到该请求消息后,可以根据该请求消息可以携带的第一指示信息,以及该服务节点能够对外提供的内存容量,确定是否能够为该请求节点提供其所需要的内存。

例如,如果贡献节点能够对外提供的内存容量大于或等于该请求节点提供其所需要的内存,则可以从本地内存中确定容量大于或等于该请求节点提供其所需要的内存的远程内存(第一远程内存)。

并且,该贡献节点可以向该请求节点返回响应消息,该响应消息可以携带指示该服务节点能够提供的内存(第一远程内存)的信息(第二指示信息)。从而,请求节点可以接收该贡献节点发送的第二指示信息。从而,请求节点以及贡献节点双方可以获知,请求节点获得了该贡献节点中的第一远程内存的使用权,在本发明实施例中,该请求节点可以独占地使用该第一远程内存,从而能够提高业务的安全性。

可选地,在本发明实施例中,该内存管理系统中的贡献节点接收该请求节点发送的该第一指示信息包括:

内存管理系统中的贡献节点接收该请求节点发送的针对第二数据的第二数据写指令以及该第二数据,该第二数据写指令包括该第一指示信息;

根据该第一指示信息,确定该第一远程内存,并将该第一数据存储在该第一远程内存中;以及

该向该请求节点发送用于指示该第一远程内存的第二指示信息包括:

向该请求节点发送的用于指示该第二数据存储完成的第二数据写应答,该第二数据写应答包括用于指示该第一远程内存的第二指示信息。

具体地说,在本发明实施例中,如上所述,系统内的各服务节点(包括贡献节点以及请求节点)可以获知彼此之间的路由信息,从而,当请求节点的本地内存不足或者需要使用贡献节点提供的大容量内存以执行应用或处理业务时,例如,需要写入该应用或业务的数据(第二数据的一例)时,请求节点可以根据各服务节点的路由信息,向系统中的其他服务节点(包括贡献节点),发送针对该第二数据的数据写指令(第二数据写指令的一例),该第二数据写指令可以携带指示该请求节点所需要的内存的信息(第一指示信息的一例)。应理解,第一指示信息所指示的该请求节点所需要的内存的长度可以大于或等于该第二数据的长度,本发明并未特别限定。

如果上述第一指示信息携带于第二数据写指令中,则由于第一指示信息所指示的该请求节点所需要的内存的长度大于或等于该第二数据的长度,因此,贡献节点可以根据该第二数据写指令,将该第二数据存储在第一远程内存的部分或全部存储空间,从而,贡献节点可以在发送给请求节点的用于指示该第二数据存储完成的第二数据写应答中携带该第二指示信息。

应理解,以上列举的第一数据和第二数据可以是相同的数据也可以是相异的数据,本发明并未特别限定。

可选地,该第一远程内存的长度与该请求节点所需内存的长度相同,以及该第二指示信息用于指示该第一远程内存的起始物理地址。

具体地说,如果该贡献节点提供的内存容量与该请求节点所需要的内存容量相同,则该贡献节点可以仅向请求节点返回该第一远程内存(在该贡献节点中)的起始物理地址(第二指示信息的一例)。从而,在该第二指示信息仅指示该起始物理地址的情况下,请求节点可以默认地确定该贡献节点提供的内存容量与该请求节点所需要的内存容量相同。

可选地,该第一远程内存的长度大于该请求节点所需内存的长度,以及该第二指示信息用于指示该第一远程内存的起始物理地址及长度。

具体地说,如果该贡献节点提供的内存容量大于该请求节点所需要的内存容量,则该贡献节点可以向请求节点返回该第一远程内存(在该贡献节点中)的起始物理地址及长度(第二指示信息的另一例)。从而,请求节点可以根据该第二指示信息,确定该第一远程内存的起始物理地址及长度,根据需要来使用该第一远程内存中的任意存储空间。

情况4

该内存管理系统中的贡献节点确定第一远程内存包括:

内存管理系统中的贡献节点向控制中心发送第四指示信息,该第四指示信息用于指示该贡献节点能够提供的远程内存的起始物理地址和长度;

接收该控制中心发送的用于指示所述第一远程内存的第二指示信息,所述第一远程内存是该控制中心根据该第一指示信息和该第四指示信息确定的;

根据该第二指示信息,确定该第一远程内存。

在本发明实施例中,在系统内可以设置控制中心,用于获取服务器节点能够提供的远程内存的信息,并统一调度该远程内存资源。并且,在本发明实施例中,该控制中心可以与各服务器节点相独立,即,控制中心可以具有独立的硬件结构(例如,处理器、存储器及I/O设备等),从而与各服务器之间通过信令或消息等方式进行通信,或者,也可以在各服务器节点的系统内设置客户端,从而与各服务器节点共用处理器等硬件设备(例如,处理器、存储器及I/O设备等)。

具体地说,例如,当服务器节点(贡献节点)处于空闲或者有未使用的内存时,该节点能够向其他服务器节点提供内存(远程内存),并且,例如,在清理该远程内存内的数据、删除该远程内存在本节点内部的页表映射关系后,该贡献节点可以向控制中心上报指示其能够提供的远程内存的信息(第四指示信息),例如,该第四指示信息可以指示该远程内存在贡献节点中的物理地址及长度。从而,控制中心(或者说,配置在请求节点内的客户端)能够获知贡献节点的信息(例如,该贡献节点在系统内的路由信息)以及该贡献节点提供的远程内存的信息(例如,该远程内存的物理地址及长度)。

请求节点可以向控制中心发送请求消息,该请求消息可以携带指示该请求节点所需要的内存的信息(第一指示信息的一例)。

控制中心可以根据该第一指示信息以及该第四指示信息,确定能够贡献节点以及该贡献节点提供给请求节点的内存(第一远程内存)。例如,如果服务节点能够对外提供的内存容量大于或等于该请求节点提供其所需要的内存,则可以作为贡献节点。并且,在本发明实施例中,该控制中心确定的,第一远程内存可以大于或等于该第一指示信息指示的内存长度。该第一远程内存可以小于或等于该第四指示信息指示的内存长度。

并且,控制中心可以将指示该第一远程内存的信息(第二指示信息)发送给请求节点以及贡献节点,从而,在S210,贡献节点可以获知请求节点获得了该贡献节点中的第一远程内存的使用权,同样,请求节点也可以获知请求节点获得了该贡献节点中的第一远程内存的使用权。

可选地,该方法还包括:

获取用于指示该请求节点的请求节点信息;

根据该请求节点信息,确定该请求节点;

禁止除该请求节点以外的节点使用该第一远程内存。

具体地说,在本发明实施例中,该请求节点可以独占地使用该第一远程内存,从而能够提高业务的安全性。

可选地,该第一远程内存的长度与该请求节点所需内存的长度相同,以及该第二指示信息用于指示该第一远程内存的起始物理地址。

具体地说,如果该贡献节点提供的内存容量与该请求节点所需要的内存容量相同,则该贡献节点可以仅向请求节点返回该第一远程内存(在该贡献节点中)的起始物理地址(第二指示信息的一例)。从而,在该第二指示信息仅指示该起始物理地址的情况下,请求节点可以默认地确定该贡献节点提供的内存容量与该请求节点所需要的内存容量相同。

可选地,该第一远程内存的长度大于该请求节点所需内存的长度,以及该第二指示信息用于指示该第一远程内存的起始物理地址及长度。

具体地说,如果该贡献节点提供的内存容量大于该请求节点所需要的内存容量,则该贡献节点可以向请求节点返回该第一远程内存(在该贡献节点中)的起始物理地址及长度(第二指示信息的另一例)。从而,请求节点可以根据该第二指示信息,确定该第一远程内存的起始物理地址及长度,根据需要来使用该第一远程内存中的任意存储空间。

如上所述,在请求节点获得该第一远程内存的使用权后,请求节点可以为该第一远程内存分配虚拟地址(第一虚拟地址)。

例如,通常的计算机系统中处理器能够达到32位乃至64位,从而,能够使用的虚拟地址的范围可以达到232乃至264,而通常的计算机系统中的内存容量远小于该值,从而,可以有足够的虚拟地址分配给该第一远程内存,请求节点可以将该第一远程内存视为其本地的内存空间,从而,可以使用与现有技术相同或类似的方法,为该内存空间(第一远程内存)分配虚拟地址(第一虚拟地址)。并且,为了避免指示混乱,可以规定分配给该第一远程内存的第一虚拟地址与分配给该请求节点中本地内存的第二虚拟地址相异。

从而,需要存取指针在第一虚拟地址范围内的数据(第一数据)时,可以根据该指针确定该第一数据存储或需要存储在第一远程内存(具体地说,是第一远程内存全部或部分存储空间),以在第一远程内存中存取该第一数据(随后详细说明)。

根据本发明实施例的管理内存的方法,能够不影响请求节点对本地内存的使用,降低数据存储流程的复杂度。

再例如,请求节点可以根据该第一远程内存的长度,从将该请求节点的本地内存中确定一段内存空间(第一本地内存),并根据预设的算法或映射关系,例如,根据预设的比例(例如,1字节(Byte)的本地内存对应1千字节(Kbyte)的远程内存,应理解,以上列举的比例仅为示例性说明,本发明并不限定于此),生成该第一本地内存与该第一远程内存的对应关系页表。由于第一本地内存是请求节点的本地内存,因此,可以使用与现有技术相同或类似的方法,为该第一本地内存分配虚拟地址。

从而,需要存取指针在第一虚拟地址范围内的数据(第一数据)时,可以根据该指针确定第一本地内存(具体地说,是第一本地内存全部或部分存储空间),并根据如上述生成的该第一本地内存与该第一远程内存的对应关系页表,确定第一远程内存(具体地说,是第一远程内存全部或部分存储空间),以在第一远程内存中存取该第一数据(随后详细说明)。这里,需要说明的是,在本发明实施例中,可以使用与现有技术相同或类似的方法,根据该指针确定第一本地内存。

根据本发明实施例的管理内存的方法,能够减少对现有数据存储流程及方法的改变,提高了实用性。

请求节点在接收到针对指针在第一虚拟地址范围内的数据(第一数据)的读写指令(第一数据读写指令)时,可以根据该第一数据的指针,确定该第一数据存储(对应读指令)或需要存储(对应写指令)在远程内存中。其后,请求节点可以根据该第一数据的长度确定第一远程内存中用于存储该第一数据的存储空间。并且,在第一数据读写指令中携带指示该存储空间的信息(第三指示信息)

例如,在本发明实施例中,该第一远程内存的长度与该第一数据的长度相同,以及该第三指示信息用于指示该存储空间的起始物理地址。

具体的,如果该第一数据的指针长度与第一远程内存的长度相同,则需要使用该第一远程内存的全部存储空间,此时,在请求节点向贡献节点发送的数据读写指令(第一数据读写指令)中,可以携带指示该第一远程内存的起始物理地址的信息(第三指示信息的一例)。从而,在该第三指示信息仅指示该存储空间的起始物理地址,且指示的该存储空间的起始物理地址与第一远程内存的起始物理地址相同的情况下,贡献节点可以默认地确定该第一数据的长度与第一远程内存的长度相同,从而,可以实现对该第一数据的存取。

再例如,在本发明实施例中,该第一数据的长度小于该第二指示信息指示的该第一远程内存的长度时,该第三指示信息用于指示该存储空间的起始物理地址和长度

具体的,如果该第一数据的指针长度小于第一远程内存的长度,则需要使用该第一远程内存的部分存储空间,此时,在请求节点向贡献节点发送的数据读写指令(第一数据读写指令)中,可以携带指示该第一远程内存的部分存储空间的起始物理地址及长度的信息(第三指示信息的另一例)。从而,贡献节点可以根据该第三指示信息,在该第一远程内存中存取该第一数据。

在本发明实施例中,系统内的各服务节点(包括贡献节点以及请求节点)可以获知彼此之间的路由信息,并且,该路由信息可以是该服务节点的节点标识(Node ID),也可以是该服务节点的位置,例如,服务器节点可以在系统中广播指示该Node ID或该服务节点的位置的信息,从而,请求节点可以根据贡献节点的路由信息,向系统中的贡献节点,发送针对上述第一数据的数据读写指令(第一数据读写指令),该第一数据读写指令可以携带指示该第一数据存储或需要存储在的内存空间(第一远程内存的部分或全部存储空间)的信息(第三指示信息)。从而,在S220,贡献节点可以接收带第一数据读写指令,并在S230根据该第三指示信息,从第一远程内存中确定该第一数据存储或需要存储在的内存空间(第一远程内存的部分或全部存储空间),并对该第一数据进行存取。

在本发明实施例中,请求节点在确定了该第一数据存储或需要存储在的存储空间后,可以在系统内广播针对上述第一数据的数据读写指令(第一数据读写指令),该第一数据读写指令可以携带指示该第一数据存储或需要存储在的存储空间(第一远程内存的部分或全部存储空间)的信息(第三指示信息)。从而在S220,贡献节点可以接收到该第一数据读写指令。由于在情况3中该贡献节点能够自主确定该第一远程内存的长度及起始物理地址,在情况4中该贡献节点能够从控制中心获知该第一远程内存的长度及起始物理地址。因此,当上述第三指示信息指示的该第一数据存储或需要存储在的存储空间在该第一远程内存的范围内时,在S230,贡献节点可以确定能够在第一远程内存中进行针对该第一数据的存取。

由此,实现了在贡献节点中对来自请求节点的数据的存取。

根据本发明实施例的管理内存的方法,通过根据请求节点所需要的内存和贡献节点能够提供的内存,从贡献节点中确定供请求节点使用的远程内存,在请求节点中为该远程内存分配虚拟地址,在请求节点需要存储指针在该虚拟地址范围内的数据时,可以根据该虚拟地址与该远程内存的对应关系,确定需要在贡献节点上对该数据进行存取,从而可以向该贡献节点发送数据读写指令,以实现在远程内存上对该数据的存取,从而,容易地能够实现内存的共享。

图3示出了从控制中心的角度描述的管理内存的方法300的示意性流程图。如图3所示,该方法300包括:

S310,内存管理系统中的控制中心确定至少一个贡献节点能够提供的远程内存的起始物理地址和长度;

S320,该控制中心接收请求节点发送的第一指示信息,第一指示信息用于指示该请求节点所需内存的长度;

该实施例中,内存的长度代表内存的容量大小。

S330,该控制中心根据该第一指示信息和该至少一个贡献节点能够提供的远程内存的起始物理地址和长度,从该贡献节点中确定目标贡献节点以及该目标贡献节点向该请求节点提供的第一远程内存,该第一远程内存的长度大于或等于该请求节点所需内存的长度;

S340,该控制中心向该请求节点和该目标贡献节点发送用于指示该第一远程内存的第二指示信息,以便于该请求节点和该目标贡献节点根据该第二指示信息,确定该第一远程内存,并在该第一远程内存进行针对第一数据存取,其中,该第一数据的指针在该请求节点为该第一远程内存分配的第一虚拟地址范围内。

具体地说,在本发明实施例中,在系统内可以设置控制中心,用于获取服务器节点能够提供的远程内存的信息,并统一调度该远程内存资源。并且,在本发明实施例中,该控制中心可以与各服务器节点相独立,即,控制中心可以具有独立的硬件结构(例如,处理器、存储器及I/O设备等),从而与各服务器之间通过信令或消息等方式进行通信,或者,也可以在各服务器节点的系统内设置客户端,从而与各服务器节点共用处理器等硬件设备(例如,处理器、存储器及I/O设备等)。

在本发明实施例中,控制中心可以维护一个远程内存集合,从而可以确定至少一个贡献节点能够提供的远程内存的起始物理地址和长度。

可选地,该内存管理系统中的处理中心确定至少一个贡献节点能够提供的远程内存的起始物理地址和长度包括:

内存管理系统中的处理中心接收至少一个贡献节点发送的第四指示信息,该第四指示信息用于指示该贡献节点能够提供的远程内存的起始物理地址和长度;

根据该第四指示信息,确定该至少一个贡献节点能够提供的远程内存的起始物理地址和长度。

具体地说,例如,当服务器节点(贡献节点)处于空闲或者有未使用的内存时,该节点能够向其他服务器节点提供内存(远程内存),并且,例如,在清理该远程内存内的数据、删除该远程内存在本节点内部的页表映射关系后,该贡献节点可以向控制中心上报指示其能够提供的远程内存的信息(第四指示信息),例如,该第四指示信息可以指示该远程内存在贡献节点中的物理地址及长度。

从而,在S310,控制中心(或者说,配置在请求节点内的客户端)能够获知贡献节点的信息(例如,该贡献节点在系统内的路由信息)以及该贡献节点提供的远程内存的信息(例如,该远程内存的物理地址及长度)。

请求节点可以向控制中心发送请求信息,该请求消息可以携带指示该请求节点所需要的内存的信息(第一指示信息的一例)。

从而,在S320,控制中心能够获知该第一指示信息。

在S330,控制中心可以根据该第一指示信息以及该第四指示信息,确定能够贡献节点以及该贡献节点提供给请求节点的内存(第一远程内存)。例如,如果服务节点能够对外提供的内存容量大于或等于该请求节点提供其所需要的内存,则可以作为贡献节点。并且,在本发明实施例中,该控制中心确定的,第一远程内存可以大于或等于该第一指示信息指示的内存长度。该第一远程内存可以小于或等于该第四指示信息指示的内存长度。

在S340,控制中心可以将指示该第一远程内存的信息(第二指示信息)发送给请求节点以及贡献节点,从而,请求节点以及贡献节点双方可以获知,请求节点获得了该贡献节点中的第一远程内存的使用权,在本发明实施例中,该请求节点可以独占地使用该第一远程内存,从而能够提高业务的安全性。

可选地,该第一远程内存的长度与该请求节点所需内存的长度相同,以及该第二指示信息用于指示该第一远程内存的起始物理地址。

具体地说,如果该贡献节点提供的内存容量与该请求节点所需要的内存容量相同,则该贡献节点可以仅向请求节点返回该第一远程内存(在该贡献节点中)的起始物理地址(第二指示信息的一例)。从而,在该第二指示信息仅指示该起始物理地址的情况下,请求节点可以默认地确定该贡献节点提供的内存容量与该请求节点所需要的内存容量相同。

可选地,该第一远程内存的长度大于该请求节点所需内存的长度,以及该第二指示信息用于指示该第一远程内存的起始物理地址及长度。

具体地说,如果该贡献节点提供的内存容量大于该请求节点所需要的内存容量,则该贡献节点可以向请求节点返回该第一远程内存(在该贡献节点中)的起始物理地址及长度(第二指示信息的另一例)。从而,请求节点可以根据该第二指示信息,确定该第一远程内存的起始物理地址及长度,根据需要来使用该第一远程内存中的任意存储空间。

如上所述,在请求节点获得该第一远程内存的使用权后,请求节点可以为该第一远程内存分配虚拟地址(第一虚拟地址)。

例如,通常的计算机系统中处理器能够达到32位乃至64位,从而,能够使用的虚拟地址的范围可以达到232乃至264,而通常的计算机系统中的内存容量远小于该值,从而,可以有足够的虚拟地址分配给该第一远程内存,请求节点可以将该第一远程内存视为其本地的内存空间,从而,可以使用与现有技术相同或类似的方法,为该内存空间(第一远程内存)分配虚拟地址(第一虚拟地址)。并且,为了避免指示混乱,可以规定分配给该第一远程内存的第一虚拟地址与分配给该请求节点中本地内存的第二虚拟地址相异。

从而,需要存取指针在第一虚拟地址范围内的数据(第一数据)时,可以根据该指针确定该第一数据存储或需要存储在第一远程内存(具体地说,是第一远程内存全部或部分存储空间),以在第一远程内存中存取该第一数据(随后详细说明)。

根据本发明实施例的管理内存的方法,能够不影响请求节点对本地内存的使用,降低数据存储流程的复杂度。

再例如,请求节点可以根据该第一远程内存的长度,从将该请求节点的本地内存中确定一段内存空间(第一本地内存),并根据预设的算法或映射关系,例如,根据预设的比例(例如,1字节(Byte)的本地内存对应1千字节(Kbyte)的远程内存,应理解,以上列举的比例仅为示例性说明,本发明并不限定于此),生成该第一本地内存与该第一远程内存的对应关系页表。由于第一本地内存是请求节点的本地内存,因此,可以使用与现有技术相同或类似的方法,为该第一本地内存分配虚拟地址。

从而,需要存取指针在第一虚拟地址范围内的数据(第一数据)时,可以根据该指针确定第一本地内存(具体地说,是第一本地内存全部或部分存储空间),并根据如上述生成的该第一本地内存与该第一远程内存的对应关系页表,确定第一远程内存(具体地说,是第一远程内存全部或部分存储空间),以在第一远程内存中存取该第一数据(随后详细说明)。这里,需要说明的是,在本发明实施例中,可以使用与现有技术相同或类似的方法,根据该指针确定第一本地内存。

根据本发明实施例的管理内存的方法,能够减少对现有数据存储流程及方法的改变,提高了实用性。

请求节点在接收到针对指针在第一虚拟地址范围内的数据(第一数据)的读写指令(第一数据读写指令)时,可以根据该第一数据的指针,确定该第一数据存储(对应读指令)或需要存储(对应写指令)在远程内存中。其后,请求节点可以根据该第一数据的长度确定第一远程内存中用于存储该第一数据的存储空间。并且,在第一数据读写指令中携带指示该存储空间的信息(第三指示信息)

例如,在本发明实施例中,该第一远程内存的长度与该第一数据的长度相同,以及该第三指示信息用于指示该存储空间的起始物理地址。

具体的,如果该第一数据的指针长度与第一远程内存的长度相同,则需要使用该第一远程内存的全部存储空间,此时,在请求节点向贡献节点发送的数据读写指令(第一数据读写指令)中,可以携带指示该第一远程内存的起始物理地址的信息(第三指示信息的一例)。从而,在该第三指示信息仅指示该存储空间的起始物理地址,且指示的该存储空间的起始物理地址与第一远程内存的起始物理地址相同的情况下,贡献节点可以默认地确定该第一数据的长度与第一远程内存的长度相同,从而,可以实现对该第一数据的存取。

再例如,在本发明实施例中,该第一数据的长度小于该第二指示信息指示的该第一远程内存的长度时,该第三指示信息用于指示该存储空间的起始物理地址和长度

具体的,如果该第一数据的指针长度小于第一远程内存的长度,则需要使用该第一远程内存的部分存储空间,此时,在请求节点向贡献节点发送的数据读写指令(第一数据读写指令)中,可以携带指示该第一远程内存的部分存储空间的起始物理地址及长度的信息(第三指示信息的另一例)。从而,贡献节点可以根据该第三指示信息,在该第一远程内存中存取该第一数据。

可选地,在本发明实施例中,该方法还包括:

向该请求节点发送用于指示该目标贡献节点的贡献节点信息,以便于该请求节点根据该贡献节点信息,向该目标贡献节点发送针对该第一数据的第一数据读写指令。

并且,在本发明实施例中,该贡献节点信息包括该贡献节点在该内存管理系统中的标识或该贡献节点在该内存管理系统中的位置;

该请求信息包括该请求节点在该内存管理系统中的标识或该请求节点在该内存管理系统中的位置。

具体地说,在本发明实施例中,控制中心可以通知请求节点该贡献节点的路由信息,从而,请求节点可以根据贡献节点的路由信息,向系统中的贡献节点,发送针对上述第一数据的数据读写指令(第一数据读写指令),该第一数据读写指令可以携带指示该第一数据存储或需要存储在的内存空间(第一远程内存的部分或全部存储空间)的信息(第三指示信息)。贡献节点可以接收带第一数据读写指令,并根据该第三指示信息,从第一远程内存中确定该第一数据存储或需要存储在的内存空间(第一远程内存的部分或全部存储空间),并对该第一数据进行存取。

可选地,在本发明实施例横纵,该方法还包括:

向该贡献节点发送用于指示该请求节点的请求节点信息,以便于该目标贡献节点根据该请求节点信息,确定该请求节点,并禁止除该请求节点以外的节点使用该第一远程内存。

具体地说,在本发明实施例中,控制中心可以通知贡献节点该请求节点的路由信息,从而,贡献节点可以根据请求节点的路由信息,仅允许该请求节点使用该第一远程内存,而禁止其他节点(包括该贡献节点在内)使用该第一远程内存,从而能够提高网络安全性。

可选地,在本发明实施例中,该内存管理系统包括至少两个贡献节点,以及

该根据该第一指示信息和该第四指示信息,从该贡献节点中确定目标贡献节点以及该目标贡献节点向该请求节点提供的第一远程内存包括:

根据该第一指示信息和该第四指示信息,从该贡献节点中确定目标贡献节点以及该目标贡献节点向该请求节点提供的第一远程内存,以使包括该第一远程内存在内的各贡献节点提供的远程内存的物理地址相异。

具体地说,在系统内包括至少两个贡献节点的情况下,控制中心可以使至少两个贡献节点中的贡献节点a提供的远程内存a的物理地址与贡献节点b提供的远程内存b的物理地址相异,从而,在请求节点采用广播方式发送上述第一数据读写指令时,例如,如果请求节点需要使用贡献节点a提供的远程内存a,则第一数据读写指令中携带指示远程内存a中的存储空间的物理地址的信息(第三指示信息的一例),当贡献节点b接收到该第一数据读写指令时,由于第三指示信息指示的物理地址不在远程内存b的物理地址的范围内,因此,不会根据该第一数据读写指令进行读写。与此相对,当贡献节点a接收到该第一数据读写指令时,由于第三指示信息指示的物理地址在远程内存a的物理地址的范围内,因此,根据该第一数据读写指令进行读写。

在本发明实施例中,贡献节点b在接收到该第一数据读写指令,并由于第三指示信息指示的物理地址不在远程内存b的物理地址的范围内而确定不会根据该第一数据读写指令进行读写后,可以相系统内的相邻节点转发该第一数据读写指令,从而,能够加速该第一数据读写指令到达贡献节点a。并且,为了避免系统内出现信令风暴,贡献节点b对该第一数据读写指令仅转发一次。

根据本发明实施例的管理内存的方法,通过根据请求节点所需要的内存和贡献节点能够提供的内存,从贡献节点中确定供请求节点使用的远程内存,在请求节点中为该远程内存分配虚拟地址,在请求节点需要存储指针在该虚拟地址范围内的数据时,可以根据该虚拟地址与该远程内存的对应关系,确定需要在贡献节点上对该数据进行存取,从而可以向该贡献节点发送数据读写指令,以实现在远程内存上对该数据的存取,从而,容易地能够实现内存的共享。

上文中,结合图1至图3,详细描述了根据本发明实施例的管理内存的方法,下面,将结合图4至图6,详细描述根据本发明实施例的管理内存的装置。

图4示出了根据本发明实施例的管理内存的装置400的示意性框图。如图7所示,该装置400包括:

根据本发明实施例的管理内存的装置400可对应于本发明实施例的方法中的请求节点,并且,该管理内存的装置400中的各单元即模块和上述其他操作和/或功能分别为了实现图1中的方法100的相应流程,为了简洁,在此不再赘述。

根据本发明实施例的管理内存的装置,通过根据请求节点所需要的内存和贡献节点能够提供的内存,从贡献节点中确定供请求节点使用的远程内存,在请求节点中为该远程内存分配虚拟地址,在请求节点需要存储指针在该虚拟地址范围内的数据时,可以根据该虚拟地址与该远程内存的对应关系,确定需要在贡献节点上对该数据进行存取,从而可以向该贡献节点发送数据读写指令,以实现在远程内存上对该数据的存取,从而,容易地能够实现内存的共享。

图4示出了根据本发明实施例的管理内存的装置400的示意性框图。如图7所示,该装置400包括:

发送单元410,用于使内存管理系统中的请求节点发送第一指示信息,该第一指示信息用于指示该请求节点所需内存的长度;

接收单元420,用于接收第二指示信息,该第二指示信息用于指示能够提供远程内存的至少一个贡献节点中的目标贡献节点向该请求节点提供的第一远程内存,其中,该第一远程内存是根据该第一指示信息确定的,该第一远程内存的长度大于或等于该请求节点所需内存的长度;

处理单元430,用于从能够使用的虚拟地址中,确定与该第一远程内存相对应的第一虚拟地址;

用于当需要读写指针在该第一虚拟地址范围内的第一数据时,控制发送单元410发送针对该第一数据的第一数据读写指令,该第一数据读写指令包括第三指示信息,该第三指示信息用于指示该第一远程内存中用于存储该第一数据的存储空间,以便于该目标贡献节点根据该第三指示信息,存取该第一数据。

该实施例中,内存的长度代表内存的容量大小。

可选地,该处理单元430具体用于获取用于指示该目标贡献节点的贡献节点信息;

该发送单元具体410用于根据该贡献节点信息,向该目标贡献节点发送第一指示信息;

该接收单元420具体用于接收该目标贡献节点发送的第二指示信息。

可选地,该发送单元410具体用于根据该贡献节点信息,向该目标贡献节点发送针对第二数据的第二数据写指令,该第二数据写指令包括该第一指示信息;以及

该接收单元420具体用于接收该目标贡献节点发送的用于指示该第二数据存储完成的第二数据写应答,该第二数据写应答包括该第二指示信息。

可选地,该发送单元410具体用于向控制中心发送第一指示信息,以便于该控制中心根据该第一指示信息和该贡献节点能够提供的远程内存的长度,从该贡献节点中确定该目标贡献节点以及该第一远程内存,其中,该贡献节点能够提供的远程内存的长度是该控制中心根据该贡献节点发送的用于指示该贡献节点能够提供的远程内存的长度的第四指示信息确定的;以及

该接收单元420具体用于接收该控制中心发送的第二指示信息。

可选地,该接收单元420还用于接收该控制中心发送的用于指示该目标贡献节点的贡献节点信息,以及

该发送单元410具体用于根据该贡献节点信息,向该目标贡献节点发送针对该第一数据的第一数据读写指令。

可选地,该发送单元410具体用于广播针对该第一数据的第一数据读写指令,以便于该贡献节点在确定该存储空间在该贡献节点能够提供的远程内存的范围内后,存取该第一数据。

可选地,该内存管理系统包括至少两个贡献节点,该至少两个贡献节点能够提供的远程内存的物理地址相异。

可选地,该处理单元430具体用于从该请求节点内的本地内存中,确定与该第一远程内存相对应的第一本地内存;

用于根据该第一本地内存,确定第一虚拟地址。

可选地,该第一远程内存的长度与该请求节点所需内存的长度相同,以及该第二指示信息用于指示该第一远程内存的起始物理地址;

该第一远程内存的长度与该第一数据的长度相同,以及该第三指示信息用于指示该存储空间的起始物理地址。

可选地,该第二指示信息用于指示该第一远程内存的起始物理地址和长度;以及

当该第一数据的长度与该第二指示信息指示的该第一远程内存的长度相同时,该第三指示信息用于指示该第一远程内存的起始物理地址;

当该第一数据的长度小于该第二指示信息指示的该第一远程内存的长度时,该第三指示信息用于指示该存储空间的起始物理地址和长度。

根据本发明实施例的管理内存的装置400可对应于本发明实施例的方法中的请求节点,并且,该管理内存的装置400中的各单元即模块和上述其他操作和/或功能分别为了实现图1中的方法100的相应流程,为了简洁,在此不再赘述。

根据本发明实施例的管理内存的装置,通过根据请求节点所需要的内存和贡献节点能够提供的内存,从贡献节点中确定供请求节点使用的远程内存,在请求节点中为该远程内存分配虚拟地址,在请求节点需要存储指针在该虚拟地址范围内的数据时,可以根据该虚拟地址与该远程内存的对应关系,确定需要在贡献节点上对该数据进行存取,从而可以向该贡献节点发送数据读写指令,以实现在远程内存上对该数据的存取,从而,容易地能够实现内存的共享。

图5示出了根据本发明实施例的管理内存的装置500的示意性框图。如图5所示,该装置500包括:

处理单元510,用于使内存管理系统中的贡献节点确定第一远程内存,该第一远程内存是根据来自请求节点的第一指示信息确定的,该第一指示信息用于指示该请求节点所需内存的长度,该第一远程内存的长度大于或等于该请求节点所需内存的长度;

接收单元520,用于接收该请求节点发送的针对第一数据的第一数据读写指令,该第一数据读写指令用于指示该贡献节点存取该第一数据,该第一数据读写指令包括第三指示信息,该第三指示信息用于指示该第一远程内存中用于存储该第一数据的存储空间;

该处理单元510还用于根据第一数据读写指令和该第三指示信息,存取该第一数据。

该实施例中,内存的长度代表内存的容量大小。

可选地,该接收单元520具体用于接收该请求节点发送的该第一指示信息;

该处理单元510具体用于根据该第一指示信息,确定该第一远程内存;以及

该装置还包括:

发送单元530,用于向该请求节点发送用于指示该第一远程内存的第二指示信息。

可选地,该接收单元520具体用于接收该请求节点发送的针对第二数据的第二数据写指令以及该第二数据,该第二数据写指令包括该第一指示信息;

该处理单元510具体用于根据该第一指示信息,确定该第一远程内存,并将该第一数据存储在该第一远程内存中;

该发送单元530具体用于向该请求节点发送的用于指示该第二数据存储完成的第二数据写应答,该第二数据写应答包括用于指示该第一远程内存的第二指示信息。

可选地,该装置还包括:

发送单元530,用于向控制中心发送第四指示信息,该第四指示信息用于指示该贡献节点能够提供的远程内存的起始物理地址和长度;

该接收单元520具体用于接收该控制中心发送的用于指示该第一远程内存的第二指示信息,该第一远程内存是该控制中心根据该第一指示信息和该第四指示信息确定的;

该处理单元510具体用于根据该第二指示信息,确定该第一远程内存。

可选地,该处理单元510具体用于确定该存储空间在该第一远程内存的范围内;

用于根据第一数据读写指令,在该存储空间内存取该第一数据。

可选地,该请求节点所需内存的长度与该第一数据的长度相同,该目标贡献节点能够提供的远程内存的长度与该请求节点所需内存的长度相同,以及

该第二指示信息和该第三指示信息用于指示该第一远程内存的起始物理地址。

可选地,该第二指示信息用于指示该第一远程内存的起始物理地址和长度;以及

当该第一数据的长度与该第二指示信息指示的该第一远程内存的长度相同时,该第三指示信息用于指示该第一远程内存的起始物理地址;

当该第一数据的长度小于该第二指示信息指示的该第一远程内存的长度时,该第三指示信息用于指示该存储空间的起始物理地址和长度。

可选地,该处理单元510还用于获取用于指示该请求节点的请求节点信息;

用于根据该请求节点信息,确定该请求节点;

用于禁止除该请求节点以外的节点使用该第一远程内存。

根据本发明实施例的管理内存的装置500可对应于本发明实施例的方法中的贡献节点,并且,该管理内存的装置500中的各单元即模块和上述其他操作和/或功能分别为了实现图2中的方法200的相应流程,为了简洁,在此不再赘述。

根据本发明实施例的管理内存的装置,通过根据请求节点所需要的内存和贡献节点能够提供的内存,从贡献节点中确定供请求节点使用的远程内存,在请求节点中为该远程内存分配虚拟地址,在请求节点需要存储指针在该虚拟地址范围内的数据时,可以根据该虚拟地址与该远程内存的对应关系,确定需要在贡献节点上对该数据进行存取,从而可以向该贡献节点发送数据读写指令,以实现在远程内存上对该数据的存取,从而,容易地能够实现内存的共享。

图6示出了根据本发明实施例的管理内存的装置600的示意性框图。如图6所示,该装置600包括:

接收单元610,用于使内存管理系统中的控制中心确定至少一个贡献节点能够提供的远程内存的起始物理地址和长度;

用于接收请求节点发送的第一指示信息,第一指示信息用于指示该请求节点所需内存的长度;

处理单元620,用于根据该第一指示信息和该至少一个贡献节点能够提供的远程内存的起始物理地址和长度,从该贡献节点中确定目标贡献节点以及该目标贡献节点向该请求节点提供的第一远程内存,该第一远程内存的长度大于或等于该请求节点所需内存的长度;

发送单元630,用于向该请求节点和该目标贡献节点发送用于指示该第一远程内存的第二指示信息,以便于该请求节点和该目标贡献节点根据该第二指示信息,确定该第一远程内存,并在该第一远程内存进行针对第一数据存取,其中,该第一数据的指针在该请求节点为该第一远程内存分配的第一虚拟地址范围内。

该实施例中,内存的长度代表内存的容量大小。

可选地,该发送单元630还用于向该请求节点发送用于指示该目标贡献节点的贡献节点信息,以便于该请求节点根据该贡献节点信息,向该目标贡献节点发送针对该第一数据的第一数据读写指令。

可选地,该发送单元630还用于向该贡献节点发送用于指示该请求节点的请求节点信息,以便于该目标贡献节点根据该请求节点信息,确定该请求节点,并禁止除该请求节点以外的节点使用该第一远程内存。

可选地,该内存管理系统包括至少两个贡献节点,以及

该处理单元具体用于根据该第一指示信息和该第四指示信息,从该贡献节点中确定目标贡献节点以及该目标贡献节点向该请求节点提供的第一远程内存,以使包括该第一远程内存在内的各贡献节点提供的远程内存的物理地址相异。

可选地,该请求节点所需内存的长度与该第一数据的长度相同,该目标贡献节点能够提供的远程内存的长度与该请求节点所需内存的长度相同,以及

该第二指示信息和该第三指示信息用于指示该第一远程内存的起始物理地址。

可选地,该第二指示信息用于指示该第一远程内存的起始物理地址和长度;以及

当该第一数据的长度与该第二指示信息指示的该第一远程内存的长度相同时,该第三指示信息用于指示该第一远程内存的起始物理地址;

当该第一数据的长度小于该第二指示信息指示的该第一远程内存的长度时,该第三指示信息用于指示用于存储该第一数据的存储空间的起始物理地址和长度。

可选地,该接收单元610还用于接收至少一个贡献节点发送的第四指示信息,该第四指示信息用于指示该贡献节点能够提供的远程内存的起始物理地址和长度;

该处理单元620具体用于根据该第四指示信息,确定该至少一个贡献节点能够提供的远程内存的起始物理地址和长度。

根据本发明实施例的管理内存的装置600可对应于本发明实施例的方法中的控制中心,并且,该管理内存的装置600中的各单元即模块和上述其他操作和/或功能分别为了实现图3中的方法300的相应流程,为了简洁,在此不再赘述。

根据本发明实施例的管理内存的装置,通过根据请求节点所需要的内存和贡献节点能够提供的内存,从贡献节点中确定供请求节点使用的远程内存,在请求节点中为该远程内存分配虚拟地址,在请求节点需要存储指针在该虚拟地址范围内的数据时,可以根据该虚拟地址与该远程内存的对应关系,确定需要在贡献节点上对该数据进行存取,从而可以向该贡献节点发送数据读写指令,以实现在远程内存上对该数据的存取,从而,容易地能够实现内存的共享。

上文中,结合图1至图6,详细描述了根据本发明实施例的管理内存的方法和装置,下面,将结合图7,详细描述根据本发明实施例的管理内存的系统。

图7示出了根据本发明实施例的管理内存的系统700的示意性框图。如图7所示,该系统700包括:

至少一个请求节点710,用于发送第一指示信息,该第一指示信息用于指示该请求节点所需内存的长度,接收第二指示信息,该第二指示信息用于指示能够提供远程内存的至少一个贡献节点中的目标贡献节点向该请求节点提供的第一远程内存,其中,该第一远程内存是根据该第一指示信息确定的,该第一远程内存的长度大于或等于该请求节点所需内存的长度,从能够使用的虚拟地址中,确定与该第一远程内存相对应的第一虚拟地址,当需要读写指针在该第一虚拟地址范围内的第一数据时,发送针对该第一数据的第一数据读写指令,该第一数据读写指令包括第三指示信息,该第三指示信息用于指示该第一远程内存中用于存储该第一数据的存储空间,以便于该目标贡献节点根据该第三指示信息,存取该第一数据;

至少一个贡献节点720,用于确定第一远程内存,该第一远程内存是根据来自请求节点的第一指示信息确定的,该第一指示信息用于指示该请求节点所需内存的长度,该第一远程内存的长度大于或等于该请求节点所需内存的长度,接收该请求节点发送的针对第一数据的第一数据读写指令,该第一数据读写指令用于指示该贡献节点存取该第一数据,该第一数据读写指令包括第三指示信息,该第三指示信息用于指示该第一远程内存中用于存储该第一数据的存储空间,根据第一数据读写指令和该第三指示信息,存取该第一数据。

该实施例中,内存的长度代表内存的容量大小。

可选地,该系统还包括:

控制中心730,用于确定至少一个贡献节点能够提供的远程内存的起始物理地址和长度,接收请求节点发送的第一指示信息,第一指示信息用于指示该请求节点所需内存的长度,根据该第一指示信息和该至少一个贡献节点能够提供的远程内存的起始物理地址和长度,从该贡献节点中确定目标贡献节点以及该目标贡献节点向该请求节点提供的第一远程内存,该第一远程内存的长度大于或等于该请求节点所需内存的长度,向该请求节点和该目标贡献节点发送用于指示该第一远程内存的第二指示信息,以便于该请求节点和该目标贡献节点根据该第二指示信息,确定该第一远程内存,并在该第一远程内存进行针对第一数据存取,其中,该第一数据的指针在该请求节点为该第一远程内存分配的第一虚拟地址范围内。

根据本发明实施例的请求节点710可对应于本发明实施例的方法中的请求节点,并且,该请求节点710中的各单元即模块和上述其他操作和/或功能分别为了实现图1中的方法100的相应流程,为了简洁,在此不再赘述。

根据本发明实施例的贡献节点720可对应于本发明实施例的方法中的贡献节点,并且,该贡献节点720中的各单元即模块和上述其他操作和/或功能分别为了实现图2中的方法200的相应流程,为了简洁,在此不再赘述。

根据本发明实施例的控制中心730可对应于本发明实施例的方法中的控制中心,并且,该控制中心730中的各单元即模块和上述其他操作和/或功能分别为了实现图3中的方法300的相应流程,为了简洁,在此不再赘述。

图8示出了本发明一实施例的管理内存的系统的示意性结构,如图8所示,在系统的节点(包括请求节点和贡献节点)中,包括本地内存、处理器内存控制器和远程内存控制芯片,其中,请求节点的远程内存控制芯片可以单独地或与处理器共同实现本发明实施例的管理内存的装置400或710的功能(即,图1中方法100的个流程),具体地说,可以实现与贡献节点或控制中心的信息传输,可以确定贡献节点提供的远程内存与处理器提供的虚拟地址的对应关系。贡献节点的远程内存控制芯片可以单独地或与处理器共同实现本发明实施例的管理内存的装置500或720的功能(即,图2中方法200的个流程),具体地说,可以实现与请求节点或控制中心的信息传输,可以在贡献节点提供的远程内存中存取来自请求节点的数据。

应理解,以上列举的请求节点和贡献节点的结构仅为示例性说明,本发明并不限定于此,例如,也可以将远程内存控制芯片集成在处理器中。

根据本发明实施例的管理内存的系统,通过根据请求节点所需要的内存和贡献节点能够提供的内存,从贡献节点中确定供请求节点使用的远程内存,在请求节点中为该远程内存分配虚拟地址,在请求节点需要存储指针在该虚拟地址范围内的数据时,可以根据该虚拟地址与该远程内存的对应关系,确定需要在贡献节点上对该数据进行存取,从而可以向该贡献节点发送数据读写指令,以实现在远程内存上对该数据的存取,从而,容易地能够实现内存的共享。

应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

应理解,在本发明的各种实施例中,上述各过程的序号的长度并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出共享的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1