WO2012113224A1 - 多节点计算系统下选择共享内存所在节点的方法和装置 - Google Patents

多节点计算系统下选择共享内存所在节点的方法和装置 Download PDF

Info

Publication number
WO2012113224A1
WO2012113224A1 PCT/CN2011/079464 CN2011079464W WO2012113224A1 WO 2012113224 A1 WO2012113224 A1 WO 2012113224A1 CN 2011079464 W CN2011079464 W CN 2011079464W WO 2012113224 A1 WO2012113224 A1 WO 2012113224A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
memory
cpu
sum
affinity
Prior art date
Application number
PCT/CN2011/079464
Other languages
English (en)
French (fr)
Inventor
李俊
章晓峰
Original Assignee
华为技术有限公司
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 华为技术有限公司 filed Critical 华为技术有限公司
Priority to US13/340,193 priority Critical patent/US20120215990A1/en
Publication of WO2012113224A1 publication Critical patent/WO2012113224A1/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Definitions

  • the parameter is obtained by using an ear block for obtaining a parameter determining a sum of memory affinity weights between the CPUs of the central processing unit and the memory on any one of the nodes;
  • the parameter obtaining module 201 is configured to obtain a parameter for determining a sum of memory affinity weights between the CPUs of the central processing unit and the memory of any one of the nodes, where the parameters include a weight of the memory node pair of the node pair where each CPU is located. The frequency at which each CPU accesses the memory on any one of the nodes;

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Description

