CN105988871A - 一种远端内存分配方法、装置和系统 - Google Patents
一种远端内存分配方法、装置和系统 Download PDFInfo
- Publication number
- CN105988871A CN105988871A CN201510041110.7A CN201510041110A CN105988871A CN 105988871 A CN105988871 A CN 105988871A CN 201510041110 A CN201510041110 A CN 201510041110A CN 105988871 A CN105988871 A CN 105988871A
- Authority
- CN
- China
- Prior art keywords
- memory
- node
- calculating
- request
- remote
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
本发明实施例涉及计算机技术领域。本发明实施例提供远端内存分配方法,包括:内存节点接收计算节点发送的请求;所述内存节点从所述内存节点的空闲内核内存为所述计算节点分配所述XB的第一内核内存;在所述内存节点从所述内存节点的空闲内核内存为所述计算节点分配所述XB的第一内核内存之后,且在所述计算节点向所述远端内存读写数据之前,所述方法还包括:所述内存节点将所述第一内核内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存。利用本发明实施例提供的技术方案能够实现对计算节点分配远端内存时不受内存节点中物理内存上限的限制,为计算节点分配更大的远端内存。本发明实施例还提供相应的装置和系统。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种远端内存分配方法、装置和系统。
背景技术
物理内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此物理内存的性能对计算机的影响非常大。
当前,在第一终端设备的物理内存太小,不能满足需求的情况下,该第一终端设备通常会向其他终端设备申请远端内存,以扩展该第一终端设备的物理内存。现有技术中,其他终端设备(为便于陈述,下面以“第二终端设备”取代“其他终端设备”)会根据第一终端设备的请求,将第二终端设备的物理内存分出一部分给第一终端设备,以作为该第一终端设备的远端内存。这种方案的缺陷在于:由于第二终端设备的物理内存大小是固定的,所以分配给计算节点的远端内存不能超出该第二终端设备中空闲物理内存的上限。
发明内容
本发明提供一种远端内存分配方法,用于实现对计算节点分配远端内存时不受内存节点中物理内存上限的限制。
第一方面,本发明实施例提供一种远端内存分配方法,该方法包括:
内存节点接收计算节点发送的请求,所述请求指示所述计算节点向所述内存节点申请XB的远端内存,其中,所述内存节点和所述计算节点之间通过网络通信连接,所述X大于零且小于2n,所述n为所述内存节点CPU通用寄存器的数据宽度;
所述内存节点从所述内存节点的空闲内核内存为所述计算节点分配所述XB的第一内核内存;
在所述内存节点从所述内存节点的空闲内核内存为所述计算节点分配所述XB的第一内核内存之后,且在所述计算节点向所述远端内存读写数据之前,所述方法还包括:
所述内存节点将所述第一内核内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存,进而使得所述计算节点向所述第一存储空间读写数据,所述第一存储空间的大小为所述XB;所述第一存储空间为物理内存,或,所述第一存储空间为虚拟内存,或,所述第一存储空间为物理内存和虚拟内存。
结合第一方面,在第一方面的第一种实施方式下,
所述请求还指示所述远端内存为远端物理内存;或者,
所述请求还指示所述远端内存为远端虚拟内存;或者,
所述请求还指示所述远端内存为远端物理内存和远端虚拟内存。
结合第一方面的第一种实施方式,在第一方面的第二种实施方式下,
在所述请求还指示所述远端内存为远端物理内存的情况下,
所述内存节点将所述第一内核内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存,进而使得所述计算节点向所述第一存储空间读写数据,所述第一存储空间的大小为所述XB,具体包括:
所述内存节点将所述第一内核内存映射到所述内存节点的第一物理内存,以实现为所述计算节点分配所述远端物理内存,进而使得所述计算节点向所述第一物理内存读写数据,所述第一物理内存的大小为所述XB。
结合第一方面、第一方面的第一种实施方式或第一方面的第二种实施方式,在第一方面的第三种实施方式下,
所述请求还指示第一起始地址,所述第一起始地址是指所述远端内存起始位置面向所述计算节点的地址;
所述方法还包括:
所述内存节点建立所述第一起始地址和第二起始地址之间的映射关系,所述第二起始地址是指所述空闲内核内存中所述第一内核内存起始位置的地址。
结合第一方面、第一方面的第一种实施方式或第一方面的第三种实施方式,在第一方面的第四种实施方式下,
所述内存节点从所述内存节点的空闲内核内存中为所述计算节点分配XB的第一内核内存,具体包括:
在所述内存节点的空闲内核内存大于或者等于所述XB的情况下,所述内存节点从所述空闲内核内存中为所述计算节点分配所述第一内核内存。
第二方面,本发明实施例提供一种远端内存分配方法,该方法包括:
内存节点接收计算节点发送的请求,所述请求指示所述计算节点向所述内存节点申请XB的远端内存,其中,所述X大于零且小于2n,所述n为所述内存节点CPU通用寄存器的数据宽度,所述内存节点和所述计算节点之间通过网络通信连接;
所述内存节点根据所述请求,从第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存,所述第一目标进程是指运行在所述内存节点中、具有与所述计算节点交互的第一接口且能通过所述第一接口为所述计算节点分配逻辑内存的进程,所述第一目标进程的空闲逻辑内存大于或者等于所述XB;
在所述内存节点从所述第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存之后,且在所述计算节点向所述远端内存读写数据之前,所述方法还包括:
所述内存节点将所述第一逻辑内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存,进而使得所述计算节点向所述第一存储空间读写数据;其中,所述第一存储空间的大小为所述XB,所述第一存储空间为物理内存和虚拟内存,或,所述第一存储空间为物理内存,或,所述第一存储空间为虚拟内存。
结合第二方面,在第二方面的第一种实施方式下,
所述内存节点接收计算节点发送的请求之后,以及所述内存节点根据所述请求,从第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存之前,所述方法还包括:
所述内存节点从运行在所述内存节点的所有进程中选择出所述第一目标进程。
结合第二方面,在第二方面的第二种实施方式下,
所述内存节点接收计算节点发送的请求之后,以及所述内存节点根据所述请求,从第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存之前,所述方法还包括:
所述内存节点创建所述第一目标进程,并为所述第一目标进程分配逻辑内存。
结合第二方面、第二方面的第一种实施方式或第二方面的第二种实施方式,在第二方面的第三种实施方式下,
所述请求还指示所述远端内存为远端物理内存;或者,
所述请求还指示所述远端内存为远端虚拟内存;或者,
所述请求还指示所述远端内存为远端物理内存和远端虚拟内存。
结合第二方面的第三种实施方式,在第二方面的第四种实施方式下,在所述请求还指示所述远端内存为远端物理内存的情况下,
所述内存节点将所述第一逻辑内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存,进而使得所述计算节点向所述第一存储空间读写数据,具体包括:
所述内存节点将所述第一逻辑内存映射到所述内存节点的第一物理内存,以实现为所述计算节点分配所述远端物理内存,进而使得所述计算节点向所述第一物理内存读写数据,所述第一物理内存的大小为所述XB。
结合第二方面或第二方面的第一种实施方式至第二方面的第四种实施方式中任一种实施方式,在第二方面的第五种实施方式下,
所述请求还指示第一起始地址,所述第一起始地址是指所述远端内存起始位置面向所述计算节点的地址;
所述方法还包括:
所述内存节点建立所述第一起始地址和第二起始地址之间的映射关系,所述第二起始地址是指在所述空闲逻辑内存中所述第一逻辑内存起始位置的地址。
结合第二方面的第二种实施方式至第二方面的第五种实施方式中任一种实施方式,在第二方面的第六种实施方式下,
所述内存节点的内核数量大于创建所述第一目标进程之前运行所述内存节点上的进程的数量的情况下,
创建的所述第一目标进程之后,运行在所述内存节点上的进程的数量不超过所述内存节点的内核数量。
第三方面,本发明实施例提供一种远端内存分配装置,该装置包括:
接收单元,用于接收计算节点发送的请求,所述请求指示所述计算节点向内存节点申请XB的远端内存,所述X大于零且小于2n,所述n为所述内存节点CPU通用寄存器的数据宽度;
分配单元,用于从所述内存节点的空闲内核内存为所述计算节点分配所述XB的第一内核内存;
在所述分配单元从所述内存节点的空闲内核内存为所述计算节点分配所述XB的第一内核内存之后,且在所述计算节点向所述远端内存读写数据之前,
映射单元,用于将所述第一内核内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存,进而使得所述计算节点向所述第一存储空间读写数据,所述第一存储空间的大小为所述XB;所述第一存储空间为物理内存,或,所述第一存储空间为虚拟内存,或,所述第一存储空间为物理内存和虚拟内存。
结合第三方面,在第三方面的第一种实施方式下,
所述请求还指示所述远端内存为远端物理内存;或者,
所述请求还指示所述远端内存为远端虚拟内存;或者,
所述请求还指示所述远端内存为远端物理内存和远端虚拟内存。
结合第三方面的第一种实施方式,在第三方面的第二种实施方式下,
在所述请求还指示所述远端内存为远端物理内存的情况下,
所述映射单元具体用于将所述第一内核内存映射到所述内存节点的第一物理内存,以实现为所述计算节点分配所述远端物理内存,进而使得所述计算节点向所述第一物理内存读写数据,所述第一物理内存的大小为所述XB。
结合第三方面、第三方面的第一种实施方式或第三方面的第二种实施方式,在第三方面的第三种实施方式下,所述请求还指示第一起始地址,所述第一起始地址是指所述远端内存起始位置面向所述计算节点的地址;
所述装置还包括:
建立单元用于建立所述第一起始地址和第二起始地址之间的映射关系,所述第二起始地址是指所述空闲内核内存中所述第一内核内存起始位置的地址。
第四方面,本发明实施例提供一种远端内存分配装置,该装置包括:
接收单元,用于接收计算节点发送的请求,所述请求指示所述计算节点向内存节点申请XB的远端内存,其中,所述X大于零且小于2n,所述n为所述内存节点CPU通用寄存器的数据宽度,所述内存节点和所述计算节点之间通过网络通信连接;
分配单元,用于根据所述请求,从第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存,所述第一目标进程是指运行在所述内存节点中、具有与所述计算节点交互的第一接口且能通过所述第一接口为所述计算节点分配逻辑内存的进程,所述第一目标进程的空闲逻辑内存大于或者等于所述XB;
在所述分配单元从所述第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存之后,且在所述计算节点向所述远端内存读写数据之前,
映射单元,用于将所述第一逻辑内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存,进而使得所述计算节点向所述第一存储空间读写数据,所述第一存储空间的大小为所述XB;所述第一存储空间为物理内存和虚拟内存,或,所述第一存储空间为物理内存,或,所述第一存储空间为虚拟内存。
结合第四方面,在第四方面的第一种实施方式下,
在所述接收单元接收计算节点发送的请求之后,以及所述分配单元根据所述请求,从第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存之前,所述装置还包括:
选择单元,用于从运行在所述内存节点的所有进程中选择出所述第一目标进程。
结合第四方面,在第四方面的第二种实施方式下,
在所述接收单元接收计算节点发送的请求之后,以及所述分配单元根据所述请求,从第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存之前,所述装置还包括:
创建单元,用于创建所述第一目标进程,并为所述第一目标进程分配逻辑内存。
结合第四方面、第四方面的第一种实施方式或第四方面的第二种实施方式,在第四方面的第三种实施方式下,
所述请求还指示所述远端内存为远端物理内存;或者,
所述请求还指示所述远端内存为远端虚拟内存;或者,
所述请求还指示所述远端内存为远端物理内存和远端虚拟内存。
结合第四方面的第三种实施方式,在第四方面的第四种实施方式下,在所述请求还指示所述远端内存为远端物理内存的情况下,
所述映射单元具体用于将所述第一逻辑内存映射到所述内存节点的第一物理内存,以实现为所述计算节点分配所述远端物理内存,进而使得所述计算节点向所述第一物理内存读写数据,所述第一物理内存的大小为所述XB。
结合第四方面或第四方面的第一种实施方式至第四方面的第四种实施方式中任一种实施方式,在第四方面的第五种实施方式下,
所述请求还指示第一起始地址,所述第一起始地址是指所述远端内存起始位置面向所述计算节点的地址;
所述装置还包括:
建立单元,用于建立所述第一起始地址和第二起始地址之间的映射关系,所述第二起始地址是指在所述空闲逻辑内存中所述第一逻辑内存起始位置的地址。
结合第四方面的第二种实施方式至第四方面的第五种实施方式中任一种实施方式,在第四方面的第六种实施方式下,
所述内存节点的内核数量大于创建所述第一目标进程之前运行所述内存节点上的进程的数量的情况下,
所述创建单元创建的所述第一目标进程之后,运行在所述内存节点上的进程的数量不超过所述内存节点的内核数量。
第五方面,本发明实施例提供一种远端内存分配系统,该系统包括计算节点、内存节点和如第三方面或第三方面的第一种实施方式至第三方面的第三种实施方式中任一种实施方式所述的远端内存分配装置:
所述计算节点用于发送所述远端内存分配装置接收的所述请求;
所述内存节点用于提供所述第一存储空间;
所述计算节点还用于获取所述第一存储空间为所述远端内存。
结合第五方面,在第五方面的第一种实施方式下,所述远端内存分配装置集成在所述内存节点。
第六方面,本发明实施例提供一种远端内存分配系统,该系统包括计算节点、内存节点和如第四方面或第四方面的第一种实施方式至第四方面的第六种实施方式中任一种实施方式所述的远端内存分配装置:
所述计算节点用于发送所述远端内存分配装置接收的所述请求;
所述内存节点用于提供所述第一存储空间;
所述计算节点还用于获取所述第一存储空间为所述远端内存。
结合第六方面,在第六方面的第一种实施方式下,
所述远端内存分配装置集成在所述内存节点。可知,在本发明实施例提供的远端内存分配方法中,内存节点根据计算节点的请求,从内存节点的空闲内核内存中为计算节点分配第一内核内存,再将该第一内核内存映射到第一存储空间,以实现为计算节点分配远端内存。作为本领域的公知常识,在内存节点中,内核内存是操作系统为内核对象分配的内存,是逻辑内存,内核内存的大小为2nB,n为所述内存节点CPU通用寄存器的数据宽度,也即内核内存要远远大于内存节点的物理内存,基于虚拟内存技术,内核内存不仅可以映射到物理内存,也可以映射到虚拟内存(即从外存上扩展的虚拟内存)。所以,采用本发明实施例提供的技术方案,计算节点向内存节点申请远端内存时,不受该内存节点中空闲物理内存上限的限制,计算节点可以向内存节点申请更大的远端内存。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为本发明实施例提供的远端内存分配方法的应用场景示意图;
图1b为本发明实施例提供的远端内存分配方法的流程示意图;
图1c为本发明实施例提供的远端内存分配方法的流程示意图;
图2a为本发明实施例提供的远端内存分配装置的结构示意图;
图2b为本发明实施例提供的另一种远端内存分配装置的结构示意图;
图2c为本发明实施例提供的再一种远端内存分配装置的结构示意图;
图2d(1)为本发明实施例提供的再一种远端内存分配装置的结构示意图;
图2d(2)为本发明实施例提供的再一种远端内存分配装置的结构示意图;
图2e为本发明实施例提供的再一种远端内存分配装置的结构示意图;
图3a为本发明实施例提供的一种远端内存分配系统的结构示意图;
图3b为本发明实施例提供的另一种远端内存分配系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在对本发明所述的技术方案进行解释之前,先明确两个成熟的现有技术:
1、基于内存分页机制实现逻辑地址到物理地址的映射。具体是指,基于分页机制,每个进程能够获得独立的逻辑地址空间,进而通过逻辑地址访问物理地址,并且能够提供逻辑地址空间的保护。为了提升地址转换性能,一般处理器中都包括内存管理单元(MMU,Memeory Management Unit)和传输后备缓存器(TLB,Translation Lookside Buffer)来优化内存访问性能。
2、虚拟内存。是指基于虚拟内存技术实现对物理内存的动态扩展,具体的,通过使用外部存储设备(HDD/SDD/NVM等),实现对物理内存的扩展。
如图1a所示,为本发明实施例所述的远端内存分配方法的应用场景示意图,具体的,包括内存节点11和计算节点13,内存节点11和计算节点13之间通过高速互连接口连接,以实现内存节点11和计算节点13之间的信息交互。
实施例一
参阅附图1b,本发明实施例所述的远端内存分配方法的流程图,本发明实施例所述的方法应用于图1a所示的应用场景中。具体的,包括下述步骤:
S101、内存节点接收计算节点发送的请求,所述请求指示所述计算节点向所述内存节点申请XB的远端内存,其中,所述内存节点和所述计算节点之间通过网络通信连接,所述X大于零且小于2n,所述n为所述内存节点CPU通用寄存器的数据宽度;
需要说明的是,本发明实施例中所述的内存节点是指具有物理存储空间和网络通信功能的节点,在本发明实施例中称之为内存节点是为了便于表述,不应理解为限制性规定。同样的,本发明实施例中所述的计算节点是指具有运算能力和网络通信功能的节点,在本发明实施例中称之为计算节点也是为了便于表述,不应理解为限制性规定。
作为本发明的另一个实施例,所述请求还指示所述远端内存为远端物理内存;或者,所述请求还指示所述远端内存为远端虚拟内存;或者,所述请求还指示所述远端内存为远端物理内存和远端虚拟内存。
作为本发明的再一个实施例,所述请求还指示还指示第一起始地址,所述第一起始地址是指所述远端内存起始位置面向所述计算节点的地址。
S103、所述内存节点从所述内存节点的空闲内核内存为所述计算节点分配所述XB的第一内核内存;
需要说明的是,本发明实施例所述的技术方案针对的是所述内存节点的CPU运行在内核态的情况下。应当理解的是,所述内存节点从所述内存节点的空闲内核内存为所述计算节点分配所述XB的第一内核内存,具体包括:所述内存节点判断所述内存节点的空闲内核内存是否大于或者等于所述远端内存,并在所述空闲内核内存大于或者等于所述远端内存的情况下,所述内存节点从所述空闲内核内存中为所述计算节点分配所述XB的第一内核内存。应当理解的是,在所述空闲内核内存小于所述远端内存的情况下,则不再继续进行下述步骤,也即所述内存节点不为所述计算节点分配所述远端内存。
需要说明的是,为了更好的实现本方案,所述内存节点的操作系统在为内核设置参数时,为该内存节点的内核配备足够的内核内存。例如,对于64位CPU,可以将内核内存配置为8EB,这样可以提供充足的内核内存以分配给计算节点。
S105、在所述内存节点从所述内存节点的空闲内核内存为所述计算节点分配所述XB的第一内核内存之后,且在所述计算节点向所述远端内存读写数据之前,所述方法还包括:
所述内存节点将所述第一内核内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存,进而使得所述计算节点向所述第一存储空间读写数据,所述第一存储空间的大小为所述XB;所述第一存储空间为物理内存,或,所述第一存储空间为虚拟内存,或,所述第一存储空间为物理内存和虚拟内存。
值得注意的是,所述内存节点从所述内存节点的空闲内核内存为所述计算节点分配所述XB的第一内核内存之后,所述计算节点被分配的是大小为XB的逻辑内存,因为在第一内核内存映射的真正的存储空间之前,它只是一段逻辑内存,由于逻辑内存不能用来读取数据,所以所述计算节点不能将数据读取到所述第一内核内存。结合步骤S105可知,在所述计算节点被分配所述第一内核内存之后,且在所述第一内核内存映射到所述第一存储空间之前,所述计算节点没有向所述第一内核内存读写数据。所述计算节点是在所述第一内核内存映射到所述第一存储空间之后,向所述第一存储空间读写数据的。应当理解的是,步骤S105所说的“所述内存节点将所述第一内核内存映射到所述内存节点的第一存储空间”是基于内存分页机制实现逻辑地址到物理地址的映射。
需要说明的是,在所述请求还指示所述远端内存为远端物理内存的情况下,所述内存节点将所述第一内核内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存,进而使得所述计算节点向所述第一存储空间读写数据,所述第一存储空间的大小为所述XB,具体包括:所述内存节点将所述第一内核内存映射到所述内存节点的第一物理内存,以实现为所述计算节点分配所述远端物理内存,进而使得所述计算节点向所述第一物理内存读写数据,所述第一物理内存的大小为所述XB。应当理解的是,在所述内存节点将所述第一内核内存映射到所述内存节点的第一物理内存之前,本发明实施例所述的方法还包括:所述内存节点判断所述内存节点的空闲物理内存是否大于或者等于所述远端内存,并在所述空闲物理内存大于或者等于所述远端内存的情况下,所述内存节点从所述空闲物理内存中为所述计算节点分配所述第一物理内存。应当理解的是,在所述空闲物理内存小于所述远端内存的情况下,则不再继续进行下述步骤,也即所述内存节点不为所述计算节点分配所述远端内存。
进一步需要说明的是,在所述请求还指示所述远端内存为远端物理内存和远端虚拟内存,且所述远端物理内存的大小为KB,所述远端虚拟内存的大小为XB-KB的情况下,所述内存节点将所述第一内核内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存,进而使得所述计算节点向所述第一存储空间读写数据,所述第一存储空间的大小为所述XB,具体包括:所述内存节点将所述第一内核内存中大小为KB的部分映射到所述内存节点的物理内存,所述内存节点将所述第一内核内存中大小为XB-KB的部分映射到所述内存节点的虚拟内存,进而使得所述计算节点向所述KB的物理内存和所述XB-KB的虚拟内存中读写数据。类似的,在所述内存节点将所述第一内核内存中大小为KB的部分映射到所述内存节点的物理内存之前,所述内存节点还判断所述内存节点的空闲物理内存是否大于或者等于所述KB,并在所述空闲物理内存大于或者等于所述KB的情况下,所述内存节点将所述第一内核内存中大小为KB的部分映射到所述内存节点的物理内存。值得注意的是,在所述请求还指示第一起始地址的情况下,本发明实施例提供的技术方案还包括:所述内存节点建立所述第一起始地址和第二起始地址之间的映射关系,所述第二起始地址是指所述空闲内核内存中所述第一内核内存起始位置的地址。需要说明的是,所述计算节点向所述远端内存读取数据A时,会将所述数据A和所述数据A的起始位置面向所述计算节点的地址A1发送给所述内存节点,所述内存节点根据所述映射关系,判断出所述数据A的起始位置在所述空闲内核内存中的地址A2,在将所述A2映射到所述内存节点的存储空间A3,以将所述数据A读写到所述A3中。其中所述A3可以是物理内存,也可以是虚拟内存,或者所述A3的一部分为物理内存,另一部分为虚拟内存。
可知,本发明实施例提供的技术方案中,内存节点根据计算节点的请求,从内存节点的空闲内核内存中为计算节点分配第一内核内存,再将该第一内核内存映射到第一存储空间,以实现为计算节点分配远端内存。作为本领域的公知常识,在内存节点中,内核内存是操作系统为内核对象分配的内存,是逻辑内存,内核内存要远远大于内存节点的物理内存,基于虚拟内存技术,内核内存不仅可以映射到物理内存,也可以映射到虚拟内存(即从外存上扩展的虚拟内存)。所以,采用本发明实施例提供的技术方案,计算节点向内存节点申请远端内存时,不受该内存节点中空闲物理内存上限的限制,计算节点可以向内存节点申请更大的远端内存。
实施例二
参阅附图1c,本发明实施例所述的远端内存分配方法的流程图,本发明实施例所述的方法应用于图1a所示的应用场景中。具体的,包括下述步骤:
S111、内存节点接收计算节点发送的请求,所述请求指示所述计算节点向所述内存节点申请XB的远端内存,其中,所述X大于零且小于2n,所述n为所述内存节点CPU通用寄存器的数据宽度,所述内存节点和所述计算节点之间通过网络通信连接;
需要说明的是,本发明实施例中所述的内存节点是指具有物理存储空间和网络通信功能的节点,在本发明实施例中称之为内存节点是为了便于表述,不应理解为限制性规定。同样的,本发明实施例中所述的计算节点是指具有运算能力和网络通信功能的节点,在本发明实施例中称之为计算节点也是为了便于表述,不应理解为限制性规定。
作为本发明的另一个实施例,所述请求还指示所述远端内存为远端物理内存;或者,所述请求还指示所述远端内存为远端虚拟内存;或者,所述请求还指示所述远端内存为远端物理内存和远端虚拟内存。
作为本发明的再一个实施例,所述请求还指示第一起始地址,所述第一起始地址是指所述远端内存起始位置面向所述计算节点的地址。
S113、所述内存节点根据所述请求,从第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存,所述第一目标进程是指运行在所述内存节点中、具有与所述计算节点交互的第一接口且能通过所述第一接口为所述计算节点分配逻辑内存的进程,所述第一目标进程的空闲逻辑内存大于或者等于所述XB;
值得注意的是,当程序被操作系统调用到内存以后,操作系统会给程序分配一定的资源(例如逻辑内存等),然后进行一系列的复杂操作,使程序变成进程以供系统调用。对于一个进程来说,它的逻辑内存和CPU的位数之间的关系通常为:进程的逻辑内存为2rB,其中r为CPU的位数。通常的,进程的逻辑内存远大于物理内存,且进程的逻辑内存中往往有很大一部分是空闲的。
需要说明的是,本发明实施例所述的第一目标进程是从运行在所述内存节点的多个进程中选择出来的,或者,所述第一目标进程是有所述内存节点创建的。也即,所述内存节点接收计算节点发送的请求之后,以及所述内存节点根据所述请求,从第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存之前,所述方法还包括:所述内存节点从运行在所述内存节点的所有进程中选择出所述第一目标进程;或者,所述内存节点创建所述第一目标进程,并为所述第一目标进程分配逻辑内存。优选的,所述内存节点创建所述第一目标进程,是在运行在所述内存节点的所有进程中不存在所述第一目标进程的情况下。
在有多个计算节点向所述内存节点请求远端内存,且所述内存节点需要创建两个以上所述第一目标进程的情况下,需要说明的是,所述内存节点的内核数量大于创建所述第一目标进程之前运行所述内存节点上的进程的数量的情况下,所述方法还包括:创建的所述第一目标进程之后,运行在所述内存节点上的进程的数量不超过所述内存节点的内核数量。这是为了保证进程的运行速度,应当知道的是,若运行在所述内存节点上的进程的数量超过所述内存节点的内核数量,则进程的运行速度要慢一些。
S115、在所述内存节点从所述第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存之后,且在所述计算节点向所述远端内存读写数据之前,所述方法还包括:
所述内存节点将所述第一逻辑内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存,进而使得所述计算节点向所述第一存储空间读写数据;其中,所述第一存储空间的大小为所述XB,所述第一存储空间为物理内存和虚拟内存,或,所述第一存储空间为物理内存,或,所述第一存储空间为虚拟内存。
值得注意的是,所述内存节点从所述第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存之后,所述计算节点被分配的是大小为XB的逻辑内存,因为在所述第一逻辑内存映射的真正的存储空间之前,它只是一段逻辑内存,由于逻辑内存不能用来读取数据,所以所述计算节点不能将数据读取到所述第一逻辑内存。结合步骤S115可知,在所述计算节点被分配所述第一逻辑内存之后,且在所述第一逻辑内存映射到所述第一存储空间之前,所述计算节点没有向所述第一逻辑内存读写数据。所述计算节点是在所述第一逻辑内存映射到所述第一存储空间之后,向所述第一存储空间读写数据的。应当理解的是,步骤S115所说的“所述内存节点将所述第一逻辑内存映射到所述内存节点的第一存储空间”是基于内存分页机制实现逻辑地址到物理地址的映射。
需要说明的是,在所述请求还指示所述远端内存为远端物理内存的情况下,所述内存节点将所述第一逻辑内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存,进而使得所述计算节点向所述第一存储空间读写数据,具体包括:所述内存节点将所述第一逻辑内存映射到所述内存节点的第一物理内存,以实现为所述计算节点分配所述远端物理内存,进而使得所述计算节点向所述第一物理内存读写数据,所述第一物理内存的大小为所述XB。应当理解的是,在所述内存节点将所述第一逻辑内存映射到所述内存节点的第一物理内存之前,本发明实施例所述的方法还包括:所述内存节点判断所述内存节点的空闲物理内存是否大于或者等于所述远端内存,并在所述空闲物理内存大于或者等于所述远端内存的情况下,所述内存节点从所述空闲物理内存中为所述计算节点分配所述第一物理内存。应当理解的是,在所述空闲物理内存小于所述远端内存的情况下,则不再继续进行下述步骤,也即所述内存节点不为所述计算节点分配所述远端内存。
值得注意的是,在所述请求还指示第一起始地址的情况下,本发明实施例提供的技术方案还包括:所述内存节点建立所述第一起始地址和第二起始地址之间的映射关系,所述第二起始地址是指在所述空闲逻辑内存中所述第一逻辑内存起始位置的地址。需要说明的是,所述计算节点向所述远端内存读取数据A时,会将所述数据A和所述数据A的起始位置面向所述计算节点的地址A1发送给所述内存节点,所述内存节点根据所述映射关系,判断出所述数据A的起始位置在所述空闲内核内存中的地址A2,在将所述A2映射到所述内存节点的存储空间A3,以将所述数据A读写到所述A3中。其中所述A3可以是物理内存,也可以是虚拟内存,或者所述A3的一部分为物理内存,另一部分为虚拟内存。
可知,本发明实施例提供的技术方案中,内存节点根据计算节点的请求,从第一目标进程的空闲逻辑内存为所述计算节点分配第一逻辑内存,所述第一目标进程运行在所述内存节点中;再将该第一逻辑内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配远端内存。作为本领域的公知常识,进程的逻辑内存要远远大于内存节点的物理内存,基于虚拟内存技术,进程的逻辑内存不仅可以映射到物理内存,也可以映射到虚拟内存(即从外存上扩展的虚拟内存)。所以,采用本发明实施例提供的技术方案,计算节点向内存节点申请远端内存时,不受该内存节点中空闲物理内存上限的限制,计算节点可以向内存节点申请更大的远端内存。
实施例三
参见附图2a,为本发明实施例提供的一种远端内存分配装置200的结构示意图,优选的,本发明实施例所述的远端内存分配装置200集成在图1a所示的内存节点中。需要说明的是,本发明实施例所述的远端内存分配装置200是实施例一所述的方法的执行主体,可用于执行实施例一所述的方法。具体的,远端内存分配装置200包括:
接收单元201,用于接收计算节点发送的请求,所述请求指示所述计算节点向内存节点申请XB的远端内存,所述X大于零且小于2n,所述n为所述内存节点CPU通用寄存器的数据宽度;
作为本发明的一个实施例,所述请求还指示所述远端内存为远端物理内存;或者,所述请求还指示所述远端内存为远端虚拟内存;或者,所述请求还指示所述远端内存为远端物理内存和远端虚拟内存。
作为本发明的另一个实施例,所述请求还指示第一起始地址,所述第一起始地址是指所述远端内存起始位置面向所述计算节点的地址。
分配单元203,用于从所述内存节点的空闲内核内存为所述计算节点分配所述XB的第一内核内存;
需要说明的是,本发明实施例所述的技术方案针对的是所述内存节点的CPU运行在内核态的情况下。
在所述分配单元从所述内存节点的空闲内核内存为所述计算节点分配所述XB的第一内核内存之后,且在所述计算节点向所述远端内存读写数据之前,
映射单元205,用于将所述第一内核内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存,进而使得所述计算节点向所述第一存储空间读写数据;其中,所述第一存储空间的大小为所述XB,所述第一存储空间为物理内存,或,所述第一存储空间为虚拟内存,或,所述第一存储空间为物理内存和虚拟内存。
需要说明的是,在所述请求还指示所述远端内存为远端物理内存的情况下,映射单元205具体用于将所述第一内核内存映射到所述内存节点的第一物理内存,以实现为所述计算节点分配所述远端物理内存,进而使得所述计算节点向所述第一物理内存读写数据,所述第一物理内存的大小为所述XB。
在所述请求还指示第一起始地址的情况下,参见附图2b所述的远端内存分配装置210,所述远端内存分配装置210还包括建立单元212,其中,建立单元212用于建立所述第一起始地址和第二起始地址之间的映射关系,所述第二起始地址是指所述空闲内核内存中所述第一内核内存起始位置的地址。
需要说明的是,本实施例和实施例一所述的内容可互相参见,重复的内容不再赘述。
可知,在本发明实施例提供的远端内存分配装置中,内存节点根据计算节点的请求,从内存节点的空闲内核内存中为计算节点分配第一内核内存,再将该第一内核内存映射到第一存储空间,以实现为计算节点分配远端内存。作为本领域的公知常识,在内存节点中,内核内存是操作系统为内核对象分配的内存,是逻辑内存,内核内存要远远大于内存节点的物理内存,基于虚拟内存技术,内核内存不仅可以映射到物理内存,也可以映射到虚拟内存(即从外存上扩展的虚拟内存)。所以,采用本发明实施例提供的远端内存分配装置,计算节点向内存节点申请远端内存时,不受该内存节点中空闲物理内存上限的限制,计算节点可以向内存节点申请更大的远端内存。
实施例四
参见附图2c,为本发明实施例提供的一种远端内存分配装置220的结构示意图,优选的,本发明实施例所述的远端内存分配装置220集成在图1a所示的内存节点中。需要说明的是,本发明实施例所述的远端内存分配装置220是实施例二所述的方法的执行主体,可用于执行实施例二所述的方法。具体的,远端内存分配装置220包括:
接收单元221,用于接收计算节点发送的请求,所述请求指示所述计算节点向内存节点申请XB的远端内存,其中,所述X大于零且小于2n,所述n为所述内存节点CPU通用寄存器的数据宽度,所述内存节点和所述计算节点之间通过网络通信连接;
作为本发明的一个实施例,所述请求还指示所述远端内存为远端物理内存;或者,所述请求还指示所述远端内存为远端虚拟内存;或者,所述请求还指示所述远端内存为远端物理内存和远端虚拟内存。
作为本发明的另一个实施例,所述请求还指示第一起始地址,所述第一起始地址是指所述远端内存起始位置面向所述计算节点的地址。
分配单元223,用于根据所述请求,从第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存,所述第一目标进程是指运行在所述内存节点中、具有与所述计算节点交互的第一接口且能通过所述第一接口为所述计算节点分配逻辑内存的进程,所述第一目标进程的空闲逻辑内存大于或者等于所述XB;
需要说明的是,本发明实施例所述的第一目标进程是从运行在所述内存节点的多个进程中选择出来的,或者,所述第一目标进程是有所述内存节点创建的。
具体的,参见图2d(1)所示的远端内存分配装置230,远端内存分配装置230还包括选择单元232,在接收单元231接收计算节点发送的请求之后,以及分配单元233根据所述请求,从第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存之前,选择单元232用于从运行在所述内存节点的所有进程中选择出所述第一目标进程。
或者,参见图2d(2)所示的远端内存分配装置240,远端内存分配装置240还包括创建单元242,在接收单元241接收计算节点发送的请求之后,以及分配单元243根据所述请求,从第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存之前,创建单元242用于创建所述第一目标进程,并为所述第一目标进程分配逻辑内存。
需要说明的是,在所述内存节点的内核数量大于创建所述第一目标进程之前运行所述内存节点上的进程的数量的情况下,创建单元242创建所述第一目标进程之后,运行在所述内存节点上的进程的数量不超过所述内存节点的内核数量。这是为了保证进程的运行速度,应当知道的是,若运行在所述内存节点上的进程的数量超过所述内存节点的内核数量,则进程的运行速度要慢一些。
在所述分配单元从所述第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存之后,且在所述计算节点向所述远端内存读写数据之前,
映射单元225,用于将所述第一逻辑内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存,进而使得所述计算节点向所述第一存储空间读写数据,所述第一存储空间的大小为所述XB;所述第一存储空间为物理内存和虚拟内存,或,所述第一存储空间为物理内存,或,所述第一存储空间为虚拟内存。
需要说明的是,在所述请求还指示所述远端内存为远端物理内存的情况下,映射单元225具体用于将所述第一逻辑内存映射到所述内存节点的第一物理内存,以实现为所述计算节点分配所述远端物理内存,进而使得所述计算节点向所述第一物理内存读写数据,所述第一物理内存的大小为所述XB。
值得注意的是,参见附图2e所示的远端内存分配装置250,远端内存分配装置250还包括建立单元252,在所述请求还指示第一起始地址的情况下,建立单元252用于建立所述第一起始地址和第二起始地址之间的映射关系,所述第二起始地址是指在所述空闲逻辑内存中所述第一逻辑内存起始位置的地址。
需要说明的是,本实施例和实施例二所述的内容可互相参见,重复的内容不再赘述。
可知,在本发明实施例提供的远端内存分配装置中,内存节点根据计算节点的请求,从第一目标进程的空闲逻辑内存为所述计算节点分配第一逻辑内存,所述第一目标进程运行在所述内存节点中;再将该第一逻辑内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配远端内存。作为本领域的公知常识,进程的逻辑内存要远远大于内存节点的物理内存,基于虚拟内存技术,进程的逻辑内存不仅可以映射到物理内存,也可以映射到虚拟内存(即从外存上扩展的虚拟内存)。所以,采用本发明实施例提供的远端内存分配装置,计算节点向内存节点申请远端内存时,不受该内存节点中空闲物理内存上限的限制,计算节点可以向内存节点申请更大的远端内存。
实施例五
参见附图3a所示的远端内存分配系统,包括计算节点301、内存节点305和如实施例三所述的远端内存分配装置303。
具体的,计算节点301用于发送远端内存分配装置303接收的所述请求;
内存节点305用于提供所述第一存储空间;
计算节点301还用于获取所述第一存储空间为所述远端内存。
优选的,远端内存分配装置303集成在内存节点305中。
需要说明的是,远端内存分配装置303的功能参见实施例三的解释说明,此处不再赘述。
可知,基于实施例三中所述的远端内存分配装置303的有益效果,采用本发明实施例所述的远端内存分配系统,计算节点301向内存节点305申请远端内存时,不受该内存节点305中空闲物理内存上限的限制,计算节点301可以向内存节点305申请更大的远端内存。
实施例六
参见附图3b所示的远端内存分配系统,包括计算节点311、内存节点315和如实施例四所述的远端内存分配装置313。
具体的,计算节点311用于发送远端内存分配装置313接收的所述请求;
内存节点315用于提供所述第一存储空间;
计算节点311还用于获取所述第一存储空间为所述远端内存。
优选的,远端内存分配装置313集成在内存节点315中。
需要说明的是,远端内存分配装置313的功能参见实施例四的解释说明,此处不再赘述。
可知,基于实施例四中所述的远端内存分配装置313的效果,采用本发明实施例所述的远端内存分配系统,计算节点311向内存节点315申请远端内存时,不受该内存节点315中空闲物理内存上限的限制,计算节点311可以向内存节点315申请更大的远端内存。
其中上述实施例之间可以相互参见。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例提供的网络设备中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (26)
1.一种远端内存分配方法,其特征在于,包括:
内存节点接收计算节点发送的请求,所述请求指示所述计算节点向所述内存节点申请XB的远端内存,其中,所述内存节点和所述计算节点之间通过网络通信连接,所述X大于零且小于2n,所述n为所述内存节点CPU通用寄存器的数据宽度;
所述内存节点从所述内存节点的空闲内核内存为所述计算节点分配所述XB的第一内核内存;
在所述内存节点从所述内存节点的空闲内核内存为所述计算节点分配所述XB的第一内核内存之后,且在所述计算节点向所述远端内存读写数据之前,所述方法还包括:
所述内存节点将所述第一内核内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存,进而使得所述计算节点向所述第一存储空间读写数据,所述第一存储空间的大小为所述XB;所述第一存储空间为物理内存,或,所述第一存储空间为虚拟内存,或,所述第一存储空间为物理内存和虚拟内存。
2.根据权利要求1所述的方法,其特征在于:
所述请求还指示所述远端内存为远端物理内存;或者,
所述请求还指示所述远端内存为远端虚拟内存;或者,
所述请求还指示所述远端内存为远端物理内存和远端虚拟内存。
3.根据权利要求2所述的方法,其特征在于:
在所述请求还指示所述远端内存为远端物理内存的情况下,
所述内存节点将所述第一内核内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存,进而使得所述计算节点向所述第一存储空间读写数据,所述第一存储空间的大小为所述XB,具体包括:
所述内存节点将所述第一内核内存映射到所述内存节点的第一物理内存,以实现为所述计算节点分配所述远端物理内存,进而使得所述计算节点向所述第一物理内存读写数据,所述第一物理内存的大小为所述XB。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述请求还指示第一起始地址,所述第一起始地址是指所述远端内存起始位置面向所述计算节点的地址;
所述方法还包括:
所述内存节点建立所述第一起始地址和第二起始地址之间的映射关系,所述第二起始地址是指所述空闲内核内存中所述第一内核内存起始位置的地址。
5.一种远端内存分配方法,其特征在于,包括:
内存节点接收计算节点发送的请求,所述请求指示所述计算节点向所述内存节点申请XB的远端内存,其中,所述X大于零且小于2n,所述n为所述内存节点CPU通用寄存器的数据宽度,所述内存节点和所述计算节点之间通过网络通信连接;
所述内存节点根据所述请求,从第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存,所述第一目标进程是指运行在所述内存节点中、具有与所述计算节点交互的第一接口且能通过所述第一接口为所述计算节点分配逻辑内存的进程,所述第一目标进程的空闲逻辑内存大于或者等于所述XB;
在所述内存节点从所述第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存之后,且在所述计算节点向所述远端内存读写数据之前,所述方法还包括:
所述内存节点将所述第一逻辑内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存,进而使得所述计算节点向所述第一存储空间读写数据;其中,所述第一存储空间的大小为所述XB,所述第一存储空间为物理内存和虚拟内存,或,所述第一存储空间为物理内存,或,所述第一存储空间为虚拟内存。
6.根据权利要求5所述的方法,其特征在于,
所述内存节点接收计算节点发送的请求之后,以及所述内存节点根据所述请求,从第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存之前,所述方法还包括:
所述内存节点从运行在所述内存节点的所有进程中选择出所述第一目标进程。
7.根据权利要求5所述的方法,其特征在于,
所述内存节点接收计算节点发送的请求之后,以及所述内存节点根据所述请求,从第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存之前,所述方法还包括:
所述内存节点创建所述第一目标进程,并为所述第一目标进程分配逻辑内存。
8.根据权利要求5至7任一项所述的方法,其特征在于:
所述请求还指示所述远端内存为远端物理内存;或者,
所述请求还指示所述远端内存为远端虚拟内存;或者,
所述请求还指示所述远端内存为远端物理内存和远端虚拟内存。
9.根据权利要求8所述的方法,其特征在于:
在所述请求还指示所述远端内存为远端物理内存的情况下,
所述内存节点将所述第一逻辑内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存,进而使得所述计算节点向所述第一存储空间读写数据,具体包括:
所述内存节点将所述第一逻辑内存映射到所述内存节点的第一物理内存,以实现为所述计算节点分配所述远端物理内存,进而使得所述计算节点向所述第一物理内存读写数据,所述第一物理内存的大小为所述XB。
10.根据权利要求5至9任一项所述的方法,其特征在于,
所述请求还指示第一起始地址,所述第一起始地址是指所述远端内存起始位置面向所述计算节点的地址;
所述方法还包括:
所述内存节点建立所述第一起始地址和第二起始地址之间的映射关系,所述第二起始地址是指在所述空闲逻辑内存中所述第一逻辑内存起始位置的地址。
11.根据权利要求7至10任一项所述的方法,其特征在于:
所述内存节点的内核数量大于创建所述第一目标进程之前运行所述内存节点上的进程的数量的情况下,
创建的所述第一目标进程之后,运行在所述内存节点上的进程的数量不超过所述内存节点的内核数量。
12.一种远端内存分配装置,其特征在于,包括:
接收单元,用于接收计算节点发送的请求,所述请求指示所述计算节点向内存节点申请XB的远端内存,所述X大于零且小于2n,所述n为所述内存节点CPU通用寄存器的数据宽度;
分配单元,用于从所述内存节点的空闲内核内存为所述计算节点分配所述XB的第一内核内存;
在所述分配单元从所述内存节点的空闲内核内存为所述计算节点分配所述XB的第一内核内存之后,且在所述计算节点向所述远端内存读写数据之前,
映射单元,用于将所述第一内核内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存,进而使得所述计算节点向所述第一存储空间读写数据,所述第一存储空间的大小为所述XB;所述第一存储空间为物理内存,或,所述第一存储空间为虚拟内存,或,所述第一存储空间为物理内存和虚拟内存。
13.根据权利要求12所述的装置,其特征在于:
所述请求还指示所述远端内存为远端物理内存;或者,
所述请求还指示所述远端内存为远端虚拟内存;或者,
所述请求还指示所述远端内存为远端物理内存和远端虚拟内存。
14.根据权利要求13所述的装置,其特征在于:
在所述请求还指示所述远端内存为远端物理内存的情况下,
所述映射单元具体用于将所述第一内核内存映射到所述内存节点的第一物理内存,以实现为所述计算节点分配所述远端物理内存,进而使得所述计算节点向所述第一物理内存读写数据,所述第一物理内存的大小为所述XB。
15.根据权利要求12至14任一项所述的装置,其特征在于,所述请求还指示第一起始地址,所述第一起始地址是指所述远端内存起始位置面向所述计算节点的地址;
所述装置还包括:
建立单元用于建立所述第一起始地址和第二起始地址之间的映射关系,所述第二起始地址是指所述空闲内核内存中所述第一内核内存起始位置的地址。
16.一种远端内存分配装置,其特征在于,包括:
接收单元,用于接收计算节点发送的请求,所述请求指示所述计算节点向内存节点申请XB的远端内存,其中,所述X大于零且小于2n,所述n为所述内存节点CPU通用寄存器的数据宽度,所述内存节点和所述计算节点之间通过网络通信连接;
分配单元,用于根据所述请求,从第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存,所述第一目标进程是指运行在所述内存节点中、具有与所述计算节点交互的第一接口且能通过所述第一接口为所述计算节点分配逻辑内存的进程,所述第一目标进程的空闲逻辑内存大于或者等于所述XB;
在所述分配单元从所述第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存之后,且在所述计算节点向所述远端内存读写数据之前,
映射单元,用于将所述第一逻辑内存映射到所述内存节点的第一存储空间,以实现为所述计算节点分配所述远端内存,进而使得所述计算节点向所述第一存储空间读写数据,所述第一存储空间的大小为所述XB;所述第一存储空间为物理内存和虚拟内存,或,所述第一存储空间为物理内存,或,所述第一存储空间为虚拟内存。
17.根据权利要求16所述的装置,其特征在于,
在所述接收单元接收计算节点发送的请求之后,以及所述分配单元根据所述请求,从第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存之前,所述装置还包括:
选择单元,用于从运行在所述内存节点的所有进程中选择出所述第一目标进程。
18.根据权利要求16所述的装置,其特征在于,
在所述接收单元接收计算节点发送的请求之后,以及所述分配单元根据所述请求,从第一目标进程的空闲逻辑内存为所述计算节点分配所述XB的第一逻辑内存之前,所述装置还包括:
创建单元,用于创建所述第一目标进程,并为所述第一目标进程分配逻辑内存。
19.根据权利要求16至18任一项所述的装置,其特征在于:
所述请求还指示所述远端内存为远端物理内存;或者,
所述请求还指示所述远端内存为远端虚拟内存;或者,
所述请求还指示所述远端内存为远端物理内存和远端虚拟内存。
20.根据权利要求19所述的装置,其特征在于:
在所述请求还指示所述远端内存为远端物理内存的情况下,
所述映射单元具体用于将所述第一逻辑内存映射到所述内存节点的第一物理内存,以实现为所述计算节点分配所述远端物理内存,进而使得所述计算节点向所述第一物理内存读写数据,所述第一物理内存的大小为所述XB。
21.根据权利要求16至20任一项所述的装置,其特征在于,
所述请求还指示第一起始地址,所述第一起始地址是指所述远端内存起始位置面向所述计算节点的地址;
所述装置还包括:
建立单元,用于建立所述第一起始地址和第二起始地址之间的映射关系,所述第二起始地址是指在所述空闲逻辑内存中所述第一逻辑内存起始位置的地址。
22.根据权利要求18至21任一项所述的装置,其特征在于:
所述内存节点的内核数量大于创建所述第一目标进程之前运行所述内存节点上的进程的数量的情况下,
所述创建单元创建的所述第一目标进程之后,运行在所述内存节点上的进程的数量不超过所述内存节点的内核数量。
23.一种远端内存分配系统,其特征在于,包括计算节点、内存节点和如权利要求12至15任一项所述的远端内存分配装置:
所述计算节点用于发送所述远端内存分配装置接收的所述请求;
所述内存节点用于提供所述第一存储空间;
所述计算节点还用于获取所述第一存储空间为所述远端内存。
24.根据权利要求23所述的系统,其特征在于:
所述远端内存分配装置集成在所述内存节点。
25.一种远端内存分配系统,其特征在于,包括计算节点、内存节点和如权利要求16至22任一项所述的远端内存分配装置:
所述计算节点用于发送所述远端内存分配装置接收的所述请求;
所述内存节点用于提供所述第一存储空间;
所述计算节点还用于获取所述第一存储空间为所述远端内存。
26.根据权利要求25所述的系统,其特征在于:
所述远端内存分配装置集成在所述内存节点。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510041110.7A CN105988871B (zh) | 2015-01-27 | 2015-01-27 | 一种远端内存分配方法、装置和系统 |
PCT/CN2016/071483 WO2016119618A1 (zh) | 2015-01-27 | 2016-01-20 | 一种远端内存分配方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510041110.7A CN105988871B (zh) | 2015-01-27 | 2015-01-27 | 一种远端内存分配方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105988871A true CN105988871A (zh) | 2016-10-05 |
CN105988871B CN105988871B (zh) | 2020-06-02 |
Family
ID=56542395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510041110.7A Active CN105988871B (zh) | 2015-01-27 | 2015-01-27 | 一种远端内存分配方法、装置和系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105988871B (zh) |
WO (1) | WO2016119618A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729145A (zh) * | 2017-10-11 | 2018-02-23 | 广东欧珀移动通信有限公司 | 应用程序运行控制方法及装置 |
CN111367461A (zh) * | 2018-12-25 | 2020-07-03 | 北京兆易创新科技股份有限公司 | 一种存储空间管理方法及装置 |
CN112948149A (zh) * | 2021-03-29 | 2021-06-11 | 江苏为是科技有限公司 | 一种远端内存共享方法、装置、电子设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040205304A1 (en) * | 1997-08-29 | 2004-10-14 | Mckenney Paul E. | Memory allocator for a multiprocessor computer system |
CN101594309A (zh) * | 2009-06-30 | 2009-12-02 | 华为技术有限公司 | 集群系统中内存资源的管理方法、设备及网络系统 |
CN102308282A (zh) * | 2011-07-20 | 2012-01-04 | 华为技术有限公司 | 多处理器体系结构远端内存访问的模拟方法及模拟器 |
US20140040563A1 (en) * | 2012-01-03 | 2014-02-06 | Seoul National University R&Db Foundation | Shared virtual memory management apparatus for providing cache-coherence |
CN104102460A (zh) * | 2014-07-23 | 2014-10-15 | 浪潮(北京)电子信息产业有限公司 | 一种基于云计算的内存管理方法及装置 |
CN104216835A (zh) * | 2014-08-25 | 2014-12-17 | 杨立群 | 一种实现内存融合的方法及装置 |
CN104239227A (zh) * | 2013-06-20 | 2014-12-24 | 杭州华三通信技术有限公司 | 一种虚拟化存储管理装置、本地虚拟存储管理装置及方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110196B (zh) * | 2009-12-25 | 2015-04-29 | 中国长城计算机深圳股份有限公司 | 并行运行多用户操作系统间的数据安全传输方法及系统 |
CN103077120B (zh) * | 2012-12-31 | 2016-01-27 | 东软集团股份有限公司 | 程序共享内存的地址转换方法和装置 |
CN103942087B (zh) * | 2014-03-31 | 2017-11-17 | 华为技术有限公司 | 虚拟机热迁移方法及相关装置和集群系统 |
-
2015
- 2015-01-27 CN CN201510041110.7A patent/CN105988871B/zh active Active
-
2016
- 2016-01-20 WO PCT/CN2016/071483 patent/WO2016119618A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040205304A1 (en) * | 1997-08-29 | 2004-10-14 | Mckenney Paul E. | Memory allocator for a multiprocessor computer system |
CN101594309A (zh) * | 2009-06-30 | 2009-12-02 | 华为技术有限公司 | 集群系统中内存资源的管理方法、设备及网络系统 |
CN102308282A (zh) * | 2011-07-20 | 2012-01-04 | 华为技术有限公司 | 多处理器体系结构远端内存访问的模拟方法及模拟器 |
US20140040563A1 (en) * | 2012-01-03 | 2014-02-06 | Seoul National University R&Db Foundation | Shared virtual memory management apparatus for providing cache-coherence |
CN104239227A (zh) * | 2013-06-20 | 2014-12-24 | 杭州华三通信技术有限公司 | 一种虚拟化存储管理装置、本地虚拟存储管理装置及方法 |
CN104102460A (zh) * | 2014-07-23 | 2014-10-15 | 浪潮(北京)电子信息产业有限公司 | 一种基于云计算的内存管理方法及装置 |
CN104216835A (zh) * | 2014-08-25 | 2014-12-17 | 杨立群 | 一种实现内存融合的方法及装置 |
Non-Patent Citations (2)
Title |
---|
胡纲: "远端内存交换系统的设计与实现", 《微计算机信息》 * |
邓劲生: "广域网络虚拟化存储技术研究", 《中国优秀博硕士学位论文全文数据库 (博士) 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729145A (zh) * | 2017-10-11 | 2018-02-23 | 广东欧珀移动通信有限公司 | 应用程序运行控制方法及装置 |
CN111367461A (zh) * | 2018-12-25 | 2020-07-03 | 北京兆易创新科技股份有限公司 | 一种存储空间管理方法及装置 |
CN111367461B (zh) * | 2018-12-25 | 2024-02-20 | 兆易创新科技集团股份有限公司 | 一种存储空间管理方法及装置 |
CN112948149A (zh) * | 2021-03-29 | 2021-06-11 | 江苏为是科技有限公司 | 一种远端内存共享方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105988871B (zh) | 2020-06-02 |
WO2016119618A1 (zh) | 2016-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106201659B (zh) | 一种虚拟机热迁移的方法及宿主机 | |
CN102255962B (zh) | 一种分布式存储方法、装置和系统 | |
Jeannot et al. | Near-optimal placement of MPI processes on hierarchical NUMA architectures | |
US7231504B2 (en) | Dynamic memory management of unallocated memory in a logical partitioned data processing system | |
CN103324533B (zh) | 分布式数据处理方法、装置及系统 | |
CN103425538B (zh) | 进程通讯方法及系统 | |
US10254993B2 (en) | Selecting first data sets in a first storage group to swap with second data sets in a second storage group | |
US20180196603A1 (en) | Memory Management Method, Apparatus, and System | |
CN104937564B (zh) | 组表格的数据冲洗 | |
CN103412822A (zh) | 操作非易失性内存和数据操作的方法和相关装置 | |
US10656852B2 (en) | Performing preprocessing operations in anticipation of log file writes | |
CN109417488A (zh) | 虚拟网络功能资源管理的方法和设备 | |
Long et al. | A toolkit for modeling and simulating cloud data storage: An extension to cloudsim | |
CN104536903A (zh) | 一种按数据属性分类存放的混合存储方法及系统 | |
US11307900B2 (en) | Adjustment of the number of central processing units to meet performance requirements of an I/O resource | |
CN105357042A (zh) | 一种高可用集群系统及其主节点和从节点 | |
CN104272242A (zh) | 创建加密存储体 | |
CN103793332B (zh) | 基于内存的数据存储方法、装置、处理器和电子设备 | |
CN103685351A (zh) | 一种基于云计算平台的缓存服务节点的调度方法和设备 | |
CN107343023A (zh) | 一种Mesos管理集群中的资源分配方法、装置及电子设备 | |
WO2021209844A1 (en) | Storing write data in storage system | |
CN105988871A (zh) | 一种远端内存分配方法、装置和系统 | |
CN109101194A (zh) | 一种刷写性能优化方法和存储系统 | |
CN104346404A (zh) | 一种访问数据的方法、设备及系统 | |
CN117591009A (zh) | 一种数据管理方法、存储装置及服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |