分布式节点之间的存储器共享制造技术

技术编号:11701036 阅读:78 留言:0更新日期:2015-07-09 00:45
公开了一种用于使得分布式系统中的节点能够共享一个或多个存储器部分的方法和设备。主节点使其主存储器的一部分可用于共享,一个或多个共享者节点在其自己的主存储器中镜像主节点的主存储器的该共享部分。为了维护存储器一致性,实现存储器一致性协议。根据该协议,俘获以共享者节点的镜像存储器部分为目标的加载指令和存储指令,并且俘获以主节点的共享存储器部分为目标的存储指令。通过该协议,有效数据从主节点获得,并且更新传播到主节点。因此,没有“脏”数据在共享者节点之间传送。结果,一个节点的故障将不会使另一个节点发生故障或者整个系统发生故障。

【技术实现步骤摘要】
【国外来华专利技术】分布式节点之间的存储器共享优先权声明本申请要求2013年3月14日提交的、标题为“MemorySharingAcrossDistributedNodes”、序列号为13/828,555的美国申请的优先权,该申请要求2012年10月2日提交的、标题为“TechniquesForAcceleratingDatabaseOperations”、序列号为61/709,142的美国临时申请的权益。这些申请的全部内容通过引用并入本文。
本公开总地涉及计算系统,更具体地讲,涉及一种用于使得存储器能够在分布式节点之间共享的方法和设备。
技术介绍
可通过互联网或者通过公司网络获得的许多功能和服务由一个或多个分布式计算节点集群提供。例如,用于运行大型业务的数据库可以由在形成集群的多个分布式计算节点上运行的多个数据库服务器维护,并且通过这些数据库服务器变得可用。使用计算节点集群提供功能或服务可以产生若干个优点。例如,就集群而言,添加另一个节点来提高系统的容量以满足增长的需求是相对容易的。集群还使得可以在各个节点之间均衡负荷,以使得如果一个节点变得负担过重,则工作可以分配给其他节点。另外,集群使得可以容忍故障,以使得如果一个或多个节点发生故障,功能或服务仍然可用。由于这些原因和其他原因,大型关键任务服务通常由一个或多个分布式节点集群提供。集群中的节点通常需要彼此交换/共享信息。例如,为了使节点一起工作以进行一个或多个事务、均衡负荷、实现故障预防和恢复等,这个信息共享可能是必要的。通常,集群中的节点使用请求-响应消息传送模型来彼此共享信息。不幸的是,现有的消息传送模型中的许多模型需要大量开销,并且施加相当数量的延迟。具体地讲,一个节点上的客户端线程通常需要唤醒另一个节点上的线程,以便使请求得到服务。这个唤醒可能需要在队列中等待,并且与上下文切换有延迟。因此,现有的消息传送模型效率低下,并且缩放性不好。结果,对于大型、甚至较小型分布式节点系统,需要改进的信息共享机制,以便使得分布式节点能够彼此更高效率地、更有效地交换/共享信息。附图说明图1是在其中可以实现本专利技术的一个实施例的样例分布式节点系统的框图。图2例示根据本专利技术的一个实施例的一些节点既充当主节点、又充当共享者节点的例子。图3例示根据本专利技术的一个实施例的在初始化处理期间可以创建的存储器结构和索引结构的例子。图4示出例示根据本专利技术的一个实施例的在从存储器位置加载数据时共享者节点执行的操作的操作流程图。图5示出例示根据本专利技术的一个实施例的在将数据存储到存储器位置时共享者节点执行的操作的操作流程图。图6示出例示根据本专利技术的一个实施例的在将更新数据传播到主节点时共享者节点执行的操作的操作流程图。图7示出例示根据本专利技术的一个实施例的在将数据存储到存储器位置时主节点执行的操作的操作流程图。具体实施方式概述根据本专利技术的一个实施例,提供了一种用于使得分布式节点系统中的节点能够与一个或多个其他的节点共享它们的主存储器的一个或多个部分的方法和设备。与另一个节点共享主存储器的一部分意指,节点(在本文中被称为“主”节点)使其主存储器的一部分可用于共享,另一个节点(在本文中被称为“共享者节点”)在其自己的主存储器中镜像主节点的主存储器的该部分。实际上,共享者节点在其自己的主存储器的一部分(共享者节点的主存储器的该部分在本文中将被称为共享者节点的主存储器的镜像部分)中维护主节点的共享存储器部分的内容的副本。多于一个的共享者节点可以镜像主节点的共享存储器部分。通过该共享布置,共享者节点可以通过简单地访问其自己的主存储器的镜像部分来访问主节点的共享存储器部分的内容(假定镜像存储器部分中的内容当前是有效的)。因此,该布置使得信息能够以较少的开销和较短的延迟在主节点与共享者节点(一个或多个)之间共享。因此,使得信息共享更有效率并且更加有效。因为共享者节点在其镜像存储器部分中维护主节点的共享存储器部分的内容的副本,并且因为这些内容可以由主节点或共享者节点更新,所以存在各组内容不同步的可能性。为了确保在分布式节点系统上维持数据一致性,在节点之间实现存储器一致性协议。在一个实施例中,至少部分通过俘获以共享者节点之一的镜像存储器部分为目标的加载指令和存储指令并且俘获以主节点的共享存储器部分为目标的存储指令来实现存储器一致性协议。共享者节点加载在一个实施例中,共享者节点可以如下执行从在其主存储器的镜像部分内的存储器位置的加载。一开始,共享者节点中的处理器执行与特定执行线程有关的一组程序指令。该组程序指令可以包括从在共享者节点的主存储器的镜像部分内的特定存储器位置加载数据的加载指令。当处理器执行加载指令时,它检查与所述特定存储器位置相关联的有效性指示符以确定当前存储在所述特定存储器位置中的数据是否是有效的。如果有效性指示符指示有效,则处理器像平常那样从所述特定存储器位置加载数据。然而,如果有效性指示符指示无效,则处理器使加载指令俘获,这使处理器暂停执行与所述特定线程有关的所述一组指令,并且开始执行一组俘获处理指令。在执行俘获(trap)处理指令时,处理器使用于所述特定存储器位置的有效数据从主节点的主存储器的共享存储器部分中的相应存储器位置获得。作为该处理的一部分,处理器可以使目录条目被访问和锁定,所述目录条目存储在主节点的主存储器中,并且与主节点的主存储器中的相应存储器位置相关联。在从主节点获得有效数据之后,将它存储到共享者节点的特定存储器位置中。在一个实施例中,共享者节点可以维护存储缓冲器。该存储缓冲器(将在后面的章节中作详细说明)可以包含意图存储到主节点的主存储器中的相应存储器位置中的、但是尚未传播到主节点的更新数据。如果存储缓冲器包含用于相应存储器位置的这样的更新数据,则处理器将该更新数据存储到该特定存储器位置中(指出:该更新数据保留在存储缓冲器中,以使得它最后将传播到主节点)。结果,所述特定存储器位置中的数据将既反映从主节点获得的有效数据,又反映来自存储缓冲器的更新数据。另外,处理器将与所述特定存储器位置相关联的有效性指示符设置为有效以指示所述特定存储器位置中的数据现在是有效的。此外,处理器可以使与主节点的主存储器中的相应存储器位置相关联的目录条目被更新以指示共享者节点现在是该相应存储器位置的有效的共享者。此外,处理器可以使目录条目解锁。其后,处理器终止执行俘获处理指令,并且重新开始执行与所述特定执行线程有关的所述一组程序指令。在一个实施例中,处理器通过再次执行以所述特定存储器位置为目标的加载指令来重新开始执行。这次,因为与所述特定存储器位置相关联的有效性指示符被设置为有效,所以加载操作应导致数据从该特定存储器位置加载。共享者节点存储在一个实施例中,共享者节点可以如下执行到在其主存储器的镜像部分内的存储器位置的存储。一开始,共享者节点中的处理器执行与特定执行线程有关的一组程序指令。该组程序指令可以包括将更新数据存储到在共享者节点的主存储器的镜像部分内的特定存储器位置的存储指令。当处理器执行存储指令时,它确定所述特定存储器位置是可写位置。在一个实施例中,在初始化期间,共享者节点的主存储器的镜像部分内的所有存储器位置都被设置为只读。因此,该确定将导致否定,这将使存储指令俘获。这继而使处理器暂停执行与本文档来自技高网...