多节点计算系统下选择共享内存所在节点的方法和装置 本申请要求于 2011 年 02 月 21 日提交中国专利局、 申请号为 201110041474.7、 发明名称为 "多节点计算系统下选择共享内存所在节点的方 法和装置" 的中国专利申请的优先权, 其全部内容通过引用结合在本申请中。 技术领域
本发明实施例涉及通信领域,尤其涉及多节点计算系统下选择共享内存所 在节点的方法和装置。
背景技术
者计算与存储技术的不断发展,多个节点并存的计算系统(可以称为"多 节点计算系统" ) 已经越来越普及。 为了解决多节点计算系统中的中央处理器
( CPU , Central Processor Unit )在存取内存方面的瓶颈, 多节点计算系统出现 了非一致性内存访问(NUMA, Non-Uniform Memory Access )架构。在 NUMA 架构下, 每个应用程序可以运行在某一硬件节点上, 该节点的 CPU可以存取本 节点和其他节点上的内存区域,但在不同节点上的存取速度与效率不同, 这种 区别主要是由于每个节点上的 CPU与不同节点的内存具有不同的 "内存亲和 性" 。 所谓内存亲和性, 是指 NUMA架构下每个 CPU存取该 CPU所在节点或其 他节点上的内存的延迟大小。 延迟越小, 表明内存亲和性越高。
现有技术提供的 NUMA架构考虑了 CPU和内存对的亲和性问题, 即, 获取 CPU和内存(该内存不与其他节点上的 CPU共享)之间的总线连接速度和跳数 ( hop ) ; 然后使用总线连接速度和跳数作为权值来计算 [cpu, memory, val] , 这里, cpu, memory表示一对 CPU和 memory (称为 "CPU和内存对" ) , val 指 cpu和 memory之间的内存亲和性的值, 筒称 "内存亲和性权值" , 而 [cpu, memory, val]就表示 cpu和 memory构成的 CPU和内存对之间的内存亲和性权值 为 val, 不同的 [cpu, memory, val]构成了 CPU和内存对亲和性表; 当一个应用程 序需要申请内存时, 首先查询该 CPU和内存对亲和性表, 得到一个内存亲和性 最高的节点, 在该节点上开辟一块内存空间。
上述现有技术提供的 NUMA架构只是解决了没有共享内存时的内存亲和性 问题, 在多个 CPU需要共享内存时, 如何在多个节点中选择一个最合适的节点 作为分配共享内存的节点,从而最优化内存总体存取效率,使在 NUMA架构下的 多个节点存取该共享内存时的内存亲和性最高。 然而,现有的 NUMA架构并没有 相应的解决方案。
发明内容
本发明实施例提供一种多节点计算系统下选择共享内存所在节点的方法 和装置, 以将共享内存分配到最优节点上, 而提高多节点计算系统的总体存取 性能。
本发明实施例提供一种多节点计算系统下选择共享内存所在节点的方法, 包括:获取确定各中央处理器 CPU与任意一个节点上内存之间的内存亲和性权 值之和的参数;
根据所述参数计算所述各 CPU与任意一个节点上内存之间的内存亲和性 权值之和;
将其中计算所得内存亲和性权值之和最小时的节点选择为各 CPU的共享 内存所在节点。
本发明实施例提供一种多节点计算系统下选择共享内存所在节点的装置, 包括:
参数获耳 ^莫块,用于获取确定各中央处理器 CPU与任意一个节点上内存之 间的内存亲和性权值之和的参数;
求和模块,用于根据所述参数获取模块获取的参数计算所述各 CPU与任意 一个节点上内存之间的内存亲和性权值之和
节点选择模块,用于将所述求和模块计算所得内存亲和性权值之和最小时 的节点选择为各 CPU的共享内存所在节点。
从上述本发明实施例可知,本发明提供的方法不仅考虑到多节点计算系统 下多个 CPU需要共享内存这一情形, 而且根据确定访问共享内存的各中央处 理器 CPU与任意一个节点上内存之间的内存亲和性权值之和的参数, 计算出 一个使这些内存亲和性权值之和最小的节点, 并将其选择为共享内存所在节 点。 由于访问共享内存的各中央处理器 CPU与这一节点上内存之间的内存亲 和性权值之和最小, 因此, 各节点上的中央处理器 CPU访问这一节点上的共 享内存付出的代价最小, 在需要访问共享内存的场景下系统的存取效率最高, 从而提高了系统的总体存取性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对现有技术或实施例 描述中所需要使用的附图作筒单地介绍,显而易见地, 下面描述中的附图仅仅 是本发明的一些实施例,对于本领域技术人员来讲,还可以如这些附图获得其 他的附图。
图 1 是本发明一实施例提供的多节点计算系统下选择共享内存所在节点 的方法流程示意图;
图 2是本发明一实施例提供的多节点计算系统下选择共享内存所在节点 的装置逻辑结构示意图;
图 3 是本发明另一实施例提供的多节点计算系统下选择共享内存所在节 点的装置逻辑结构示意图;
图 4是本发明另一实施例提供的多节点计算系统下选择共享内存所在节 点的装置逻辑结构示意图;
图 5 是本发明另一实施例提供的多节点计算系统下选择共享内存所在节 点的装置逻辑结构示意图;
图 6是本发明另一实施例提供的多节点计算系统下选择共享内存所在节 点的装置逻辑结构示意图。
具体实施方式
本发明实施例提供提供一种多节点计算系统下选择共享内存所在节点的 方法和装置, 以将共享内存分配到最优节点上, 而提高多节点计算系统的总体 存取性能。
以下以 NUM A架构下的多节点计算系统为例说明本发明提供的多节点计 算系统下选择共享内存所在节点的方法, 本领域技术人员能够理解, 本发明实 施例提供的方法不仅适用于 NUMA架构下的多节点计算系统,但凡有多个节点 共享内存的场景也可以使用本发明实施例提供的方法。
请参阅附图 1 , 是本发明实施例提供的多节点计算系统下选择共享内存所 在节点的方法流程示意图, 主要包括步骤:
S101 ,获取确定各中央处理器 CPU与任意一个节点上内存之间的内存亲和 性权值之和的参数。
在本发明实施例中,确定各 CPU与任意一个节点上内存之间的内存亲和性 权值之和的参数包括各 CPU所在节点对的内存节点对权值和所述各 CPU访问 所述任意一个节点上内存的频度,而各 CPU可以是 NUMA架构下的多节点计算 系统中某个节点上的 CPU,这些 CPU由于某种原因都需要存取某个节点上的数 据, 即访问该节点上的共享内存。 需要说明的是, 访问共享内存的 CPU也可以 认为是动用 CPU资源去访问某个共享内存, 例如,运行于某个节点的应用程序 去访问某个共享内存,也就是动用该应用程序节点上的 CPU资源去访问某个共 享内存; 又如, 多个进程或者进程的多个部分都需要访问某个共享内存, 不同 的进程或进程的多个部分可能运行在不同的节点,当这些进程启动并开始访问 某个共享内存时,也就是动用了不同进程或进程的多个部分的节点上的 CPU资 源去访问某个共享内存。
S102,根据步骤 S101获取的参数计算各 CPU与任意一个节点上内存之间的 内存亲和性权值之和。
在本发明实施例中,内存亲和性权值的概念与现有技术的内存亲和性权值 的概念基本相同, 都是指 CPU和内存对之间的内存亲和性权值, 例如, 若访问 共享内存的各中央处理器 CPU用 CpiH , CpU2, . . . . . . , CpUm表示, 则访问共享内 存的各中央处理器 CPU与任意一个节点上内存之间的内存亲和性权值可以对 应表示为 [cpu , memory/ , vab] , [cpu2, memory2 , vab] , , [cpum , memorym , Valm]。 所不同的是, 本发明实施例的 CpiH、 CpU2 和 CpUm之间的关系是: 该 m个 CPU需要访问共享内存,而现有技术中没有考虑到共享内存的情况,即, 现有技术的 cpu、 cpu2 和 cpum这 m个 CPU访问的是各自需要访问的内存, 而不是共享内存。
假设由 Node。、 Node/和 Nodes 3个节点构成的多节点计算系统, 中央处理 器 CPU。、 CPU/和 CPU2所在节点对( Node。, Nodeo )、 ( Node/, Nodeo )和( Nodeo, Node2 ) 的内存节点对权值分别为 0、 10和 20, Nodeo, Node/和 Nodes上的中央 处理器 CPUo、 CPU/和 CPU2访问节点 NodeiU 内存的频度分别为 50%、 40%和 10%, 则计算各 CPU所在节点对的内存节点对权值与各 CPU访问节点上内存的 频度的乘积分别是 0 X 50%、 10 X 40%和 20 χ 10%, 这些乘积的和(使用 Sum表 示)为 Sum = 0 + 4 + 2 = 6; 中央处理器 CPU。、 CPU/和 CPU2所在节点对( Nodeo, Node )、 ( Node/, Node/ )和(Nodes, Node/ )的内存节点对权值分别为 10、 0 和 10, Nodeo, Node/和 Nodes上的中央处理器 CPUo、 CPU/和 CPU2访问节点 Node/ 上内存的频度分别为 30%、 50%和 20% , 则计算各 CPU所在节点对的内存节点 对权值与各 CPU访问节点上内存的频度的乘积分别是 10 X 30% , 0 X 50%和 10 20%, 这些乘积的和为 Sum = 3 + 0 + 2 = 5; 中央处理器 CPU。、 CPU/和 CPU2 所在节点对 ( Nodeo, Nodes )、 ( Node/, Nodes )和(Nodes, Nodes )的内存节 点对权值分别为 20、 10和0, Node。、 Node/和 Nodes上的中央处理器 CPU。、 CPU/ 和 CPU2访问节点 Nodes上内存的频度分别为 20%、 30%和 50% , 则根据计算各 CPU所在节点对的内存节点对权值与各 CPU访问节点上内存的频度的乘积分 别是 20 x 20%、 10 X 30%和 0 χ 50%, 这些乘积的和为 Sum = 4 + 3 + 0 = 7。
S103 , 将其中计算所得内存亲和性权值之和最小时的节点选择为各 CPU 的共享内存所在节点。
步骤 S102的举例中, 中央处理器 CPU。、 CPU/和 CPU2与节点 Node。上内存 之间的内存亲和性权值之和为 6 ,与节点 Node/上内存之间的内存亲和性权值之 和为 5 , 与节点 Nodes上内存之间的内存亲和性权值之和为 7, 显然, 中央处理 器 CPUo、 CPU/和 CPU2与节点 Node/上内存之间的内存亲和性权值之和最小, 因此, 选择节点 Node/为共享内存所在节点。
从上述本发明实施例可知,本发明提供的方法不仅考虑到多节点计算系统 下多个 CPU需要共享内存这一情形,而且根据确定各 CPU与任意一个节点上内 存之间的内存亲和性权值之和的参数,计算出一个使这些内存亲和性权值之和 最小的节点, 并将其选择为各 CPU的共享内存所在节点。 由于访问共享内存的 各 CPU与这一节点上内存之间的内存亲和性权值之和最小, 因此, 各节点上的 CPU访问这一节点上的共享内存付出的代价最小,在需要访问共享内存的场景 下系统的存取效率最高, 从而提高了系统的总体存取性能。
如前所述,确定各 CPU与任意一个节点上内存之间的内存亲和性权值之和 的参数之一是各中央处理器 CPU所在节点对的内存节点对权值。所谓每个节点 对的内存节点对权值是指每个节点对中一个节点上的 CPU与另一个节点上内 存之间的内存亲和性权值。 例如, 假设 cpu所在节点 Node//和 memory/所在节 点 Node/2是一个节点对(可使用 (Node//, Node/2 )表示), 则该节点对的内存 节点对权值使用 [cpin, memory/ , vab] 表示, 其中, val就是节点 Node//上的 cpu和节点 Node/2之间的内存亲和性权值。特别地,相对于 cpu所在节点 Node// 和其他节点 (例如, 上述实施例的节点 Node/2 ), 节点 Node//上的 cpu和节点 Node//上的内存之间的内存亲和性权值是最小的, 可以认为是 0, 表示一个基 准值。
具体实现时, 可以在多节点计算系统的每个节点中维护一块存储区域, 该 存储区域存储着该存储区域所在节点上的 CPU访问该节点的邻居节点上的内 存的存取延迟值; 进一步, 可以将这一存取延迟值通过量化手段转化为内存亲 和性权值, 以便于计算和存储。 例如, 某节点 Node/上的 CPU访问该节点的邻 居节点 Node2、 Nodw和 Node6上的内存的存取延迟值分别为 0.3、 0.5和 0.8 , 则 可以将 0.3、 0.5和 0.8同乘以 10, 使之转化为整数形式表示的内存亲和性权值 3、 5和 8, 从而便于存储和计算。
对于一个节点上的 CPU与该节点的非邻居节点上内存之间的内存亲和性 权值,可以根据该节点上的 CPU与该节点的邻居节点上内存之间的内存亲和性 权值来获取。 例如, 某节点 Node/上的 CPU与该节点的邻居节点 Nodes上内存之 间的内存亲和性权值为 3 ,而节点 Nodes上的 CPU与节点 Nodes的邻居节点 Nodes 上内存之间的内存亲和性权值为 5 , 若节点 Nodes是 Node/的非邻居节点, 则节 点 Node/上的 CPU与节点 Nodes上内存之间的内存亲和性权值可以是节点 Node/
CPU与节点 Nodes的邻居节点 Nodes上内存之间的内存亲和性权值 5两者的相 加, 即 3 + 5 , 结果为 8。
当每个节点上的 CPU与任意一个节点上内存之间的内存亲和性权值计算 出来之后, 可以形成如下表一所示的内存亲和性权值表。
节点 节点 0 节点 1 节点 2
( Nodeo ) ( Node/ ) ( Node2 ) ( Node" ) 节点 0 0 10 20 100 ( Nodeo )
节点 1 10 0 10 90
Figure imgf000009_0001
节点 2 20 10 0 80 ( Node2 ) 100 90 80 0
( Node" )
表一
在上述表一中,行与列的交叉处的值表示相应行的节点上的 CPU与相应列 的节点上内存之间或相应列的节点上的 CPU与相应行的节点上内存之间的内 存亲和性权值, 例如, 表一第 2行与第 3列交叉处的 10表示节点 1上的 CPU与节 点 0上内存之间或节点 0上的 CPU与节点 1上内存之间的内存亲和性权值为 10。 特别地, 表一中行列交叉处的值为 0的地方表示一个节点上的 CPU与本节点上 内存之间的内存亲和性权值, 例如, 表一第 3行与第 3列交叉处的 0表示节点 1 上的 CPU与节点 1上内存之间的内存亲和性权值为 0。 如前所述, 内存亲和性权 值为 0表示一个基准值。
仅仅将各中央处理器 CPU所在节点对的内存节点对权值作为确定访问共 享内存的各中央处理器 CPU与任意一个节点上内存之间的内存亲和性权值之 和的参数,还不足以确定各中央处理器 CPU与哪一个节点上内存之间的内存亲 和性权值之和最小, 原因在于, 虽然某个中央处理器 CPU所在节点对的内存节 点对权值比较小, 但该节点上的 CPU经常访问该节点对中另一个节点上的内 存,则也可能导致各中央处理器 CPU与该节点对中另一个节点上内存之间的内 存亲和性权值之和较大; 反之, 虽然某个中央处理器 CPU所在节点对的内存节 点对权值比较大,但该节点上的 CPU不是经常访问该节点对中另一个节点上的 内存,则也可能导致各中央处理器 CPU与该节点对中另一个节点上内存之间的 内存亲和性权值之和较小。
基于上述事实,作为本发明另一个实施例, 可以将多节点计算系统各中央 处理器 CPU访问任意一个节点上内存的频度作为确定访问共享内存的各中央 处理器 CPU与该任意一个节点上内存之间的内存亲和性权值之和的另一参数。 在本发明实施例中,可以统计每个节点对中一个节点上的 CPU访问任意一 个节点上内存的次数以及所述次数之和, 然后根据所述次数以及所述次数之 和, 求取所述次数与所述次数之和的比值, 这一比值即为各 CPU访问所述任意 一个节点上内存的频度。 例如, 节点对(Node//, Node/2 ) 中节点 Node//上的 CPU访问节点 Node/ 内存的次数为 30次, 节点对(Nodew , Node ) 中节点 中节点 Node 上的 CPU访问节点 Node/ 内存的次数为 45次,则比值 30/( 30 + 25
在确定了上述实施例中的两个参数后,可根据这些参数计算访问共享内存 的各中央处理器 CPU与任意一个节点上内存之间的内存亲和性权值之和,具体 方法包括:
计算各中央处理器 CPU所在节点对的内存节点对权值与各 CPU访问任意 一个节点上内存的频度的乘积, 然后求取这些乘积之和, 该乘积之和即为根据 参数计算出来的访问共享内存的各中央处理器 CPU与所述任意一个节点上内 存之间的内存亲和性权值之和。
例如, 假设由 Node Node/和 Nodes 3个节点构成的多节点计算系统, 则 由表一可知, 中央处理器 CPU。、 CPU/和 CPU2所在节点对 ( Node。, Nodeo ), ( Node/, Nodeo )和( Nodeo, Nodes ) 的内存节点对权值如下表二所示;
Figure imgf000011_0001
中央处理器 CPU。、 CPU/和 CPU2所在节点对(Node。, Node/ )、 ( Node/ , Node/ )和(Nodes, Node/ ) 的内存节点对权值如下表三所示;
Figure imgf000012_0001
表三
中央处理器 CPU。、 CPU/和 CPU2所在节点对(Node。, Nodes )、 ( Node/, Node2 )和(Nodes, Nodes ) 的内存节点对权值如下表四所示;
Figure imgf000012_0002
表四
又假设 Node。、 Node/和 Nodes上的中央处理器 CPUo、 CPU/和 CPU2访问节 点 Node。上内存的频度分别为 50%、 40%和 10%, 则根据表二, 计算各中央处理 器 CPU所在节点对的内存节点对权值与各 CPU访问节点上内存的频度的乘积 分别是 O x 50%、 10 X 40%和 20 X 10%, 这些乘积的和(使用 Sum表示) 为 Sum = 0 + 4 + 2 = 6;
假设 Nodeo、 Node/和 Nodes上的中央处理器 CPUo、 CPU/和 CPU2访问节点 Node/上内存的频度分别为 30%、 50%和 20%, 则根据表三, 计算各中央处理器 CPU所在节点对的内存节点对权值与各 CPU访问节点上内存的频度的乘积分 别是 10 30%, 0 50%和 10 20%, 这些乘积的和为 Sum = 3 + 0 + 2 = 5; 假设 Nodeo、 Node/和 Nodes上的中央处理器 CPUo、 CPU/和 CPU2访问节点
Nodes上内存的频度分别为 20%、 30%和 50%, 则根据表四, 计算各中央处理器 CPU所在节点对的内存节点对权值与各 CPU访问节点上内存的频度的乘积分 别是 20 x 20%、 10 X 30%和 0 χ 50% , 这些乘积的和为 Sum = 4 + 3 + 0 = 7; 以第一行表示中央处理器 CPU。、 CPU/和 CPU2访问的节点, 第二行表示上 述的求和, 则可得下述表五: 访问的节点 Nodeo ( memoryo ) Node/ ( memory / ) Node2 ( memory2 )
Sum 6 5 7
表五
由表五可知, 中央处理器 CPUo、 CPU/和 CPU2与节点 Nodeo上内存之间的 内存亲和性权值之和为 6,与节点 Node/上内存之间的内存亲和性权值之和为 5 , 与节点 Nodes上内存之间的内存亲和性权值之和为 7, 显然, 中央处理器 CPUo、 CPU/和 CPU2与节点 Node/上内存之间的内存亲和性权值之和最小, 因此,选择 节点 Node/为共享内存所在节点,这种选择使得由 Node。、 Node/和 Nodes 3个节 点构成的多节点计算系统在 Node。、 Node/和 Nodes上的中央处理器 CPU。、 CPU/ 和 CPUs需要访问 Node/上的共享内存时代价最小, 效率最高, 可提高系统的总 体存取性能。
选择好共享内存所在节点后,在本发明实施例中,还可以检查该共享内存 所在节点上的内存是否满足各中央处理器 CPU的访问, 若不能, 例如, 共享内 存所在节点上内存的容量不够、 耗尽; 或者, 虽然多节点计算系统中各节点上 的 CPU对共享内存所在节点上内存的访问频度已知, 但由于某种原因(例如, 由于高速緩存(cache ) 的存在导致实际的访问频度降低), 这个已知的访问频 度相对于实际的访问频度存在了偏差,则按照前述实施例提供的方法重新选择 共享内存所在节点。
为了进一步说明本发明实施例提供的方法,以下给出网络接收数据包时协 议栈和应用程序共享 NUMA结构下多节点计算系统中某个节点上内存的应用 场景。
已经知道, 网络优化的目标是减少内存的拷贝次数。 目前的零拷贝技术基 本实现了网络协议栈和应用程序共享一块内存,但如果在 NUMA结构下访问节 点上的共享内存产生的延迟可能会抵消零拷贝技术所产生的优势,本发明实施 例提供的多节点计算系统下选择共享内存所在节点的方法可以解决上述问题, 具体实现方法如下可以分为以下步骤:
5201 , 获取应用程序和内核 (即 kernel, 包括网络协议栈)所在节点对的 内存节点对权值。
具体地,可以从系统存储的如前述实施例表一所示的内存亲和性权值表中 获取。
5202 , 确定应用程序和内核访问任意一个节点上内存的频度。
5203 , 由上述步骤 S201获取的内存节点对权值和步骤 S202确定的应用程 序和内核访问任意一个节点上内存的频度,按照前述实施例提供的方法计算应 用程序、 内核与该任意节点上内存的内存亲和性权值之和。
经过比较,将其中计算所得内存亲和性权值之和最小时的节点选择为共享 内存所在节点, 即, 当网络收到数据包时, 将数据包发送至该节点存储, 以便
NUMA结构下多节点计算系统中各个节点共享。
5204,将共享内存所在节点的地址传送至本机的网卡,作为直接内存存取 ( DMA, Direct Memory Access )传送地址。
进一步,将网卡提供的硬件队列绑定至共享内存所在节点的地址; 当开始 启动数据传输时, 为数据包设置合适的媒体接入控制 (MAC, Media Access Control ) 包头 (head )
5205, 网卡收到数据包之后, 利用包 MAC头部的某个字段将数据包分队 列。
5206, 根据共享内存所在节点的地址, 通过 DMA方式将收到的数据包发 送至共享内存。
也可以通过中断告知 CPU可以开始轮询操作。
5207, 当由于某种原因, 导致应用程序转移到另外一个节点运行, 则转入 步骤 S202。
例如, 由于共享内存所在节点上内存的容量不够、 耗尽, 或者, 由于高速 或者,应用程序与该任意节点上内存的内存亲和性权值之和较大等等导致应用 程序转移到另外一个节点运行。
S208, 数据包传送结束之后, 释放相关的资源。
本发明实施例提供的方法还可以应用于多个进程或者进程的多个部分需 要共享某块内存的场景, 其特点是, 这些进程或进程的各部分运行在不同的节 点上,其实现方法基本类似于网络接收数据包时协议栈和应用程序共享 NUMA 结构下多节点计算系统中某个节点上内存, 不同的是, 这里共享某个节点上内 存的是不同进程或同一进程的各部分, 步骤如下:
5301 , 获取不同进程或同一进程的各部分所在节点对的内存节点对权值;
5302, 确定不同进程或同一进程的各部分访问任意一个节点上内存的频 度;
S303 , 由上述步骤 S301获取的内存节点对权值和步骤 S302确定的不同进 程或同一进程的各部分访问任意一个节点上内存的频度,按照前述实施例提供 的方法计算不同进程或同一进程的各部分与该任意节点上内存的内存亲和性 权值之和。
S304, 经过比较,将其中计算所得内存亲和性权值之和最小时的节点选择 为共享内存所在节点, 即,在该节点上开辟一块内存区域作为上述不同进程或 同一进程的各部分的共享内存。
需要说明的是,虽然上述实施例是以网络接收数据包时协议栈和应用程序 共享 NUMA结构下多节点计算系统中某个节点上内存以及不同进程或同一进 程的各部分共享某个节点上的内存为例说明本发明的应用场景,但本领域技术 人员应当理解, 本发明实施例提供的方法不限于上述应用场景,但凡需要共享 内存的场景都可以使用本发明实施例提供的方法。
请参阅附图 2, 是本发明实施例提供的一种多节点计算系统下选择共享内 存所在节点的装置逻辑结构示意图。 为了便于说明,仅仅示出了与本发明实施 例相关的部分。 附图 2示例的装置包含的功能模块 /单元可以是软件模块 /单元、 硬件模块 /单元或软硬件相结合模块 /单元,包括参数获取模块 201、求和模块 202 和节点选择模块 203, 其中:
参数获取模块 201 , 用于获取确定各中央处理器 CPU与任意一个节点上内 存之间的内存亲和性权值之和的参数,这些参数包括各 CPU所在节点对的内存 节点对权值和所述各 CPU访问所述任意一个节点上内存的频度;
求和模块 202,用于根据参数获取模块 201获取的参数计算各 CPU与任意一 个节点上内存之间的内存亲和性权值之和, 其中, 其中, 节点对的内存节点对 权值为该节点对中一个节点上的 CPU与节点对中另一个节点上内存之间的内 存亲和性权值;
节点选择模块 203,用于将求和模块 202计算所得内存亲和性权值之和最小 时的节点选择为各 CPU的共享内存所在节点。
附图 2示例的参数获取模块 201可以进一步包括内存亲和性权值第一获取 单元 301或者内存亲和性权值第二获取单元 302, 如附图 3所示本发明另一实施 例提供的多节点计算系统下选择共享内存所在节点的装置, 其中:
内存亲和性权值第一获取单元 301 , 用于获取一个节点上的 CPU与该节点 的邻居节点上内存之间的内存亲和性权值;
内存亲和性权值第二获取单元 302, 用于根据内存亲和性权值第一获取单 元 301获取的一个节点上的 CPU与该节点的邻居节点上内存之间的内存亲和性 权值,获取一个节点上的 CPU与该节点的非邻居节点上内存之间的内存亲和性 权值。
如附图 4所示所示本发明另一实施例提供的多节点计算系统下选择共享内 存所在节点的装置,所述参数获取模块 201进一步包括统计单元 401和频度计算 单元 402, 其中:
统计单元 401 , 用于统计每个节点对中一个节点上的 CPU访问所述任意一 个节点上内存的次数以及所述次数之和; 和, 求取所述次数与所述次数之和的比值, 所述比值为所述各 CPU访问所述任 意一个节点上内存的频度。
附图 2示例的节点选择模块 202可以进一步包括乘积计算单元 501和权重求 和单元 502,如附图 5所示所示本发明另一实施例提供的多节点计算系统下选择 共享内存所在节点的装置, 其中:
乘积计算单元 501 , 用于计算所述各中央处理器 CPU所在节点对的内存节 点对权值与所述各 CPU访问所述任意一个节点上内存的频度的乘积;
权重求和单元 502, 用于求取所述乘积计算单元 501计算所得乘积之和, 所 述乘积之和为根据所述参数计算出的所述各中央处理器 CPU与任意一个节点 上内存之间的内存亲和性权值之和。
附图 2至附图 5任一示例的装置还可以包括节点重选择模块 601 , 如附图 6 所示本发明另一实施例提供的多节点计算系统下选择共享内存所在节点的装 置。节点重选择模块 601用于检查所述节点选择模块 203选择的各 CPU的共享内 存所在节点上的内存是否满足所述各中央处理器 CPU的访问, 若不能, 则触发 所述参数获取模块 201、 求和模块 202和所述节点选择模块 203重新选择共享内 存所在节点。
需要说明的是,以上多节点计算系统下选择共享内存所在节点的装置的实 施方式中, 各功能模块的划分仅是举例说明, 实际应用中可以根据需要, 例如 相应硬件的配置要求或者软件的实现的便利考虑,而将上述功能分配由不同的 功能模块完成,即将所述多节点计算系统下选择共享内存所在节点的装置的内 部结构划分成不同的功能模块, 以完成以上描述的全部或者部分功能。 而且, 实际应用中, 本实施例中的相应的功能模块可以是由相应的硬件实现,也可以 由相应的硬件执行相应的软件完成, 例如, 前述的参数获取模块, 可以是具有 执行前述获取确定访问共享内存的各中央处理器 CPU与任意一个节点上内存 之间的内存亲和性权值之和的参数的硬件, 例如参数获取器,也可以是能够执 行相应计算机程序从而完成前述功能的一般处理器或者其他硬件设备;再如前 述的节点选择模块, 可以是具有执行前述选择功能的硬件, 如节点选择器, 也 可以是能够执行相应计算机程序从而完成前述功能的一般处理器或者其他硬 件设备。
需要说明的是, 上述装置各模块 /单元之间的信息交互、 执行过程等内容, 由于与本发明方法实施例基于同一构思,其带来的技术效果与本发明方法实施 例相同, 具体内容可参见本发明方法实施例中的叙述, 此处不再赘述。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步 骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读 存储介质中, 存储介质可以包括: 只读存储器(ROM, Read Only Memory ) 、 随机存取存储器(RAM, Random Access Memory ) 、 磁盘或光盘等。
以上对本发明实施例提供的多节点计算系统下选择共享内存所在节点的 方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方 式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思 想; 同时, 对于本领域的一般技术人员, 依据本发明的思想, 在具体实施方式 及应用范围上均会有改变之处, 综上所述, 本说明书内容不应理解为对本发明 的限制

Claims

权 利 要 求
1、 一种节点计算系统下选择共享内存所在节点的方法, 其特征在于, 所 述方法包括:
获取确定各中央处理器 CPU与任意一个节点上内存之间的内存亲和性权 值之和的参数;
根据所述参数计算所述各 CPU与任意一个节点上内存之间的内存亲和性 权值之和;
将其中计算所得内存亲和性权值之和最小时的节点选择为各 CPU的共享 内存所在节点。
2、 如权利要求 1所述的方法, 其特征在于, 所述参数包括: 所述各 CPU所 在节点对的内存节点对权值和所述各 CPU访问所述任意一个节点上内存的频 度。
3、 如权利要求 2所述的方法, 其特征在于, 所述节点对的内存节点对权值 为所述节点对中一个节点上的 CPU与所述节点对中另一个节点上内存之间的 内存亲和性权值。
4、 如权利要求 2所述的方法, 其特征在于, 所述获取所述各 CPU所在节点 对的内存节点对权值包括:
获取一个节点上的 CPU与该节点的邻居节点上内存之间的内存亲和性权 值; 或者
根据所述获取的一个节点上的 CPU与该节点的邻居节点上内存之间的内 存亲和性权值,获取一个节点上的 CPU与该节点的非邻居节点上内存之间的内 存亲和性权值。
5、 如权利要求 2所述的方法, 其特征在于, 所述获取所述各 CPU访问所述 任意一个节点上内存的频度包括:
统计每个节点对中一个节点上的 CPU访问所述任意一个节点上内存的次 数以及所述次数之和;
根据所述次数以及所述次数之和, 求取所述次数与所述次数之和的比值, 所述比值为所述各 CPU访问所述任意一个节点上内存的频度。
6、 如权利要求 2所述的方法, 其特征在于, 所述根据所述参数计算所述各 CPU与任意一个节点上内存之间的内存亲和性权值之和包括:
计算所述各 CPU所在节点对的内存节点对权值与所述各 CPU访问所述任 意一个节点上内存的频度的乘积;
求取所述乘积之和,所述乘积之和为根据所述参数计算出的所述各 CPU与 任意一个节点上内存之间的内存亲和性权值之和。
7、 如权利要求 1所述的方法, 其特征在于, 所述方法还包括:
检查所述共享内存所在节点上的内存是否满足所述各 CPU的访问, 若不 能, 则按照所述方法重新选择共享内存所在节点。
8、 一种多节点计算系统下选择共享内存所在节点的装置, 其特征在于, 所述装置包括:
参数获取模块,用于获取各中央处理器 CPU与任意一个节点上内存之间的 内存亲和性权值之和的参数;
求和模块,用于根据所述参数获取模块获取的参数计算所述各 CPU与任意 一个节点上内存之间的内存亲和性权值之和;
节点选择模块,用于将所述求和模块计算所得内存亲和性权值之和最小时 的节点选择为各 CPU的共享内存所在节点。
9、 如权利要求 8所述的装置, 其特征在于, 所述参数包括各 CPU所在节点 对的内存节点对权值和所述各 CPU访问所述任意一个节点上内存的频度。
10、 如权利要求 9所述的装置, 其特征在于, 所述节点对的内存节点对权 值为所述节点对中一个节点上的 CPU与所述节点对中另一个节点上内存之间 的内存亲和性权值。
11、 如权利要求 9所述的装置, 其特征在于, 所述获取模块包括: 内存亲和性权值第一获取单元,用于获取一个节点上的 CPU与该节点的邻 居节点上内存之间的内存亲和性权值; 或者
内存亲和性权值第二获取单元,用于根据所述内存亲和性权值第一获取单 元获取的一个节点上的 CPU与该节点的邻居节点上内存之间的内存亲和性权 值,获取一个节点上的 CPU与该节点的非邻居节点上内存之间的内存亲和性权 值。
12、 如权利要求 9所述的装置, 其特征在于, 所述获取模块包括: 统计单元,用于统计每个节点对中一个节点上的 CPU访问所述任意一个节 点上内存的次数以及所述次数之和;
频度计算单元, 用于根据所述统计单元统计的次数以及所述次数之和, 求 取所述次数与所述次数之和的比值,所述比值为所述各 CPU访问所述任意一个 节点上内存的频度。
13、 如权利要求 9所述的装置, 其特征在于, 所述求和模块包括: 乘积计算单元,用于计算所述各 CPU所在节点对的内存节点对权值与所述 各 CPU访问所述任意一个节点上内存的频度的乘积;
权重求和单元, 用于求取所述乘积计算单元计算所得乘积之和, 所述乘积 之和为根据所述参数计算出的所述各 CPU与任意一个节点上内存之间的内存 亲和性权值之和。
14、 如权利要求 8所述的装置, 其特征在于, 所述装置还包括: 节点重选择模块, 用于检查所述节点选择模块选择的各 CPU的共享内存 所在节点上的内存是否满足所述各 CPU的访问, 若不能, 则触发所述参数获 取模块、 所述求和模块和所述节点选择模块重新选择各 CPU的共享内存所在 节点 o
PCT/CN2011/079464 2011-02-21 2011-09-08 多节点计算系统下选择共享内存所在节点的方法和装置 WO2012113224A1 (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/340,193 US20120215990A1 (en) 2011-02-21 2011-12-29 Method and apparatus for selecting a node where a shared memory is located in a multi-node computing system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN 201110041474 CN102646058A (zh) 2011-02-21 2011-02-21 多节点计算系统下选择共享内存所在节点的方法和装置
CN201110041474.7 2011-02-21

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/340,193 Continuation US20120215990A1 (en) 2011-02-21 2011-12-29 Method and apparatus for selecting a node where a shared memory is located in a multi-node computing system

Publications (1)

Publication Number Publication Date
WO2012113224A1 true WO2012113224A1 (zh) 2012-08-30

Family

ID=46658887

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2011/079464 WO2012113224A1 (zh) 2011-02-21 2011-09-08 多节点计算系统下选择共享内存所在节点的方法和装置

Country Status (2)

Country Link
CN (1) CN102646058A (zh)
WO (1) WO2012113224A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104166596B (zh) * 2013-05-17 2018-06-26 华为技术有限公司 一种内存分配方法及节点
CN107003904A (zh) * 2015-04-28 2017-08-01 华为技术有限公司 一种内存管理方法、设备和系统
CN104850461B (zh) * 2015-05-12 2018-05-11 华中科技大学 一种面向numa架构的虚拟cpu调度优化方法
CN116016205B (zh) * 2022-12-06 2024-03-29 天津理工大学 一种基于综合强度和节点效率的网络关键节点识别方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101207515A (zh) * 2007-12-12 2008-06-25 中兴通讯股份有限公司 一种多机共享内存的处理方法、实现方法和同步方法
CN100489815C (zh) * 2007-10-25 2009-05-20 中国科学院计算技术研究所 一种内存共享的系统和装置及方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100489815C (zh) * 2007-10-25 2009-05-20 中国科学院计算技术研究所 一种内存共享的系统和装置及方法
CN101207515A (zh) * 2007-12-12 2008-06-25 中兴通讯股份有限公司 一种多机共享内存的处理方法、实现方法和同步方法

Also Published As

Publication number Publication date
CN102646058A (zh) 2012-08-22

Similar Documents

Publication Publication Date Title
EP4398556A2 (en) Storage transactions with predictable latency
US10110499B2 (en) QoS in a system with end-to-end flow control and QoS aware buffer allocation
US9244880B2 (en) Automatic construction of deadlock free interconnects
US20180285294A1 (en) Quality of service based handling of input/output requests method and apparatus
JP5490336B2 (ja) Pciエクスプレス・マルチプル・ルートi/o仮想化環境における低待ち時間の優先順位付け
CN110602156A (zh) 一种负载均衡调度方法及装置
US11144226B2 (en) Intelligent path selection and load balancing
CN107454017B (zh) 一种云数据中心网络中混合数据流协同调度方法
WO2014113646A1 (en) Automatic deadlock detection and avoidance in a system interconnect by capturing internal dependencies of ip cores using high level specification
WO2014166404A1 (zh) 一种网络数据包处理方法和装置
WO2019072162A1 (zh) 虚拟网络映射方法、设备和存储介质
WO2014183531A1 (zh) 一种分配远程内存的方法及装置
Ahuja et al. Cache-aware affinitization on commodity multicores for high-speed network flows
WO2012113224A1 (zh) 多节点计算系统下选择共享内存所在节点的方法和装置
CN117520252B (zh) 一种通信控制方法、系统级芯片、电子设备及存储介质
CN115729864A (zh) 存储装置、电子装置以及电子装置的操作方法
WO2014101502A1 (zh) 基于内存芯片互连的内存访问处理方法、内存芯片及系统
US9537799B2 (en) Phase-based packet prioritization
US20110208873A1 (en) Architecture-aware allocation of network buffers
CN116957902A (zh) 用于GPU的NoC仲裁方法
US20120215990A1 (en) Method and apparatus for selecting a node where a shared memory is located in a multi-node computing system
US10284501B2 (en) Technologies for multi-core wireless network data transmission
CN111147611B (zh) 参考附加网络地址转换表提供快速分组转发的电子设备
Soryani et al. Improving inter-node communications in multi-core clusters using a contention-free process mapping algorithm
Chen et al. Round-trip DRAM access fairness in 3D NoC-based many-core systems

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 11859365

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 11859365

Country of ref document: EP

Kind code of ref document: A1