CN100489815C - 一种内存共享的系统和装置及方法 - Google Patents

一种内存共享的系统和装置及方法 Download PDF

Info

Publication number
CN100489815C
CN100489815C CNB2007101763522A CN200710176352A CN100489815C CN 100489815 C CN100489815 C CN 100489815C CN B2007101763522 A CNB2007101763522 A CN B2007101763522A CN 200710176352 A CN200710176352 A CN 200710176352A CN 100489815 C CN100489815 C CN 100489815C
Authority
CN
China
Prior art keywords
memory
internal memory
node
module
far
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
Application number
CNB2007101763522A
Other languages
English (en)
Other versions
CN101158927A (zh
Inventor
张翔
马捷
苗艳超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CNB2007101763522A priority Critical patent/CN100489815C/zh
Publication of CN101158927A publication Critical patent/CN101158927A/zh
Application granted granted Critical
Publication of CN100489815C publication Critical patent/CN100489815C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)

Abstract

本发明公开了一种多核心NUMA系统中的内存共享系统和装置及方法。该系统,包括多个节点;每个所述节点的操作系统包括内存共享装置,所述内存共享装置包括:内存信息收集及处理模块、内存申请模块和建立远端内存动态管理结构的模块连接到通信模块。所述方法包括如下步骤:步骤S1,当前节点的内存不足时,向其他节点发出内存不足信息,收集其他节点中有空闲内存的节点信息,然后向所述有空闲内存的节点发出内存申请信息,请求使用远端内存;步骤S2,所述有空闲内存的节点在收到所述内存申请信息后为当前节点分配远端内存并让当前节点动态管理并独占使用所述远端内存。本发明通过借用远端空闲内存,以达到整个系统的负载平衡。

Description

