首页> 中国专利> 一种防止节点控制器死锁的方法及节点控制器

一种防止节点控制器死锁的方法及节点控制器

摘要

一种防止节点控制器死锁的方法,包括:本节点的NC接收任一节点发送的请求消息并写入处理队列,该请求消息用于请求系统地址;NC监测其它节点上是否缓存有包含上述系统地址的缓存数据块,若是,则将其它节点上缓存中包含上述系统地址的缓存数据块进行无效处理,使NC接收到HA传送的第一监听消息时直接回应反馈消息至HA,而避免将第一监听消息写入处理队列被请求消息阻塞;第一监听消息用于监听其它节点上是否缓存有上述系统地址;反馈消息用于指示其它节点上缓存的上述系统地址无效,使HA将其存储的上述系统地址传送给CA;NC将已写入处理队列的请求消息传送给HA。本发明实施例可以防止节点控制器死锁,避免NUMA系统崩溃。

著录项

  • 公开/公告号CN102439571A

    专利类型发明专利

  • 公开/公告日2012-05-02

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN201180002139.4

  • 发明设计人 赵亚飞;戴若星;褚小伟;

    申请日2011-10-27

  • 分类号

  • 代理机构深圳市深佳知识产权代理事务所(普通合伙);

  • 代理人彭愿洁

  • 地址 518129 中国广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-12-18 05:08:35

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-08-28

    授权

    授权

  • 2012-06-27

    实质审查的生效 IPC(主分类):G06F12/08 申请日:20111027

    实质审查的生效

  • 2012-05-02

    公开

    公开

说明书

技术领域

本发明涉及计算机领域,尤其涉及一种防止节点控制器死锁的方法及节 点控制器,应用于非一致内存访问(Non-Uniform Memory Access,NUMA) 系统。

背景技术

传统的NUMA系统的结构如图1所示,由第一节点N0、第二节点N1和 第三节点N2这三个节点构成,这三个节点之间通过节点网络(Node  Interconnect)相连。其中,第一节点N0中包括一个节点控制器(Node  Controller,NC),一块系统内存(图1未显示)以及用于管理系统内存的系 统地址的本地代理(HomeAgent,HA),一个处理器单元(图1未显示)及 该处理器单元的缓存代理(Caching Agent,CA)。如图1所示,第一节点N0 中的各个组件本地互联(Local Interconnect),第一节点N0的NC、第二节点 N1以及第三节点N2之间节点互联(Node Interconnect)。其中,第二节点 N1、第三节点N2可以是仅包括处理器单元及其CA的节点,或者也可以是 结构类似于第一节点N0的复杂节点。

在图1所示的NUMA系统中,第一节点N0的HA用于管理的系统内存 的系统地址,第一节点N0的CA、第二节点N1以及第三节点N2通过该系 统地址可以实现对系统内存访问。假设第一节点N0的HA管理系统地址A, 当第二节点N1和/或第三节点N2需要请求系统地址A时,第二节点N1和 /或第三节点N2需要发起请求消息,并传送给第一节点N0的NC,然后由 第一节点N0的NC将该请求消息传送给第一节点N0的HA,第一节点N0的 HA收到该请求消息后将系统地址A传送给第一节点N0的NC,再由第一 节点N0的NC传送给第二节点N1和/或第三节点N2。进一步地,假设第 二节点N1已缓存(Cached)了系统地址A,而且第一节点N0的CA也需 要请求系统地址A时,则第一节点N0的CA也需要发起请求消息,并传送 给第一节点N0的HA,第一节点N0的HA收到其CA发起的请求消息后需 要发起监听消息,并传送给第一节点N0的NC,由第一节点N0的NC将该 监听消息传送给第二节点N1。第二节点N1收到该监听消息后,将反馈消息 传送给第一节点N0的NC,再由第一节点N0的NC传送给第一节点N0的 HA,使得第一节点N0的HA获悉第二节点缓存的系统地址A有效,进而第 一节点N0的HA可以将其存储的系统地址A通过本地网络传送给第一节点 N0的CA,至此第一节点N0的HA完成了对第一节点N0的CA发起的请求 消息的处理。在上述过程中,第一节点N0的HA获悉第二节点N1缓存的系 统地址A有效后进一步通过本地网络将系统地址A传送给CA,使CA可以 使用系统地址A进行系统内存,确保了第一节点N0的CA和第二节点N1 所使用的系统地址一致,从而满足NUMA系统的缓存一致性协议(Cache  Coherence Protocol)的要求。

实践中发现,在图1所示的NUMA系统中,第一节点N0的NC上设有 排队策略,来自第二节点N1或第三节点N2的请求消息Request先进入处理 队列,使得来自第一节点N0的HA发起的监听消息Probe有可能被第二节点 N1或第三节点N2发起的请求消息Request阻塞。同时,第一节点N0的HA 上也设有排队策略,来自第一节点N0的CA发起的请求消息Request先进 入处理队列,使来自第一节点N0的NC传送的请求消息Request也有可能被 来第一节点N0的CA发起的请求消息Request阻塞,如此,第一节点N0的 NC和HA之间就形成一个如图2所示的阻塞环,从而导致了第一节点N0的 NC死锁,而NC死锁会永久性地消耗NUMA系统资源,最终会导致NUMA 系统崩溃。

发明内容

针对上述缺陷,本发明实施例提供的一种防止节点控制器死锁的方法及 节点控制器,主要应用于NUMA系统,能够防止节点控制器死锁,从而避 免死锁导致NUMA系统性能下降或者崩溃。

一种防止节点控制器死锁的方法,应用于NUMA系统,包括:

本节点的节点控制器接收任一节点发送的请求消息,并将所述请求消息 写入处理队列;所述请求消息用于请求系统地址;

所述节点控制器监测其它节点上是否缓存有包含所述系统地址的缓存数 据块,若是,则将所述其它节点上缓存中包含所述系统地址的缓存数据块进 行无效处理,以使所述节点控制器接收到所述本节点的本地代理传送的第一 监听消息时直接回应反馈消息至所述本地代理,而避免将所述第一监听消息 写入所述处理队列被所述请求消息阻塞;所述第一监听消息用于监听所述其 它节点上是否缓存有所述系统地址;所述反馈消息用于指示所述其它节点上 缓存的所述系统地址无效,以使所述本地代理将其存储的所述系统地址传送 给所述本节点的缓存代理;

所述节点控制器将已写入处理队列的所述请求消息传送给所述第一节点 的本地代理。

一种节点控制器,应用于NUMA系统,所述节点控制器位于NUMA系 统的本地节点中,所述节点控制器包括:

接收单元,用于接收任一节点发送的请求消息,并将所述请求消息写入 处理队列;所述请求消息用于请求系统地址;

监测单元,用于监测其它节点上是否缓存有包含所述系统地址的缓存数 据块;

处理单元,用于在所述监测单元的监测结果为是时,将所述其它节点上 缓存的包含所述系统地址的缓存数据块进行无效处理;

所述接收单元,还用于接收所述本地节点的本地代理传送的第一监听消 息,所述第一监听消息用于监听所述其它节点上是否缓存有所述系统地址;

传送单元,用于在所述接收单元接收到所述第一监听消息时直接回应反 馈消息至所述本地代理,避免所述接收单元将所述第一监听消息写入所述处 理队列单元被所述请求消息阻塞;所述反馈消息用于指示所述其它节点上缓 存的所述系统地址无效,以使所述本地代理将其存储的所述系统地址传送给 所述本节点的缓存代理;

所述处理队列单元,用于存储所述接收单元写入的请求消息;

所述传送单元,还用于将已写入所述处理队列单元的所述请求消息传送 给所述本地代理。

一种NUMA系统,包括本地节点以及本地节点以外的其它节点,所述 本地节点包括节点控制器、本地代理以及缓存代理,其中:

所述节点控制器接收所述其它节点的请求消息并将所述请求消息写入处 理队列,所述请求消息用于请求系统地址;所述节点控制器监测所述其它节 点上是否缓存有包含所述系统地址的缓存数据块,若是,则将所述其它节点 上缓存的包含所述系统地址的缓存数据块进行无效处理,以使所述节点控制 器接收到所述本地代理传送的第一监听消息时直接回应反馈消息至所述本地 代理,而避免将所述第一监听消息写入所述处理队列被所述请求消息阻塞, 所述第一监听消息用于监听所述其它节点上是否缓存有所述系统地址;所述 反馈消息用于指示所述其它节点上缓存的所述系统地址无效,以使所述本地 代理将其存储的所述系统地址传送给所述缓存代理;所述节点控制器将已写 入处理队列的所述请求消息传送给所述本地代理。