【技术保护点】
在包括第一节点和第二节点的分布式系统中,其中,所述第一节点具有第一主存储器,所述第二节点具有第二主存储器,并且其中,所述第二主存储器中的第二存储器位置镜像在第一主存储器中的第一存储器位置中,一种由所述第一节点执行的方法包括:由所述第一节点上的处理器执行从第一主存储器的第一存储器位置加载数据的加载指令,其中,所述加载指令是与特定执行线程有关的一组程序指令的一部分;由所述处理器确定第一存储器位置中的数据是否是有效的;响应于确定第一存储器位置中的数据是无效的,使所述加载指令俘获,这使所述处理器暂停执行所述一组程序指令,并且开始执行一组俘获处理指令;在执行所述一组俘获处理指令时,所述处理器使:有效数据从第二主存储器的第二存储器位置获得并且存储到第一主存储器的第一存储器位置中;以及有效性指示符更新为指示第一存储器位置中的数据是有效的;以及由所述处理器重新开始执行所述一组程序指令。

【技术特征摘要】
【国外来华专利技术】2012.10.02 US 61/709,142;2013.03.14 US 13/828,5551.一种在包括第一节点和第二节点的分布式系统中执行的方法,其中,所述第一节点具有第一主存储器,所述第二节点具有第二主存储器,所述方法由所述第一节点执行,所述方法包括:将第一主存储器中的第一存储器位置中的一个或多个存储器地址映射到第二主存储器中的第二存储器位置中的一个或多个存储器地址;由所述第一节点上的处理器执行从第一主存储器的第一存储器位置加载数据的加载指令,其中,所述加载指令是与特定执行线程有关的一组程序指令的一部分;其中,执行所述加载指令包括由所述处理器确定第一存储器位置中的数据是否是有效的;响应于确定第一存储器位置中的数据是无效的,使所述加载指令俘获,这使所述处理器暂停执行所述一组程序指令,并且开始执行一组俘获处理指令;由所述处理器执行所述一组俘获处理指令,其中,执行所述一组俘获处理指令使得:从第二主存储器的第二存储器位置获得有效数据并且将所述有效数据存储到第一主存储器的第一存储器位置中;以及将有效性指示符更新为指示第一存储器位置中的数据是有效的;以及由所述处理器重新开始执行所述一组程序指令。2.根据权利要求1所述的方法,其中,所述第一节点包括协处理器,并且其中,使有效数据从第二主存储器的第二存储器位置获得并且存储到第一主存储器的第一存储器位置中包括:所述处理器将一个或多个指令提供给所述协处理器,使得所述协处理器从第二主存储器的第二存储器位置获得有效数据并且将所述有效数据存储到第一主存储器的第一存储器位置中。3.根据权利要求1所述的方法,其中,所述第一节点包括第一协处理器,所述第二节点包括第二协处理器,并且其中,使有效数据从第二主存储器的第二存储器位置获得并且存储到第一主存储器的第一存储器位置中包括:所述处理器将一个或多个指令提供给第一协处理器,使得第一协处理器通过与第二协处理器的交互从第二主存储器的第二存储器位置获得有效数据并且将所述有效数据存储到第一主存储器的第一存储器位置中。4.根据权利要求1所述的方法,其中:在执行所述一组俘获处理指令时,所述处理器进一步使:与第二节点的第二主存储器的第二存储器位置相关联的目录条目被锁定,其中,所述目录条目存储在第二节点上;所述目录条目中的信息更新为指示第一节点是第二主存储器的第二存储器位置的有效共享者;以及所述目录条目被解锁。5.根据权利要求1所述的方法,其中:在执行所述一组俘获处理指令时,所述处理器进一步使:更新数据从第一节点上的存储缓冲器获得,其中,所述更新数据意图存储在第二节点的第二主存储器的第二存储器位置中,但是尚未传播到第二节点;以及所述更新数据被存储到第一主存储器的第一存储器位置中。6.根据权利要求1所述的方法,其中:在执行所述一组俘获处理指令时,在使所述有效数据从第二主存储器的第二存储器位置获得并且存储到第一主存储器的第一存储器位置中之前,所述处理器使:更新数据从第一节点上的存储缓冲器获得,其中,所述更新数据意图存储在第二节点的第二主存储器的第二存储器位置中,但是尚未传播到第二节点;以及所述更新数据传播到第二节点并且存储到第二主存储器的第二存储器位置内以产生表示有效数据的更新的一组数据。7.一种在包括第一节点和第二节点的分布式系统中执行的方法,其中,所述第一节点具有第一主存储器,所述第二节点具有第二主存储器,所述方法由所述第一节点执行,所述方法包括:将第一主存储器中的第一存储器位置中的一个或多个存储器地址映射到第二主存储器中的第二存储器位置中的一个或多个存储器地址;由所述第一节点上的第一处理器执行将更新数据存储到第一主存储器的第一存储器位置中的存储指令,其中,所述存储指令是与特定执行线程有关的一组程序指令的一部分;使所述存储指令俘获,这使第一处理器暂停执行所述一组程序指令并且开始执行一组俘获处理指令;由所述处理器执行所述一组俘获处理指令,其中,执行所述一组俘获处理指令使得:基于所述映射,将所述更新数据传播到第二节点以存储在第二主存储器的第二存储器位置内;以及由所述第一处理器重新开始执行所述一组程序指令。8.根据权利要求7所述的方法,其中,所述方法还包括:在执行所述一组俘获处理指令时,所述第一处理器:将所述更新数据存储到第一主存储器的第一存储器位置中;并且其中,使所述更新数据传播到第二节点包括:将所述更新数据存储到存储缓冲器中以供传播到第二节点。9.根据权利要求7所述的方法,其中,使所述更新数据传播到第二节点包括:将所述更新数据存储到存储缓冲器中以供传播到第二节点。10.根据权利要求9所述的方法,其中,将所述更新数据存储到存储缓冲器中以供传播到第二节点包括:确定所述存储缓冲器是否包含目的地为第二主存储器的第二存储器位置的现有的更新数据;以及响应于确定所述存储缓冲器包含目的地为第二主存储器的第二存储器位置的现有的更新数据,将所述更新数据与所述存储缓冲器中的现有的更新数据合并。11.根据权利要求9所述的方法,还包括:在重新开始执行所述一组程序指令之后,以及在执行所述一组程序指令时,所述第一处理器:从所述存储缓冲器检索所述更新数据;以及使所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内。12.根据权利要求9所述的方法,还包括:第二处理器从所述存储缓冲器检索所述更新数据;并且所述第二处理器使所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内;其中,所述第二处理器能够为第一处理器或第一节点上的另一个处理器。13.根据权利要求12所述的方法,其中,所述第一节点包括第一协处理器,所述第二节点包括第二协处理器,并且其中,使所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内包括:所述第二处理器将一个或多个指令提供给第一协处理器,使得第一协处理器与第二协处理器进行交互以使所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内。14.根据权利要求9所述的方法,所述分布式系统还包括第三节点,其中,所述第三节点具有第三主存储器,其中,所述第二主存储器中的第二存储器位置也镜像在第三主存储器中的第三存储器位置中,并且其中,所述方法还包括:第二处理器从所述存储缓冲器检索所述更新数据;并且所述第二处理器使:所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内;以及当前存储在第三节点的第三主存储器的第三存储器位置中的数据失效;其中,所述第二处理器能够为第一处理器或第一节点上的另一个处理器。15.根据权利要求14所述的方法,其中,所述第一节点包括第一协处理器,所述第三节点包括第二协处理器,并且其中,使当前存储在第三节点的第三主存储器的第三存储器位置中的数据失效包括:所述第二处理器将一个或多个指令提供给第一协处理器,使得第一处理器与第二协处理器进行交互以使当前存储在第三主存储器的第三存储器位置中的数据失效。16.根据权利要求9所述的方法,还包括:第二处理器从所述存储缓冲器检索所述更新数据;并且所述第二处理器使:与第二主存储器的第二存储器位置相关联的目录条目被锁定,其中,所述目录条目存储在第二节点上;和所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内;以及所述目录条目被解锁;其中,所述第二处理器能够为第一处理器或第一节点上的另一个处理器。17.根据权利要求9所述的方法,其中,所述分布式系统还包括第三节点,其中,所述第三节点具有第三主存储器,其中,所述第二主存储器中的第二存储器位置也镜像在第三主存储器中的第三存储器位置,并且其中,所述方法还包括:第二处理器从所述存储缓冲器检索所述更新数据;并且所述第二处理器使:与第二主存储器的第二存储器位置相关联的目录条目被锁定,其中,所述目录条目存储在第二节点上,并且其中,所述目录条目中的信息指示第三节点当前是第二主存储器的第二存储器位置的有效共享者;所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内;存储在第三节点的第三主存储器的第三存储器位置中的数据失效;所述目录条目中的信息更新为使得所述信息不再指示第三节点为第二主存储器的第二存储器位置的有效共享者;以及所述目录条目被解锁;其中,所述第二处理器能够为第一处理器或第一节点上的另一个处理器。18.根据权利要求7所述的方法,其中,所述方法还包括:在执行所述一组俘获处理指令时,所述第一处理器:将所述更新数据存储到第一主存储器的第一存储器位置中;并且其中,使所述更新数据传播到第二节点包括:使所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内。19.根据权利要求7所述的方法,其中,所述方法还包括:在执行所述一组俘获处理指令时,所述第一处理器:使当前存储在第一主存储器的第一存储器位置中的数据失效;并且其中,使所述更新数据传播到第二节点包括:使所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内。20.一种用于在分布式计算系统中使用的第一节点,所述第一节点包括:第一主存储器,其中,所述第一主存储器中的第一存储器位置中的一个或多个存储器地址被映射到所述分布式计算系统的第二节点上的第二主存储器中的第二存储器位置中的一个或多个存储器地址;一组俘获处理指令;和包括第一处理器的一个或多个处理器,所述第一处理器可操作为执行从第一主存储器的第一存储器位置加载数据的加载指令,其中,所述加载指令是与特定执行线程有关的一组程序指令的一部分,并且其中执行所述加载指令包括确定第一主存储器的第一存储器位置中的数据是否是有效的,并且响应于确定第一主存储器的第一存储器位置中的数据是无效的,使所述加载指令俘获,这将使第一处理器暂停执行所述一组程序指令,并且开始执行所述一组俘获处理指令;并且其中,所述一组俘获处理指令在被第一处理器执行时将使得第一处理器:基于所述映射使得有效数据从第二主存储器的第二存储器位置获得并且存储到第一主存储器的第一存储器位置中;以及使得有效性指示符更新为指示第一存储器位置中的数据是有效的;以及使得所述一组程序指令的执行重新开始。21.根据权利要求20所述的第一节点,其中,所述第一节点还包括第一协处理器;并且其中,所述一组俘获处理指令在被第一处理器执行时通过将一个或多个指令提供给第一协处理器来使得第一处理器从第二主存储器的第二存储器位置获得有效数据并且将其存储到第一主存储器的第一存储器位置中;并且其中,所述第一协处理器可操作为通过经由与第二节点上的第二协处理器的交互从第二主存储器的第二存储器位置获得有效数据,并且将所述有效数据存储到第一主存储器的第一存储器位置中来响应所述一个或多个指令。22.根据权利要求20所述的第一节点,其中,所述一组俘获处理指令在被第一处理器执行时使第一处理器进一步使得:与第二节点的第二主存储器的第二存储器相关联的目录条目被锁定,其中,所述目录条目存储在第二节点上;所述目录条目中的信息更新为指示第一节点是第二主存储器的第二存储器位置的有效共享者;以及所述目录条目被解锁。23.根据权利要求20所述的第一节点,其中,所述第一节点还包括存储缓冲器;并且其中,所述一组俘获处理指令在被第一处理器执行时将使第一处理器进一步使得:更新数据从所述存储缓冲器获得,其中,所述更新数据意图存储在第二节点的第二主存储器的第二存储器位置中,但是尚未传播到第二节点;和所述更新数据存储到第一主存储器的第一存储器位置中。24.根据权利要求20所述的第一节点,其中,所述第一节点还包括存储缓冲器;并且其中,所述一组俘获处理指令在被第一处理器执行时,在使有效数据从第二主存储器的第二存储器位置获得并且存储到第一主存储器的第一存储器位置中之前,将使第一处理器使得:更新数据从所述存储缓冲器获得,其中,所述更新数据意图存储在第二节点的第二主存储器的第二存储器位置中,但是尚未传播到第二节点;以及所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内以产生表示有效数据的更新的一组数据。25.一种用于在分布式计算系统中使用的第一节点,所述第一节点包括:第一主存储器,其中,所述第一主储存器中的第一存储器位置中的一个或多个存储器地址被映射到所述分布式计算系统的第二节点上的第二主存储器中的第二存储器位置中的一个或多个存储器地址;一组俘获处理指令;和包括第一处理器的一个或多个处理器,所述第一处理器可操作为执行存储指令以将更新数据存储到第一主存储器的第一存储器位置中,其中,所述存储指令是与特定执行线程有关的一组程序指令的一部分,并且其中,所述第一处理器包括电路系统,所述电路系统可操作为使所述存储指令俘获,这将使第一处理器暂停执行所述一组程序指令并且开始执行所述一组俘获处理指令;并且其中,所述一组俘获处理指令在被第一处理器执行时将使第一处理器:基于所述映射使所述更新数据传播到第二节点以存储在第二主存储器的第二存储器位置内;和重新开始执行所述一组程序指令。26.根据权利要求25所述的第一节点,其中,所述第一节点还包括存储缓冲器;其中,所述俘获处理指令在被第一处理器执行时将进一步使第一处理器:将所述更新...

【专利技术属性】
技术研发人员:P·N·洛文斯坦因J·G·约翰逊A·凯瑟噶玛Z·拉多维奇
申请(专利权)人:甲骨文国际公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1