一种内存共享的系统和装置及方法
技术领域
本发明涉及多核处理器技术领域,特别是涉及一种在多核处理器系统非一致内存访问(Non Uniform Memory Access,NUMA)中节点之间实现内存共享的系统和装置及方法。
背景技术
非一致内存访问(NUMA)是一个在多处理器系统中配置微处理器的簇的方法,这样可以在本地共享内存,提高系统扩展的性能和能力。
非一致内存访问被用于对称多处理系统(Symmetric Multi-Processing,SMP)中。对称多处理系统是″紧紧联系″、″共享一切″的系统,在这个系统里单一操作系统下的多重处理器通过公用总线或″互联″路径访问彼此的内存。对称多处理的一个局限性是当微处理器增加时,共享总线和数据路径变得超载并且成为性能瓶颈。非一致内存访问增加一个在几个微处理器中共享的内存媒介水平,这样一来不用所有的数据访问都在主要的总线上传输。
非一致内存访问一般是以“簇”的形式进行的。这个簇一般由四个微处理器(例如四个奔腾微处理器)组成,这四个微处理器通过一条局域总线(例如外围组件互联总线)与一个单独主板(也可能是一个卡)上的共享内存(叫做″L3缓存″)连接。这个单元可以添加到相似的单元,形成一个对称多处理系统,其中一条公用对称多处理总线连接所有的簇。这样一个系统典型的包含16到256个微处理器。对一个运行在对称多处理系统中的应用程序来说,所有单独的处理器内存看起来就像一个内存。但一个处理器在特定内存地址寻找数据的时候,它首先察看微处理器本身的L1缓存,然后是附近的稍微大些的L2缓存,再然后是本地处理器附近的“本地内存”,最后是位于另一个微处理器附近的″远程内存″。在互联网络里非一致内存访问把这些簇的每一个都看作一个″节点″。非一致内存访问维持所有节点上的数据的分级视图。使用可升级连贯接口(SCI)技术,数据被通过总线在非一致内存访问对称多处理系统的簇间移动。SCI在多重簇的节点之间与叫做″缓存一致″或一致性的东西相配。SMP和非一致内存访问系统典型的被用于像数据挖掘和决策支持系统这样的应用软件,在这些软件中处理任务可以被分配给许多在一个公用数据库上集体工作的处理器。
但是,在非一致内存访问管理的多核处理器系统中,处理器之间经常由于负载不平衡,造成内存资源不能被充分的利用。在现有的技术中,为了充分利用内存资源,技术人员往往要修改应用程序,这样做的不足在于增加了技术人员的工作量,而且效果也不好。
发明内容
本发明的目的在于提供一种内存共享的系统和装置及方法,其能够充分利用内存资源,提高整个系统的吞吐率和并行性能。
为了达到上述目的,本发明采取如下技术方案:
一种内存共享系统,包括具有至少一个处理器核和/或至少一个处理器的多个节点;每个所述节点的操作系统包括内存共享装置,所述内存共享装置包括:
内存信息收集及处理模块,用于收集其他节点发送来的远端内存空闲信息并从中找出有空闲内存的节点;
内存申请模块,用于向有空闲内存的节点发送内存申请信息来申请使用远端内存;
建立远端内存动态管理结构的模块,用于对从其他节点申请来的远端内存建立动态管理;
通信模块,与所述内存信息收集及处理模块、所述内存申请模块和所述建立远端内存动态管理的模块相连接,用于节点之间的通信。
较佳地,所述内存共享装置还包括:
内存归还模块,用于向其他节点归还使用完的内存;所述内存归还模块与所述通信模块连接。
较佳地,,所述内存共享装置还包括:
内存信息广播模块,用于向其他节点广播本地内存空闲信息;
内存分配模块,用于在接到远端节点的内存申请信息时,将本地空闲内存分配给远端节点使用,并更新本地的内存空闲信息;
所述内存信息广播模块和所述内存分配模块与所述通信模块连接。
较佳地,所述内存信息收集及处理模块,还用于从有空闲内存的节点中找出空闲内存最多的节点;
所述内存申请模块,用于向空闲内存最多的节点发送内存申请信息来申请使用远端内存。
较佳地,所述内存申请信息中包含申请的内存数量,所述申请的内存数量大于本地实际需要的内存数量。
较佳地,所述内存共享装置还包括内存回收模块,用于发送内存回收信息并接收其他节点归还的内存。
较佳地,所述内存归还模块还设定有一个预定时间,用于本地节点在使用完远端内存后,如果在所述预定时间内接收到原来拥有所述远端内存的节点发来的内存回收信息,则所述内存归还模块归还所述远端内存;否则,所述内存归还模块延迟所述预定时间后再归还所述远端内存。
较佳地,所述内存申请模块和所述内存归还模块被设为操作系统最高进程优先级。
一种内存共享装置,用于多核心的非一致内存访问中,包括:
内存信息收集及处理模块,用于收集其他节点发送来的远端内存空闲信息并从中找出有空闲内存的节点;
内存申请模块,用于向有空闲内存的节点发送内存申请信息来申请使用远端内存;
建立远端内存动态管理结构的模块,用于对从其他节点申请来的远端内存建立动态管理;
通信模块,与所述内存信息收集及处理模块、所述内存申请模块和所述建立远端内存动态管理的模块相连接,用于节点之间的通信。
较佳地,还包括:内存归还模块,用于向其他节点归还使用完的内存;所述内存归还模块与所述通信模块连接。
较佳地,还包括:
内存信息广播模块,用于向其他节点广播本地内存空闲信息;
内存分配模块,用于在接到远端节点的内存申请信息时,将本地空闲内存分配给远端节点使用,并更新本地的内存空闲信息;
所述内存信息广播模块和所述内存分配模块与所述通信模块连接。
较佳地,所述内存信息收集及处理模块,还用于从有空闲内存的节点中找出空闲内存最多的节点;
所述内存申请模块,用于向空闲内存最多的节点发送内存申请信息来申请使用远端内存。
较佳地,所述内存申请信息中包含申请的内存数量,所述申请的内存数量大于本地实际需要的内存数量。
较佳地,所述内存共享装置还包括内存回收模块,用于发送内存回收信息并接收其他节点归还的内存。
较佳地,所述内存归还模块还设定有一个预定时间,用于本地节点在使用完远端内存后,如果在所述预定时间内接收到原来拥有所述远端内存的节点发来的内存回收信息,则所述内存归还模块归还所述远端内存;否则,所述内存归还模块延迟所述预定时间后再归还所述远端内存。
较佳地,所述内存申请模块和所述内存归还模块被设为操作系统最高进程优先级。
一种内存共享方法,用于多核心的非一致内存访问中,包括如下步骤:
步骤S1,当前节点的内存不足时,向其他节点发出内存不足信息,收集其他节点中有空闲内存的节点信息,然后向所述有空闲内存的节点发出内存申请信息,请求使用远端内存;
步骤S2,所述有空闲内存的节点在收到所述内存申请信息后为当前节点分配远端内存并让当前节点动态管理并独占使用所述远端内存。
较佳地,所述内存共享方法还包括:
步骤S3,所述当前节点使用完所述远端内存后,归还所述远端内存。
较佳地,所述内存共享方法还包括:
步骤S4,原来拥有远端内存的节点对当前节点归还的内存进行回收。
较佳地,在步骤S1中,具体包括如下步骤:
步骤S11,当前节点的进程发生内存不足时,先在本地内存区里寻找空闲内存,若找到空闲内存,则使用该空闲内存;若没有找到,则进入步骤S12;
步骤S12,在分配给其他节点的内存区中寻找空闲内存,若找到,则发送内存回收信息并将该空闲内存收回;若没有找到,则进入步骤S13;
步骤S13,当前节点向其他节点发出内存不足的信息,收集其他节点中有空闲内存的节点信息,然后向所述有空闲内存的节点发出内存申请信息,请求使用远端内存。
较佳地,所述步骤S13具体包括:
步骤S131,当前节点向其他节点发出内存不足的信息,当其他节点收到当前节点发出的内存不足信息时,其他节点向当前节点发送内存空闲消息;
步骤S132,当前节点收集其他节点的内存空闲信息,并选择出空闲内存最多的节点;
步骤S133,当前节点向所述空闲内存最多的节点发送内存申请消息来申请使用远端内存;
并且包括所述步骤S2中,所述空闲内存最多的节点为当前节点分配远端内存,让当前节点动态管理并独占使用所述远端内存。
较佳地,在步骤S133中,所述内存申请消息包含申请的内存数量,所述申请的内存数量大于所述当前节点实际需要的内存数量。
较佳地,所述步骤S3中,在当前节点使用完所述远端内存后,还包括一个延迟归还步骤:如果在一个预定时间内接收到原来拥有所述远端内存的节点发来的内存回收信息,则当前节点归还所述远端内存;否则,当前节点延迟所述预定时间后再归还所述远端内存。
较佳地,将执行步骤S133的进程设为系统最高进程优先级。
较佳地,将执行步骤S3的进程设为系统最高进程优先级。
本发明产生的有益效果是:
(1)在对用户透明的情况下,通过借用远端空闲内存,以达到整个系统的负载平衡,即应用程序无需作任何修改,且应用程序并不知道也无需知道当前所使用的内存是本地内存还是远端内存,除了访问速度的差异,并无任何实质区别。
(2)本发明是基于一种租赁关系的动态共享,即内存客户端和内存服务器端的关系是内存租赁的关系,当内存服务器的某块内存被借给内存客户端以后,它就被该内存客户端独自占有,服务器端和其他客户端都不得使用该段内存,直至该段内存使用完后,才可由服务器分配给其他客户端,从而提高内存资源的利用率。
(3)本发明的内存租借是分布式的。每个节点既可以作为内存服务器,又可以作为内存客户端,且每个服务器均使用完全相同的算法完成远端内存的分配及定位。同时,由于每个节点都可以作为内存服务器,那么即使某个节点出现故障,整个系统也会正常工作,提高了整个系统的可靠性。
(4)本发明的内存租赁的实时性。在内存紧张时,并在进行任务调度时,内存服务器优先调度以缓解内存使用压力。
(5)本发明采用了动态内存预分配技术和延迟归还技术等优化技术,提高本内存租赁系统的性能。
附图说明
图1为本发明一个实施例的内存共享系统和装置示意图;
图2为本发明一个实施例的内存共享方法流程图。
图3为图2中步骤S1的具体步骤;
图4为图3中步骤S13的具体步骤。
具体实施方式
下面结合附图与具体实施方式对本发明作进一步详细描述。
本发明是基于多核心的非一致内存访问平台,提出一种对用户透明的基于租借的多个处理器核或者多个处理器间内存共享系统及装置和方法。
本发明的内存共享的系统,包括具有至少一个处理器核和/或至少一个处理器的多个节点(Node)。作为一种可实施方式,如图1所示,图中仅表示出非一致内存访问(NUMA)中的两个节点,标号100表示节点i,标号200表示另一个节点j,两个节点的操作系统上都采用了本发明的内存共享装置10,在图中的节点j中的内存共享装置没有完全示出。
节点100上还有应用程序101和操作系统的换页部件102。其中,该操作系统的换页部件102用于向内存共享装置申请空闲内存,用于提供给上层空闲的物理内存页面;
采用本发明的内存共享装置,应用程序并不知道当前访问的是本地内存还是远端内存。
如图1所示,节点100的本地内存可以自由分配,对于节点100而言,处于节点200上的内存是远端内存,节点100支配远端内存需要与节点200协商后才可分配,在这种情况下,节点100是内存客户端,节点200是内存服务器。节点之间是相对的,对于节点200而言,位于节点100上的内存是远端内存。
本发明的内存共享装置10,其基于多核心的非一致内存访问平台,包括:
通信模块17,用于节点操作系统间通信,该通信模块17可以采用本领域的常规技术来实现。
通信模块17与下述内存信息收集及处理模块12、所述内存申请模块13和所述建立远端内存动态管理结构的模块14相连接,用于节点之间的通信。
内存信息收集及处理模块12,用于收集外部节点发送来的远端内存空闲信息并从中找出有空闲内存的节点。
较佳地,所述内存信息收集及处理模块12从有空闲内存的节点中找出空闲内存最多的节点。
内存申请模块13,用于向所述有空闲内存的节点发送内存申请消息来申请使用远端内存。
较佳地,内存申请模块13向所述空闲内存最多的节点发送内存申请消息来申请使用远端内存。
较佳地,所述内存申请消息中含有要申请的内存数量的信息,所述要申请的内存数量大于当前节点实际需要的内存数量,这可以称作内存页面预分配技术,采用该技术能够一次获得多个远端内存页面,从而隐藏内存租赁的时间开销,并且能够在节点物理内存资源极度紧缺时加速页面的申请过程,使得系统的性能得到一定的优化。
较佳地,所述内存申请模块被设为操作系统最高进程优先级,使得系统在内存紧缺时能及时地获得远端内存以缓解内存压力。
远端内存动态管理模块14,用于对从其他节点申请来的远端内存动态的建立管理结构;
较佳地,所述内存共享装置还包括内存回收模块18,用于在本地节点内存不足时发送内存回收信息,和接收其他节点归还的内存。
较佳地,所述内存共享装置还包括内存归还模块15,用于向其他节点归还使用完的内存;所述内存归还模块15与所述通信模块17连接。
较佳地,所述内存归还模块15还设定有一个预定时间,用于本地节点在使用完远端内存后,如果在所述预定时间内接收到原来拥有所述远端内存的节点发来的内存回收信息,则所述内存归还模块归还所述远端内存;否则,所述内存归还模块15延迟所述预定时间后再归还所述远端内存。这可以称作延迟归还技术。
在获取远程内存的过程中需要花费一定的时间开销,可以维护一个远端内存池,即每次使用完远端内存后先归还到内存池中,以备下一次使用或者提供给其他进程使用。如果在一段预定时间范围内没有进程来使用这段远程内存,再将其归还,除非在这段时间内,原来拥有这段远端内存的节点发出内存归还消息。这种技术减少了内存申请的次数,所以减少了通信开销。
所述预定时间是由技术人员预先设置好的,一般是通过实验的方法使内存共享的性能达到所需要的状况来确定该预定时间的大小。
较佳地,所述内存归还模块15也被设为操作系统最高进程优先级,使得远端节点在内存紧缺时能及时地收回它租借出去的远端内存以缓解内存压力。
较佳地,所述内存共享装置还包括:内存信息广播模块11,用于向其他节点广播内存状态信息;和内存分配模块16,用于将本地空闲内存分配给远地节点使用,并更新本地的内存空闲信息;所述内存信息广播模块11和所述内存分配模块16与所述通信模块连接。
如图2所示为本发明的内存共享方法的流程图,包括如下步骤:
步骤S1,当前节点的内存不足时,向其他节点发出内存不足信息,收集其他节点中有空闲内存的节点信息,然后向所述有空闲内存的节点发出内存申请信息,请求使用远端内存。
较佳地,如图3所示,在步骤S1中,具体包括如下步骤:
步骤S11,当前节点的进程发生内存不足时,先在本地内存区里寻找空闲内存,若找到空闲内存,则使用该空闲内存;若没有找到,则进入步骤S12;
步骤S12,在分配给其他节点的内存区中寻找空闲内存,若找到,则发送内存回收信息并将该空闲内存收回;若没有找到,则进入步骤S13;
步骤S13,当前节点向其他节点发出内存不足的信息,收集其他节点中有空闲内存的节点信息,然后向所述有空闲内存的节点发出内存申请信息,请求使用远端内存。
较佳地,如图4所示,所述步骤S13具体包括:
步骤S131,当前节点向其他节点发出内存不足的信息,当其他节点收到当前节点发出的内存不足信息时,其他节点向当前节点发送内存空闲消息;
步骤S132,当前节点收集其他节点的内存空闲信息,并选择出空闲内存最多的节点;
步骤S133,当前节点向所述空闲内存最多的节点发送内存申请消息来申请使用远端内存;
较佳地,在步骤S133中,所述内存申请消息包含申请的内存数量,所述申请的内存数量大于所述当前节点实际需要的内存数量。
较佳地,将执行步骤S133的进程设为系统最高进程优先级。这样做的好处是使得系统在内存紧缺时能及时地申请到远端内存以缓解内存压力。
步骤S2,所述有空闲内存的节点在收到所述内存申请信息后为当前节点分配远端内存并让当前节点动态管理并独占使用所述远端内存。
较佳地,所述步骤S2中,所述空闲内存最多的节点为当前节点分配远端内存,让当前节点动态管理并独占使用所述远端内存。
较佳地,所述的内存共享方法,还包括:步骤S3,所述当前节点使用完所述远端内存后,归还所述远端内存。
较佳地,所述步骤S3中,在当前节点使用完所述远端内存后,还包括一个延迟归还步骤,即如果在一个预定时间内接收到原来拥有所述远端内存的节点发来的内存回收信息,则当前节点归还所述远端内存;否则,当前节点延迟所述预定时间后再归还所述远端内存。这样做的好处是:在该预定时间内,该远端内存能够被下一次使用或者提供给其他进程适用。所述预定时间是由技术人员预先设置好的,一般是通过实验的方法使内存共享的性能达到所需要的状况来确定该预定时间的大小。
较佳地,将执行步骤S3的进程也设为系统最高进程优先级。这样做的好处是使得远端节点在内存紧缺时能及时地收回它租借出去的远端内存以缓解内存压力。
较佳地,所述的内存共享方法,还包括:步骤S4,原来拥有远端内存的节点对当前节点归还的内存进行回收。
按照所述的内存共享方法,下面以在Linux系统中一个内存申请的例子来具体说明本发明的分布式内存租借的内存共享方法工作流程:
步骤(1)当节点j上的某个进程发生缺页中断时,缺页中断处理函数先在本地内存区里寻找空闲内存页面,若找到,则直接返回系统上层一个空闲页面;若失败则在分配给其他节点的内存区中寻找空闲内存页面,若找到,则将该空闲内存页面收回并返回上层该空闲页面;若没有找到,则向其他节点发出内存不足的消息;
步骤(2)其他节点向当前节点j发送内存状态消息;
步骤(3)当前节点j获取其他节点的内存空闲信息,并选择出空闲内存最多的节点i,向其内存服务器发送内存申请的消息;
步骤(4)节点i收到来自节点j的消息,解析消息内容,若为内存请求消息,则进入步骤(5);
步骤(5)从节点i本地内存区分配节点j所申请大小的内存,并更新本地内存空闲信息;
步骤(6)若分配成功则向节点j发送分配成功的消息,并告知分配内存的起始地址以及大小,若分配失败则向节点j发送分配失败的消息;
步骤(7)节点j收到来自节点i的消息,若是分配失败的消息则选择另外一个节点重复以上过程,若是分配成功的消息,则进入步骤(8);
步骤(8)节点j建立对远端内存的动态管理结构,独占使用该远端内存,并更新本地内存空闲消息;
步骤(9)节点j的缺页中断处理函数从上述远端内存中获得所需的空闲内存返回给上层。
按照上面介绍的内存共享方法,下面再以在Linux系统中一个内存归还的例子来具体说明分布式内存租借的内存共享方法的工作流程:
步骤(a)节点j使用完(从节点i租借的)远端内存后,将该远端内存释放到位于本地的远端内存池中,暂不归还,并启动计时器计时,在计时器达到设定的阈值之前,节点j的进程可以重新使用该段远端内存,并重置计时器;
步骤(b)若在计时器达到设定阈值之前,节点i向节点j发出内存归还消息,则节点j立即把远端内存归还给节点i,释放本地动态建立的远端内存的管理结构,更新本地内存空闲信息,并跳到步骤(d);
步骤(c)若计时器达到设定的阈值,节点j就把远端内存归还给节点i,释放本地动态建立的远端内存的管理结构,更新本地内存空闲信息;
步骤(d)节点i重新建立已归还的内存的管理结构,独占使用该段内存,并更新本地内存空闲信息。
由以上的详细介绍,可见本发明是基于多核心NUMA平台,提出了一种对用户透明的基于租借的内存共享系统和装置及方法。本发明使得在不修改应用程序的条件下,高负载的节点可以借用低负载节点的空闲内存资源,以提高整个系统的吞吐率和并行性能;同时,内存租赁的分布式特征使得本发明具有良好的稳定性和可靠性;最后,本发明的实时性和动态内存预分配技术以及延迟归还技术等优化技术提高了本内存租赁系统的性能。
以上所述内容,仅为本发明具体的实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围内。