本发明实施例中,本节点的节点控制器在接收到任一节点发送的请求消 息并写入处理队列后,先监测其它节点上是否缓存有包含该系统地址的缓存 数据块,若监测发现其它节点上缓存有包含该系统地址的缓存数据块,则节 点控制器将其它节点上缓存的包含该系统地址的缓存数据块进行无效处理, 后续节点控制器接收到本节点的本地代理传送的第一监听消息时,由于节点 控制器已经无效掉了其它节点上缓存的包含该系统地址的缓存数据块,使得 节点控制器不需要再向其它节点传送该第一监听消息,直接回应反馈消息给 HA即可,避免了节点控制器将该第一监听消息写入处理队列被请求消息阻 塞,从而解开了节点控制器与HA之间相互依赖的阻塞环,防止了节点控制 器发生死锁,避免了NUMA系统因为节点控制器发生死锁而崩溃。

附图说明

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

图1为传统的NUMA系统的结构示意图;

图2为传统的NUMA系统的NC发生死锁的流程示意图;

图3为本发明实施例一提供的防止节点控制器死锁的方法流程示意图;

图4为本发明实施例二提供的防止节点控制器死锁的方法流程示意图;

图5为本发明实施例三提供的一种节点控制器的结构示意图;

图6为本发明实施例三提供的另一种节点控制器的结构示意图;

图7为本发明实施例四提供的NUMA系统的结构示意图。

具体实施方式

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

本发明实施例提供了一种防止节点控制器死锁的方法、节点控制器以及 NUMA系统,可以防止节点控制器死锁,避免NUMA系统因为节点控制器 死锁而崩溃。下面通过具体实施例进行说明。

实施例一:

请参阅图3,图3为本发明实施例一提供的一种防止节点控制器死锁的 方法,应用于NUMA系统。如图3所示,该方法可以包括以下步骤:

301、本节点的节点控制器(NC)接收任一节点发送的请求消息,并将 该请求消息写入处理队列,该请求消息用于请求系统地址。

在NUMA系统中,NC上设置有排队策略,用于请求系统地址的请求消 息传送至NC后,NC需要将该请求消息写入处理队列进行排队,然后按照 处理权限(即处理的先后顺序)进行处理。

在NUMA系统中,任一节点根据所请求的系统地址可以访问系统内存。

在NUMA系统中,本节点可以是中央处理器单元(Central Processing  Unit,CPU),或者可以是对称多处理(Symmetric Multi Processing,SMP) 系统,本发明实施例不作限定。

302、NC监测其它节点上是否缓存有包含上述系统地址的缓存数据块 (Cache Line),若是,则将其它节点上缓存的包含上述系统地址的缓存数据 块进行无效处理,使NC接收到本节点的HA传送的第一监听消息时直接回 应反馈消息给HA,避免NC将该第一监听消息写入处理队列被请求消息阻 塞;其中,第一监听消息用于监听其它节点上是否缓存有上述系统地址;该 反馈消息用于指示其它节点上缓存的上述系统地址无效,以使HA将其存储 的上述系统地址传送给本节点的CA。

在NUMA系统中,其它节点可以是CPU,或者可以是SMP系统,本发 明实施例不作限定。

作为一种可选的实施方式,NC监测其它节点上是否缓存有包含上述系 统地址的缓存数据块的实现过程可以包括以下步骤:

A1、NC向其它节点传送第二监听消息SnpData,该第二监听消息SnpData 用于监测其它节点上是否缓存有包含上述系统地址的缓存数据块。

B1、NC接收其它节点传送的响应消息RapS,该响应消息RapS用于指 示其它节点上是否缓存有包含上述系统地址的缓存数据块。

由此可见,通过上述步骤A1和步骤B1,NC可以实现对其它节点的监 测,获悉其它节点上是否缓存有包含上述系统地址的缓存数据块。

作为一种可选的实施方式,NC将其它节点上缓存的包含上述系统地址 的缓存数据块进行无效处理的实现过程可以为:

NC传送指示消息SnpInvXtoI给其它节点,其中,该指示消息SnpInvXtoI 用于指示其它节点将其缓存的包含上述系统地址的缓存数据块删除或置为不 可用。