Claims (25)

1、一种内存共享系统,用于多核心的非一致内存访问中,包括多个节点,每个所述节点具有至少一个处理器;其特征在于,每个所述节点的操作系统包括内存共享装置,所述内存共享装置包括:
内存信息收集及处理模块,用于收集其他节点发送来的远端内存空闲信息并从中找出有空闲内存的节点;
内存申请模块,用于向有空闲内存的节点发送内存申请信息来申请使用远端内存;
建立远端内存动态管理结构的模块,用于对从其他节点申请来的远端内存建立动态管理;
通信模块,与所述内存信息收集及处理模块、所述内存申请模块和所述建立远端内存动态管理的模块相连接,用于节点之间的通信。
2、根据权利要求1所述的内存共享系统,其特征是,所述内存共享装置还包括:
内存归还模块,用于向其他节点归还使用完的内存;所述内存归还模块与所述通信模块连接。
3、根据权利要求2所述的内存共享系统,其特征是,所述内存共享装置还包括:
内存信息广播模块,用于向其他节点广播本地内存空闲信息;
内存分配模块,用于在接到远端节点的内存申请信息时,将本地空闲内存分配给远端节点使用,并更新本地的内存空闲信息;
所述内存信息广播模块和所述内存分配模块与所述通信模块连接。
4、根据权利要求1所述的内存共享系统,其特征是,所述内存信息收集及处理模块,还用于从有空闲内存的节点中找出空闲内存最多的节点;
所述内存申请模块,用于向空闲内存最多的节点发送内存申请信息来申请使用远端内存。
5、根据权利要求1所述的内存共享系统,其特征是,所述内存申请信息中包含申请的内存数量,所述申请的内存数量大于本地实际需要的内存数量。
6、根据权利要求2所述的内存共享系统,其特征是,所述内存共享装置还包括内存回收模块,用于发送内存回收信息并接收其他节点归还的内存。
7、根据权利要求6所述的内存共享系统,其特征是,所述内存归还模块还设定有一个预定时间,用于本地节点在使用完远端内存后,如果在所述预定时间内接收到原来拥有所述远端内存的节点发来的内存回收信息,则所述内存归还模块归还所述远端内存;否则,所述内存归还模块延迟所述预定时间后再归还所述远端内存。
8、根据权利要求3所述的内存共享系统,其特征是,所述内存申请模块和所述内存归还模块被设为操作系统最高进程优先级。
9、一种内存共享装置,处于具有至少一个处理器的节点的操作系统中,用于多核心的非一致内存访问中,其特征是,包括:
内存信息收集及处理模块,用于收集所述内存共享装置所处节点外的其他节点发送来的远端内存空闲信息并从中找出有空闲内存的节点;
内存申请模块,用于向有空闲内存的节点发送内存申请信息来申请使用远端内存;
建立远端内存动态管理结构的模块,用于对从其他节点申请来的远端内存建立动态管理;
通信模块,与所述内存信息收集及处理模块、所述内存申请模块和所述建立远端内存动态管理的模块相连接,用于节点之间的通信。
10、根据权利要求9所述的内存共享装置,其特征是,还包括:内存归还模块,用于向其他节点归还使用完的内存;所述内存归还模块与所述通信模块连接。
11、根据权利要求10所述的内存共享装置,其特征是,还包括:
内存信息广播模块,用于向其他节点广播本地内存空闲信息;
内存分配模块,用于在接到远端节点的内存申请信息时,将本地空闲内存分配给远端节点使用,并更新本地的内存空闲信息;
所述内存信息广播模块和所述内存分配模块与所述通信模块连接。
12、根据权利要求9所述的内存共享装置,其特征是,所述内存信息收集及处理模块,还用于从有空闲内存的节点中找出空闲内存最多的节点;
所述内存申请模块,用于向空闲内存最多的节点发送内存申请信息来申请使用远端内存。
13、根据权利要求9所述的内存共享装置,其特征是,所述内存申请信息中包含申请的内存数量,所述申请的内存数量大于本地实际需要的内存数量。
14、根据权利要求10所述的内存共享装置,其特征是,所述内存共享装置还包括内存回收模块,用于发送内存回收信息并接收其他节点归还的内存。
15、根据权利要求14所述的内存共享装置,其特征是,所述内存归还模块还设定有一个预定时间,用于本地节点在使用完远端内存后,如果在所述预定时间内接收到原来拥有所述远端内存的节点发来的内存回收信息,则所述内存归还模块归还所述远端内存;否则,所述内存归还模块延迟所述预定时间后再归还所述远端内存。
16、根据权利要求11所述的内存共享装置,其特征是,所述内存申请模块和所述内存归还模块被设为操作系统最高进程优先级。
17、一种内存共享方法,用于多核心的非一致内存访问中,其特征是,包括如下步骤:
步骤S1,当前节点的内存不足时,向其他节点发出内存不足信息,收集其他节点中有空闲内存的节点信息,然后向所述有空闲内存的节点发出内存申请信息,请求使用远端内存;
步骤S2,所述有空闲内存的节点在收到所述内存申请信息后为当前节点分配远端内存并让当前节点动态管理并独占使用所述远端内存。
18、根据权利要求17所述的内存共享方法,其特征在于,还包括:
步骤S3,所述当前节点使用完所述远端内存后,归还所述远端内存。
19、根据权利要求18所述的内存共享方法,其特征在于,还包括:
步骤S4,原来拥有远端内存的节点对当前节点归还的内存进行回收。
20、根据权利要求17所述的内存共享方法,其特征在于,在步骤S1中,具体包括如下步骤:
步骤S11,当前节点的进程发生内存不足时,先在本地内存区里寻找空闲内存,若找到空闲内存,则使用该空闲内存;若没有找到,则进入步骤S12;
步骤S12,在分配给其他节点的所述当前节点的本地内存区中寻找空闲内存,若找到,则发送内存回收信息并将该空闲内存收回;若没有找到,则进入步骤S13;
步骤S13,当前节点向其他节点发出内存不足的信息,收集其他节点中有空闲内存的节点信息,然后向所述有空闲内存的节点发出内存申请信息,请求使用远端内存。
21、根据权利要求20所述的内存共享方法,其特征是,所述步骤S13具体包括:
步骤S131,当前节点向其他节点发出内存不足的信息,当其他节点收到当前节点发出的内存不足信息时,其他节点向当前节点发送内存空闲消息;
步骤S132,当前节点收集其他节点的内存空闲信息,并选择出空闲内存最多的节点;
步骤S133,当前节点向所述空闲内存最多的节点发送内存申请消息来申请使用远端内存;
所述步骤S2,所述空闲内存最多的节点为当前节点分配远端内存,让当前节点动态管理并独占使用所述远端内存。
22、根据权利要求21所述的内存共享方法,其特征是,在步骤S133中,所述内存申请消息包含申请的内存数量,所述申请的内存数量大于所述当前节点实际需要的内存数量。
23、根据权利要求18所述的内存共享方法,其特征是,所述步骤S3中,在当前节点使用完所述远端内存后,还包括一个延迟归还步骤:
如果在一个预定时间内接收到原来拥有所述远端内存的节点发来的内存回收信息,则当前节点归还所述远端内存;否则,当前节点延迟所述预定时间后再归还所述远端内存。
24、根据权利要求21所述的内存共享方法,其特征是,将执行步骤S133的进程设为系统最高进程优先级。
25、根据权利要求18或23所述的内存共享方法,其特征是,将执行步骤S3的进程设为系统最高进程优先级。
CNB2007101763522A 2007-10-25 2007-10-25 一种内存共享的系统和装置及方法 Active CN100489815C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007101763522A CN100489815C (zh) 2007-10-25 2007-10-25 一种内存共享的系统和装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007101763522A CN100489815C (zh) 2007-10-25 2007-10-25 一种内存共享的系统和装置及方法

Publications (2)

Publication Number Publication Date
CN101158927A CN101158927A (zh) 2008-04-09
CN100489815C true CN100489815C (zh) 2009-05-20

Family

ID=39307031

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007101763522A Active CN100489815C (zh) 2007-10-25 2007-10-25 一种内存共享的系统和装置及方法

Country Status (1)

Country Link
CN (1) CN100489815C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012113224A1 (zh) * 2011-02-21 2012-08-30 华为技术有限公司 多节点计算系统下选择共享内存所在节点的方法和装置

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9529636B2 (en) * 2009-03-26 2016-12-27 Microsoft Technology Licensing, Llc System and method for adjusting guest memory allocation based on memory pressure in virtual NUMA nodes of a virtual machine
US9535767B2 (en) 2009-03-26 2017-01-03 Microsoft Technology Licensing, Llc Instantiating a virtual machine with a virtual non-uniform memory architecture
CN101594309B (zh) * 2009-06-30 2011-06-08 华为技术有限公司 集群系统中内存资源的管理方法、设备及网络系统
US8032682B2 (en) * 2009-07-13 2011-10-04 Oracle America, Inc. System and method for device resource allocation and re-balance
CN102231135A (zh) * 2011-06-02 2011-11-02 广东威创视讯科技股份有限公司 一种多屏显示系统内存均衡方法及装置
CN102725746B (zh) * 2011-07-20 2015-01-21 华为技术有限公司 对分布式计算机系统中内存的管理方法和装置
WO2013052068A1 (en) * 2011-10-07 2013-04-11 Intel Corporation Mechanism for employing and facilitating dynamic and remote memory collaboration at computing devices
US8560757B2 (en) * 2011-10-25 2013-10-15 Cavium, Inc. System and method to reduce memory access latencies using selective replication across multiple memory ports
US8850125B2 (en) 2011-10-25 2014-09-30 Cavium, Inc. System and method to provide non-coherent access to a coherent memory system
WO2012163024A1 (zh) * 2011-10-27 2012-12-06 华为技术有限公司 针对多步长非一致性内存访问numa架构的内存管理方法及装置
CN103152394B (zh) 2013-02-06 2016-09-28 华为技术有限公司 数据存取系统、内存共享设备及数据读取方法
CN103136110B (zh) 2013-02-18 2016-03-30 华为技术有限公司 内存管理方法、内存管理装置及numa系统
CN104166597B (zh) * 2013-05-17 2018-07-03 华为技术有限公司 一种分配远程内存的方法及装置
CN104166596B (zh) * 2013-05-17 2018-06-26 华为技术有限公司 一种内存分配方法及节点
CN103365784B (zh) * 2013-06-27 2016-03-30 华为技术有限公司 内存回收与分配的方法及装置
CN103607428B (zh) * 2013-10-30 2017-11-17 华为技术有限公司 一种访问共享内存的方法和装置
CN104050043A (zh) * 2014-06-17 2014-09-17 华为技术有限公司 基于共享缓存感知的虚拟机调度方法和装置
CN104102590A (zh) * 2014-07-22 2014-10-15 浪潮(北京)电子信息产业有限公司 一种异构内存管理方法及装置
CN104484250B (zh) * 2014-11-28 2018-04-27 英业达科技有限公司 快速通道互联总线的压力测试方法和压力测试装置
CN105721388A (zh) * 2014-11-30 2016-06-29 中国科学院沈阳自动化研究所 不稳定网络环境下的mes客户端数据缓存方法及系统
CN104572483B (zh) * 2015-01-04 2018-01-16 华为技术有限公司 动态内存管理装置及方法
CN105224246B (zh) * 2015-09-25 2018-11-09 联想(北京)有限公司 一种信息以及内存配置方法和装置
CN109918217A (zh) * 2019-03-21 2019-06-21 联想(北京)有限公司 一种控制方法及终端
CN110245135B (zh) * 2019-05-05 2021-05-18 华中科技大学 一种基于numa架构的大规模流式图数据更新方法
CN111212141A (zh) * 2020-01-02 2020-05-29 中国科学院计算技术研究所 一种共享存储系统
CN111756802B (zh) * 2020-05-26 2021-09-03 深圳大学 一种数据流任务在numa平台上的调度方法及系统
CN115480908A (zh) * 2021-06-15 2022-12-16 华为技术有限公司 一种内存池化方法以及相关装置
CN116560826A (zh) * 2022-01-30 2023-08-08 华为技术有限公司 内存管理方法,系统以及相关装置
CN117851021A (zh) * 2022-09-30 2024-04-09 成都华为技术有限公司 分布式内存系统、分布式内存管理方法、装置及相关设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5237673A (en) * 1991-03-20 1993-08-17 Digital Equipment Corporation Memory management method for coupled memory multiprocessor systems
CN1263312A (zh) * 1999-02-10 2000-08-16 国际商业机器公司 具有共享干预支持的非均匀存储器访问数据处理系统
CN1347034A (zh) * 2000-09-25 2002-05-01 汤姆森许可贸易公司 数据内存管理系统和方法以及相关多处理器网络
US20030009639A1 (en) * 2001-06-21 2003-01-09 International Business Machines Corp. Non-uniform memory access (NUMA) data processing system that provides precise notification of remote deallocation of modified data
US20060064518A1 (en) * 2004-09-23 2006-03-23 International Business Machines Corporation Method and system for managing cache injection in a multiprocessor system
US20070233967A1 (en) * 2006-03-29 2007-10-04 Dell Products L.P. Optimized memory allocator for a multiprocessor computer system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5237673A (en) * 1991-03-20 1993-08-17 Digital Equipment Corporation Memory management method for coupled memory multiprocessor systems
CN1263312A (zh) * 1999-02-10 2000-08-16 国际商业机器公司 具有共享干预支持的非均匀存储器访问数据处理系统
CN1347034A (zh) * 2000-09-25 2002-05-01 汤姆森许可贸易公司 数据内存管理系统和方法以及相关多处理器网络
US20030009639A1 (en) * 2001-06-21 2003-01-09 International Business Machines Corp. Non-uniform memory access (NUMA) data processing system that provides precise notification of remote deallocation of modified data
US20060064518A1 (en) * 2004-09-23 2006-03-23 International Business Machines Corporation Method and system for managing cache injection in a multiprocessor system
US20070233967A1 (en) * 2006-03-29 2007-10-04 Dell Products L.P. Optimized memory allocator for a multiprocessor computer system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012113224A1 (zh) * 2011-02-21 2012-08-30 华为技术有限公司 多节点计算系统下选择共享内存所在节点的方法和装置