进一步地,NC还可以接收其它节点传送的指示响应消息RspI,该指示 响应消息RspI是其它节点根据上述指示消息SnpInvXtoI的指示,将其缓存 的包含上述系统地址的缓存数据块删除或置为不可用后传送的。

在NUMA系统中,其它节点接收到NC传送的指示消息SnpInvXtoI后, 可以根据该指示消息SnpInvXtoI的指示,将其缓存的包含上述系统地址的缓 存数据块删除或置为不可用。其中,其它节点将其缓存的包含上述系统地址 的缓存数据块删除或置为不可用的具体实现方式是本领域技术人员所公知的 常识,本发明实施例此处不作详细介绍。

其中,对于NC而言,当其接收到其它节点传送的指示响应消息RspI后, 即可获悉其它节点已经将其缓存的包含上述系统地址的缓存数据块进行无效 处理,这样NC在后续过程中即使收到本节点的HA传送的第一监听消息也 不需要再将该第一监听消息传送给其它节点了,避免了NC将该第一监听消 息写入处理队列被请求消息阻塞。

303、NC将已写入处理队列的请求消息传送给HA。

本实施例中,NC在监测出其它节点上缓存有包含上述系统地址的缓存 数据块,并将其它节点上缓存的包含上述系统地址的缓存数据块进行无效处 理之后,可以根据处理权限(即处理的先后顺序)将已写入处理队列的请求 消息传送给本节点的HA,以使HA可以根据该请求消息的请求将存储的系 统地址传送给NC,再由NC将该系统地址传送给第二节点,从而使得第二 节点可以采用该系统地址进行系统内存。

本实施例中,NC收到HA传送的第一监听消息后,可以传送反馈消息 至HA,以使HA根据该反馈消息的指示获悉其它节点缓存的上述系统地址 无效,从而HA可以将其存储的上述系统地址传送给CA,使得CA可以采用 该系统地址进行系统内存访问,从而满足NUMA系统的缓存一致性协议的 要求。

本实施例中,NC如果监测出其它节点上没有缓存有包含上述系统地址 的缓存数据块,则NC接收到HA传送的第一监听消息后,也可以传送反馈 消息至HA,使HA可以将其存储的上述系统地址传送给CA,从而完成一次 握手流程。NC也不需要将该第一监听消息传送给其它节点了,从而可以避 免将该第一监听消息写入处理队列被请求消息阻塞,进而避免了NUMA系 统因为NC发生死锁而崩溃。

本实施例中,NC传送请求消息和接收第一监听消息的先后顺序不限定, 只要NC在接收到第一监听消息之前已将其它节点缓存的包含上述系统地址 的缓存数据块进行无效处理即可。本实施例中,NC已经预先获悉了其它节 点已经将其缓存的包含上述系统地址的缓存数据块进行无效处理,这样NC 在接收到HA传送的第一监听消息时,不需要再将该第一监听消息传送给其 它节点了,从而可以避免NC将该第一监听消息写入处理队列被请求消息阻 塞。由于发生死锁是因为NC和HA之间形成相互依赖的阻塞环,因此只要 在NC上避免第一监听消息被请求消息阻塞,那么这个导致发生死锁的阻塞 环也随之被解开,进而避免了NUMA系统因为NC发生死锁而崩溃。

本实施例中,CA传送的请求消息用于请求上述系统地址,也就是说CA 与任一节点传送的请求消息所请求的系统地址相同,从而使得CA与任一节 点所使用的系统地址一致,满足NUMA系统的缓存一致性协议的要求。其 中,CA与任一节点传送的请求消息所请求的系统地址可以是HA管理的多 个系统地址中的任意一个。

本发明实施例中,本节点的节点控制器在接收到任一节点发送的请求消 息并写入处理队列后,先监测其它节点上是否缓存有包含该系统地址的缓存 数据块,若监测发现其它节点上缓存有包含该系统地址的缓存数据块,则节 点控制器将其它节点上缓存的包含该系统地址的缓存数据块进行无效处理, 后续节点控制器接收到本节点的本地代理传送的第一监听消息时,由于节点 控制器已经无效掉了其它节点上缓存的包含该系统地址的缓存数据块,使得 节点控制器不需要再向其它节点传送该第一监听消息,直接回应反馈消息给 HA即可,避免了节点控制器将该第一监听消息写入处理队列被请求消息阻 塞,从而解开了节点控制器与HA之间相互依赖的阻塞环,防止了节点控制 器发生死锁,避免了NUMA系统因为节点控制器发生死锁而崩溃。

实施例二:

请参阅图4,图4为本发明实施例二提供的一种防止节点控制器死锁的 方法,应用于NUMA系统。其中,本实施例二以满足快速通道互联(Quick  Path Interconnect,QPI)协议的NUMA系统为例,介绍本发明实施例中提 供的一种防止节点控制器死锁的方法。进一步地,本实施例二中假设NUMA 系统中的第三节点N2上缓存有包含系统地址A的缓存数据块(Cache Line)。 如图4所示,该方法可以包括以下步骤:

401、第一节点N0的NC接收第二节点N1传送的用于请求系统地址A 的请求消息RdData,并将请求消息RdData写入处理队列。

402、第一节点N0的NC向第三节点N2传送监听消息SnpData,该监 听消息SnpData用于监测第三节点N2上是否缓存有包含系统地址A的缓存 数据块。

403、第一节点N0的NC接收第三节点N2传送的响应消息RapS,该响 应消息RapS用于指示第三节点N2上缓存有包含系统地址A的Cache Line。

404、第一节点N0的NC将指示消息SnpInvXtoI传送给第三节点N2, 其中,该指示消息SnpInvXtoI用于指示第三节点N2将其缓存的包含系统地 址A的Cache Line进行无效处理。

405、第一节点N0的NC接收第三节点N2传送的指示响应消息RspI, 其中,该指示响应消息RspI是第三节点N2根据上述指示消息SnpInvXtoI 的指示,将其缓存的包含系统地址A的Cache Line进行无效处理后传送的。

本实施例中,第三节点N2将其缓存的包含系统地址A的Cache Line进 行无效处理是指第三节点N2将其缓存的包含系统地址A的Cache Line删除 或置为不可用。

406、第一节点N0的NC将已写入处理队列的请求消息RdData传送给 第一节点N0的HA。

407、第一节点N0的NC接收第一节点N0的HA传送的监听消息 SnpData,其中,第一节点N0的HA传送的监听消息SnpData是第一节点 N0的HA收到第一节点N0的CA传送的用于请求系统地址A的请求消息 RdData后触发传送的。

408、第一节点N0的NC接收到第一节点N0的HA传送的监听消息 SnpData时,立刻传送反馈消息RspCnfit至第一节点N0的HA。

本实施例中,第一节点N0的HA可以将CA传送的用于请求系统地址A 的请求消息RdData以及第一节点N0的NC传送的请求消息RdData写入处 理队列进行排队,并按照处理权限(即处理的先后顺序)依次进行处理。具 体地,第一节点N0的HA可以根据CA传送的请求消息RdData将系统地址 A传送给CA;以及根据第一节点N0的NC传送的请求消息RdData将系统 地址A传送给第一节点N0的NC,再由第一节点N0的NC将系统地址A传 送给第二节点N1。

本实施例中,第一节点N0的NC在接收到来自第一节点N0的HA传送 的监听消息SnpData时,第一节点N0的NC已获悉了第一节点N0的另一侧 所有节点(即包括第二节点N1和第三节点N2)上都不存在系统地址A的 Cache Line,那么第一节点N0的NC也就不需要继续向另一侧去传送监听消 息SnpData了,可以传送反馈消息RspCnfit至第一节点N0的HA,避免了第 一节点N0的NC将监听消息SnpData写入处理队列被请求消息RdData阻塞, 从而可以在第一节点N0的NC上解开相互依赖的阻塞环,避免了第一节点 N0的NC发生死锁。

作为一种可选的实施方式,本实施例中第一节点N0的NC上除了设置 排队策略之外,还可以设置以下策略:

即第一节点N0的NC在收到其它节点传送的用于请求系统地址的请求 消息时,如需要向第一节点N0的HA进一步请求时(第一节点N0的NC无 法实现HA的代理),必须先使其它节点所在一侧的所有包含该系统地址的 Cache Line无效,然后才能进行垮域请求。

其中,所谓的垮域请求是指用于请求系统地址的请求消息从其它节点进 入第一节点N0的HA。

如图4所示,第一节点N0的NC接收到来自第二节点N1传送的请求 消息后,发现自身作为HA代理无法满足该请求,则第一节点N0的NC在 进行垮域请求前,先按照上述设置好的策略,先将第二节点N1一侧的第三 节点N2上缓存的系统地址A的Cache Line无效掉。当第一节点N0的NC 接收到来自第一节点N0的HA传送的监听消息时,尽管这个时候第一节点 N0的NC已经在处理来自第二节点N1的请求消息,第一节点N0的NC也 可以对针对监听消息传送反馈消息至第一节点的HA。如此,第一节点N0 的HA就可以先处理完来自CA的请求消息,再继续处理来自第一节点N0 的NC传送的请求消息。

本实施例中,NUMA系统的第一节点N0的NC在接收到第二节点N1 传送的请求消息并写入处理队列后,先将第三节点N2上缓存的包含系统地 址A的Cache Line无效掉;然后NC再将已写入处理队列的请求消息传送给 第一节点N0的HA。第一节点N0的NC接收到第一节点N0的HA传送的 监听消息时,第一节点N0的NC已经无效掉了第三节点N2上缓存的包含系 统地址A的Cache Line,使第一节点N0的NC不需要继续向第三节点N2 传送该监听消息,从而可以避免第一节点N0的NC将监听消息写入处理队 列被请求消息阻塞,从而解开了第一节点N0的NC与HA之间相互依赖的 阻塞环,防止了第一节点N0的NC发生死锁,避免了NUMA系统因为第一 节点N0的NC发生死锁而崩溃。

实施例三:

请参阅图5,图5为本发明实施例三提供的一种节点控制器,应用于 NUMA系统,本实施例提供的节点控制器位于NUMA系统的某一节点中, 该节点控制器可以包括:

接收单元501,用于接收任一节点发送的请求消息,并将该请求消息写 入处理队列505;其中,该请求消息用于请求系统地址;

监测单元502,用于监测其它节点上是否缓存有包含上述系统地址的缓 存数据块;

处理单元503,用于在监测单元502的监测结果为是时,将其它节点上 缓存的包含上述系统地址的缓存数据块进行无效处理;

接收单元501,还用于接收本节点的本地代理传送的第一监听消息,该 第一监听消息用于监听其它节点上是否缓存有上述系统地址;

传送单元504,用于在接收单元501接收到第一监听消息时直接回应反 馈消息至本地代理,避免接收单元501将第一监听消息写入处理队列单元被 请求消息阻塞;其中,反馈消息用于指示其它节点上缓存的上述系统地址无 效,以使本地代理将其存储的上述系统地址传送给本节点的缓存代理;

处理队列单元505,用于存储接收单元501写入的请求消息;

传送单元504还用于将已写入处理队列单元的请求消息传送给本地代 理。

请一并参阅图6,图6为本发明实施例三提供的另一种节点控制器,应 用于NUMA系统。其中,图6所示的节点控制器是由图5所示的节点控制 器进行优化得到的,图6所示的节点控制器同样位于NUMA系统的某一节 点中。在图6所示的节点控制器中,监测单元502可以包括:

第一模块5021,用于向其它节点传送第二监听消息,该第二监听消息用 于监测其它节点上是否缓存有包含上述系统地址的缓存数据块;

第二模块5022,用于接收的其它节点传送的响应消息,该响应消息用于 指示其它节点上是否缓存有包含上述系统地址的缓存数据块。

相应地,处理单元503具体用于在第二模块5022接收的响应消息表示第 三节点上缓存有包含上述系统地址的缓存数据块时,将第三节点上缓存的包 含系统地址的缓存数据块进行无效处理。

进一步地,在图6所示的节点控制器中,处理单元503可以包括:

第三模块5031,用于将指示消息SnpInvXtoI传送给其它节点,该指示消 息SnpInvXtoI用于指示其它节点将其缓存的包含上述系统地址的缓存数据块 删除或置为不可用。

进一步地,在图6所示的节点控制器中,处理单元503还可以包括:

第四模块5032,用于接收其它节点传送的指示响应消息RspI,该指示 响应消息RspI是其它节点根据该指示消息SnpInvXtoI的指示,将其缓存的 包含上述系统地址的缓存数据块删除或置为不可用后传送的。

本实施例中,本地代理根据传送单元504回应的反馈消息的指示获悉其 它节点缓存了上述系统地址之后,可以将本地代理存储的上述系统地址传送 给缓存代理,使得缓存代理可以采用该系统地址访问网络。

本实施例中,本节点的CA传送的请求消息也用于请求上述系统地址, 也就是说CA所请求的系统地址与任一节点传送的请求消息所请求的系统地 址相同,从而使得CA与任一节点所使用的系统地址一致,满足NUMA系统 的缓存一致性协议的要求。

在NUMA系统中,节点可以是CPU,或者可以是SMP系统,本发明实 施例不作限定。

本发明实施例中,本节点的节点控制器在接收到任一节点发送的请求消 息并写入处理队列后,先监测其它节点上是否缓存有包含该系统地址的缓存 数据块,若监测发现其它节点上缓存有包含该系统地址的缓存数据块,则节 点控制器将其它节点上缓存的包含该系统地址的缓存数据块进行无效处理, 后续节点控制器接收到本节点的本地代理传送的第一监听消息时,由于节点 控制器已经无效掉了其它节点上缓存的包含该系统地址的缓存数据块,使得 节点控制器不需要再向其它节点传送该第一监听消息,直接回应反馈消息给 HA即可,避免了节点控制器将该第一监听消息写入处理队列被请求消息阻 塞,从而解开了节点控制器与HA之间相互依赖的阻塞环,防止了节点控制 器发生死锁,避免了NUMA系统因为节点控制器发生死锁而崩溃。

实施例四:

请参阅图7,图7为本发明实施例四提供的一种NUMA系统。在图7所 示的NUMA系统中,该NUMA系统包括本地节点701以及本地节点701以 外的其它节点702。其中,本地节点701的结构与图1中第一节点N0的结构 类似,不同的是,本地节点701的NC的结构与图5所示的节点控制器结构 相同,或者与图6所示的节点控制器的结构相同。

其中,本地节点701的节点控制器接收其它节点702的请求消息并将该 请求消息写入处理队列,该请求消息用于请求系统地址;

本地节点701的节点控制器监测其它节点702上是否缓存有包含上述系 统地址的缓存数据块,若是,则将其它节点702上缓存的包含上述系统地址 的缓存数据块进行无效处理,以使节点控制器接收到本地代理传送的第一监 听消息时直接回应反馈消息至本地代理,而避免将第一监听消息写入处理队 列被请求消息阻塞,其中,第一监听消息用于监听其它节点702上是否缓存 有上述系统地址;反馈消息用于指示其它节点702上缓存的上述系统地址无 效,使本地代理将其存储的上述系统地址传送给缓存代理,以便所述本地节 点701的节点控制器将已写入处理队列的请求消息传送给本地代理。

其中,上述的第一监听消息是本地代理接收到缓存代理传送的请求消息 之后传送给节点控制器的,缓存代理传送的请求消息用于请求上述系统地址。

其中,缓存代理请求上述系统地址与其它节点702请求的系统地址相同。

本发明实施例中,本地节点701的节点控制器在接收到其它节点702发 送的请求消息并写入处理队列后,先监测其它节点702上是否缓存有包含该 系统地址的缓存数据块,若监测发现其它节点702上缓存有包含该系统地址 的缓存数据块,则节点控制器将其它节点702上缓存的包含该系统地址的缓 存数据块进行无效处理,后续节点控制器接收到本地代理传送的第一监听消 息时,由于节点控制器已经无效掉了其它节点702上缓存的包含该系统地址 的缓存数据块,使得节点控制器不需要再向其它节点702传送该第一监听消 息,直接回应反馈消息给本地代理即可,避免了节点控制器将该第一监听消 息写入处理队列被请求消息阻塞,从而解开了节点控制器与HA之间相互依 赖的阻塞环,防止了节点控制器发生死锁,避免了NUMA系统因为节点控 制器发生死锁而崩溃。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤 可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读 取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述 的存储介质包括:只读存储器(Read-Only Memory,ROM)、随机存取存储器 (Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的 介质。

以上对本发明实施例提供的一种防止节点控制器死锁的方法及节点控制 器、NUMA系统进行了详细介绍,本文中应用了具体个例对本发明的原理及 实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及 其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具 体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理 解为对本发明的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号