Also Published As

Publication number Publication date
CN101158927A (zh) 2008-04-09

Similar Documents

Publication Publication Date Title
CN100489815C (zh) 一种内存共享的系统和装置及方法
TWI307470B (en) Dynamic processor redistribution between partitions in a computing system
CN110096336B (zh) 数据监控方法、装置、设备和介质
US8234652B2 (en) Performing setup operations for receiving different amounts of data while processors are performing message passing interface tasks
CN100489789C (zh) 响应分区工作负荷动态再分区计算机系统的装置和方法
US8127300B2 (en) Hardware based dynamic load balancing of message passing interface tasks
CN1138207C (zh) 使用远程java对象分配程序的方法和装置
US8108876B2 (en) Modifying an operation of one or more processors executing message passing interface tasks
EP0798639B1 (en) Process assignment in a multiprocessor system
US8286178B2 (en) Allocation and regulation of CPU entitlement for virtual processors in logical partitioned platform
CN101291245B (zh) 一种分布式处理方法、系统及其装置
US20050071843A1 (en) Topology aware scheduling for a multiprocessor system
CA2270863C (en) Method for assigning tasks, data processing system, client data processing nodes and machine-readable storage medium
KR20000036178A (ko) 금전비용을 최적화하는 로드 분산 제어기
CN1664803A (zh) 用于使能多节点计算机系统中操作系统资源的分配的机制
CN111092921B (zh) 数据采集方法、装置及存储介质
CN108881512A (zh) Ctdb的虚拟ip均衡分配方法、装置、设备及介质
CN103366022B (zh) 信息处理系统及其处理方法
CN112202918A (zh) 长连接通信的负载调度方法、装置、设备及存储介质
CN114389955B (zh) 嵌入式平台异构资源池化管理方法
CN102122268A (zh) 一种虚拟机内存分配访问方法、装置和系统
CN109005071B (zh) 一种决策部署方法和调度设备
KR20130028554A (ko) 메시지 버스를 이용한 대용량 분산 처리 장치 및 그 방법
CN113051063A (zh) 分布式任务的任务调度方法、装置及电子设备
WO2012107988A1 (ja) メモリ管理プログラム、メモリ管理方法及び情報処理装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: HUAWEI TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: INSTITUTE OF COMPUTING TECHNOLOGY, CHINESE ACADEMY OF SCIENCES

Effective date: 20130530

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100080 HAIDIAN, BEIJING TO: 518129 SHENZHEN, GUANGDONG PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20130530

Address after: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee after: Huawei Technologies Co., Ltd.

Address before: 100080 Haidian District, Zhongguancun Academy of Sciences, South Road, No. 6, No.

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences