分散存储型多处理机系统及故障恢复方法

文档序号:6411887阅读:189来源:国知局
专利名称:分散存储型多处理机系统及故障恢复方法
技术领域
本发明涉及大规模科学技术计算和数据库处理等中所用的分散存储型多处理机系统,特别地,涉及系统总体高可靠化的分散存储型多处理机系统。
作为使计算机高度可靠的技术之一,有检查点/重新运行方式,例如,作为使计算机网络中使用的服务计算机高可靠化的技术而采用。
图26是示出检查点/重新运行方式的计算机的动作基本原理的概念图。检查点/重新运行方式的计算机中,在通常的数据处理的空闲时间,一般定期地取得检查点。在这里所说的检查点是能够再起动状态的点。
而且,如果硬件(HW)发生故障时,例如,在复位发生故障的HW机器等除去故障原因的基础上,在最终取得的检查点上重新运行系统,然后使系统再次起动。这就是检查点/重新运行方式的计算机的基本原理。与把计算机完全初始化相比,具有几乎不存在服务中断的优点。
但是,用高速信道连接众多节点,使得在各计算机中分散进行大规模科学技术计算和数据库处理的分散存储型多处理机系统正在普及。这种系统中,节点数可有几百-几千个,如果在某个节点发生故障,就需要停止整个系统从系统的初始化开始修复,或者暂时不能使用例如故障节点担负的功能。
分散存储型多处理机系统总体的可靠性(运转率)若假定某节点的故障不对其它节点的可靠性带来影响。则以各节点的可靠性(运转率)之积表示。例如,取各节点的运转率为99.99%,节点数为1024,则系统的运转率为90.27%,若增加节点数,则总体的可靠性(运转率)的恶化将不可忽视。
于是,作为使分散存储型多处理机系统的可靠性(运转率)提高的方法之一,考虑作为各节点使用检查点/重新运行方式的计算机,提高各节点的可靠性(运转率)。例如,若取各节点的运转率为99.999%,节点数为1024,则系统的运转率为98.98%。
这样,作为分散存储型多处理机系统中的各节点采用检查点/重新运行方式的计算机时,存在使用了信道的节点间的数据通信(以后称为“节点间通信”)迟缓的问题。即,因为在检查点/重新运行方式的计算机中,一般关于对计算机外部的输出请求,要把实际输出该请求延迟到取得下一个检查点之后。
图27示出了在以往的检查点/重新运行方式的分散存储型多处理机系统中的2个节点(计算机A、计算机B)之间进行数据通信时的处理过程。如图示那样,检查点/重新运行方式计算机A在时刻T1取得了检查点CKP1后,接收另一个计算机B发出的处理请求(a),立即进行对于请求(a)的处理,在把应答(b)返回到计算机B后的时刻T2发生了故障时,计算机A返回到快到时刻T1前面的检查点CKP1。另一方面,尽管计算机A返回到不接收来自计算机B的处理请求(a)的状态,但由于计算机B已经接收了来自计算机A的对于处理请求(a)的应答(b),因此,两者之间产生了矛盾。
以往的检查点/重新运行方式的计算机中,为避免这种不理想状态,对于通信输出等对外部带来影响的处理,不是立即输出那样的处理应答,而是写到下一个检查点的获取结束后才开始通信输出处理。
即,如图28所示,计算机A进行对于来自计算机B的处理请求(a)的处理,作成用于返回计算机B的应答的请求块,但使通信输出处理延迟。计算机A如图29所示,在时刻T3,在下一个检查点的获取结束的时刻对于计算机B实际上返回应答。其后,即使HW发生故障,也由于从在时刻T3取得的检查点CKP2开始的再起劝,因此,对于计算机B的应答(b′)确实地传递给计算机B。
另外,如图30所示,计算机A在成为时刻T3之前,在时刻T2中发生了HW的故障FLT1的情况下,成为从在时刻T1取得的检查点CKP1开始的再起动。这时,计算机A与消除接收了来自计算机B的处理请求(a)的情况相反,存储着计算机B发送出计算机A接收了处理请求(a)的信息。然而,这时从计算机B即使经过某个固定时时仍未从计算机A返回对于处理请求(a)的应答中,就能够检测出计算机A的异常。即,依据计算机B再次发送处理请求(a)等的处理,能够恢复到正常的状态。
从而,若在分散存储型多处理机系统的各节点上采用以往的检查点/重新运行方式的计算机,则对于节点通信,不得不平均延迟检查点获取间隔的一半时间左右。
检查点获取间隔因系统而多种多样,而由于检查点获取自身就需要某种程度的时间,故即使再短实际也不短于几毫秒。从而,一般即使保守的估计,节点间通信平均也将伴有1毫秒以上的延迟时间。
另一方面,分散存储型多处理机系统中节点通信的时间,在应用程序直接控制硬件时是几十微秒左右。
从而,若作为节点单纯地采用检查点/重新运行方式的计算机,则在原本几十微秒左右的数据通信中伴有1毫秒以上的延迟时间,在节点间频繁发生数据通信的情况下,将招致系统总体性能的显著下降。
本发明是考虑了以上情况而完成的,目的在于提供能够把在节点上使用了检查点/重新运行方式的计算机时的节点间通信高速化的分散存储型多处理机系统。
本发明在经由信道连接了2个以上的至少包含处理器和主存储器的节点并且在经过上述信道进行节点间通信的分散存储型多处理器系统中,具有下述的特征,上述节点具有为了能够进行故障时的再执行,在某时刻点取得关于自节点的检查点,在故障发生时从前面获取的检查点再次开始数据处理的功能,抑制对于经过上述信道的其它节点的数据发送,完成经由上述信道发送来的数据的接收,在上述信道中不存在发送中的数据的状态下,和其它所有的节点同步地进行开始基于上述功能的检查点获取。
由此,取得检查点时,在不存在经由信道正在传送的数据的状态下,对于构成分散存储型多处理器系统的所有节点,同步地获取检查点。而且,在发生了某种故障时,对于信道再现不存在正在传送的数据的状态,对于各节点,在前面取得的检查点上重新运行后再次起动数据处理。
即,在分散存储型多处理器系统总体取得检查点期间,通过不进行经由信道的节点间的通信,能够不必保存信道的状态。
另外,上述节点是这样的节点,保持和所有其它节点同步取得的检查点直到在所有的节点完成下一个检查点的获取为止,在某节点发生故障时在得到下个检查点之前与其它所有节点同步地被通知发生了故障,上述节点的特征在于不是把通常的数据处理所伴有的节点间数据发送延迟到下个检查点获取之后,而是立即实行。
由此,各节点进行节点间的数据传送而不延迟到下个检查点,而由于除此之外的数据发送延迟到下个检查点获取之后,因此,节点间被传送的数据即使故障发生前的数据处理时和伴随使故障发生进行了重新运行后的数据处理时不相同,其影响在未结束获取下一个检查点期间也仅停留在构成分散存储型多处理器系统的节点内。
从而,能够不延迟地进行经由信道的节点间的通信。
还有,特征还在于在上述的节点的处理器中设置可写回的超高速缓冲存储器,在上述主存储器上取得上述检查点,上述节点在和所有其它节点同步地进行的检查点获取之前,与通常的数据处理并行,和所有其它的节点同步地把存在于上述超高速缓冲存储器中的涂改数据的一部分强制地写回到上述主存储器中。
一般在具有可写回的高速缓冲存储器的处理器中,在主存储器上取得检查点的方式的检查点/重新运行方式的分散存储型多处理器系统的情况下,检查点时间的大半部分消耗在把存在于超高速缓冲存储器中的涂改数据写回主存储器的处理中。为缩短这一时间,通过强制地把通常的数据处理中存在于超高速缓冲存储器中涂改数据写回主存储器中,则在进行检查点获取之前,能够减少存在于超高速缓冲存储少器中的涂改数据量。
还有,特征还在于上述节点的每一个在成为某时刻的时刻点开始上述检查点的获取,使得和其它所有节点同步地进行上述检查点的获取。
这样,各节点通过预先约定在成为某时刻的时刻点同时开始检查点的获取,则能够不必要相互通知开始检查点的获取,由此可以减轻全部节点取得同步的额外开销。
还有,特征还在于上述节点的每一个对应于树构造的某个节点,对于具有基于该对应的关系的节点进行用于取得开始检查点获取的同步的数据发送,检测到应该开始检查点获取的节点对于母节点发送上述检查点获取开始请求,从子节点接收了上述检查点获取开始请求的节点向母节点发送上述检查点获取开始请求,由此,依次地发送上述检查点获取开始请求,直到根节点,从子节点接收了上述检查点获取开始请求的根节点对于所有子节点发送检查点获取指令,从母节点接收到上述检查点获取指令的节点向子节点发送上述检查点获取指令,由此,对于所有节点给与检查点获取指令,在所有节点取得开始检查点获取的同步。
由此,若在某节点检测出应该开始检查点获取,则通过树构造的路径,检查点获取开始请求首先通知给根节点,然后从根节点对于子节点给与检查点获取指令,由此,依次地对所有节点通知了检查点获取指令。
还有,特征还在于上述节点的每一个对应于树构造的某个节点,对于具有基于该对应的关系的节点进行用于取得开始检查点获取的同步的数据发送,检测出应该开始检查点获取的节点,对于母节点及所有子节点发送检查点获取指令,接收到上述检查点获取指令的节点对于母节点及所有子节点中除去发送来上述检查点获取指令的节点之外的全部节点发送上述检查点获取指令,在所有节点取得开始检查点获取的同步。
由此,若在某节点检测出应该开始检查获取,则通过树构造的路径,开始检查点获取的指令请求传送到所有的节点。这时,即使从2个以上节点发出开始检查点获取的指令请求的情况下,从2个以上节点接收了开始检查点获取的指令请求的节点通过舍弃晚接收的一方,能够避开重复发送请求。
还有,特征还在于,在经由信道连接2个以上的至少包含处理器和主存储器的节点并且经由信道进行节点间通信的分散存储型多处理器系统中,上述节点具有为了使故障发生时的再实行成为可能,在某些时刻获取关于自节点的检查点,在故障发生时从前面取得到检查点再次开始数据处理功能;控制上述信道使得依据上述功能采集检查点之际,自节点成为不可能接收数据的状态的第1通信装置、确认对方节点是否为不可数据接收伴随通常的数据处理的节点间的数据发送的第2通信装置,把和所有其它节点同步取得的检查点保持在所有的节点中直到结束下一个检查点获取,在某个节点发生故障时,在下一个检查点获取之前,和其它所有的节点同步地通知故障发生,立即执行伴随通常的数据处理的节点间的数据发送而不必延迟到下一个检查点获取之后。其结果,在由上述第2通信装置确认了对方节点为不可接收数据时,成为待机状态直到能够发送数据。
由此,各节点在开始检查点获取时控制信道使得成为不可接收数据的状态,在把数据向其它节点发送时,由于确认对方节点是否为可接收数据,因此,开始了检查点获取的节点没有必要依据新数据的接收,重新进行检查点的获取。
还有,特征还在于在经由信道连接2个以上至少包含处理器和主存储含器的节点并且经由上述信道进行节点间通信的分散存储型多处理器系统中,上述节点具有为使故障发生时的再实行成为可能,在某时刻获取关于自节点的检查点,在故障发生时从前面获取的检查点再次开始数据处理的功能,把和其它所有节点同步获取的检查点保持在所有节点中直到结束检查点获取,在某节点发生故障时,在下一个检查点获取之前和其它所有节点同步地被通知故障发生,在依据上述功能再次开始检查点获取后,在从其它节点接收了伴随通常的数据处理的数据间的数据发送时,是故障发生的通知时,从前面获取的检查点再次开始数据处理,是其它的通知时,重新进行检查点获取。
由此,不一定必须在所有节点上确认了检查点获取开始请求到达之后,开始在自节点的检查点获取,可以不确认开始请求而开始检查点获取。
还有,特征还在于上述节点的每一个对应于树构造的某个节点,对于具有基于这种对应的关系的节点进行有关结束检查点获取的同步的数据发送,从所有子节点接收到检查点结束准备完毕的通知的节点向母节点发送检查点结束准备完毕,从所有子节点接收到检查点结束准备完毕的通知的根节点对于所有子节点发送检查点结束指令,同时结束检查点获取,再次开始通常的数据处理,在从母节点接收了检查点结束指令时,或者从已经再次开始通常的数据处理的节点接收到通常的数据通信时,节点对于所有子节点发送检查点结束指令的同时,结束检查点获取,再次开始通常的数据处理。
这样,检查点结束准备完毕的通知从(树)的叶节点传到根节点。而且,根节点在从所有子节点接收到检查点结束准备完毕的通知的时刻点能够获取系统总体的检查点。接着,从根节点向叶节点传送检查点结束指令,由此,在各节点再次开始通常的数据处理。
还有,特征还在于上述节点的每一个对应于树构造的某个节点,对于具有基于这种对应的关系的节点进行用于取得检查点获取结束的同步的数据传送,上述各节点在开始检查点获取的时刻成为不可接收来自其它节点的数据的状态,在即将结束检查点获取之前,成为可接收来自其它节点的数据的状态,同时再次开始通常的数据处理,从所有子节点接收到检查点结束准备完毕的通知的节点向母节点发送检查总结束准备完毕,从所有子节点接收到检查点结束准备完毕的通知的根节点对于所有子节发送检查点结束指令,同时,结束检查点获取,废弃以前的检查点,在从母节点接收到检查点结束指令时,或者从已经开始通常的数据处理的节点接收到通常的数据通信时,节点对于所有子节点发送检查点结束指令,同时结束检查点获取,废弃以前的检查点。
这样,由于能够向前倒、再开始通常的数据处理,因此能够更有效地实现系统总体性能的提高。
这样,不是使用信道,各节点一起再次开始通常的数据处理或者进行前一个检查点的数据的废弃,而是通过设立不同于信道的制动同步机构,能够不必进行用于同步的节点间通信就能够进一步提高性能。
还有,特征还在于;通过在上述母节点是否在一定时刻之前接收到来自所有子节点的检查点获取结束准备完毕的通知,检测故障。
这样,在关于节点的故障方面,也包括从其它节点看来该节点成为无应答状态。这时成为即使经过某预定时间根节点中仍未从所有子节点接收到检查点获取的结束通知的状态,于是,对于所有子节点,如果需要,进行处理器(cpu)的初始化,由此从这种无应答状态退出,同时,通过对前一个检查点指令重新运行,作为系统总体就能够从故障发生前的状态再次开始通常的数据处理。
还有,特征还在于上述各节点具有设定依据上述功能获取检查点的获取节点或为不进行检查点获取的非获取节点的装置,用上述装置被设定在上述获取节点的节点在检查点获取时抑制对于经由上述信道的其它节点的数据传送,结束接收经由上述信道传送来的数据,用上述装置被设定在上述非获取节点的节点,抑制对于经由上述信道的获取节点的数据传送,在信道上不存在对于获取节点的发送中的数据的状态下,和其它所有节点同步进行,在某个上述获取节点发生了故障时,上述非获取节点抑制对于上述信道的数据发送,结束接收经由上述信道发送来的数据,在使上述信道中不存在通信中的数据的状态下,上述获取节点从前一个获取的检查点再次开始数据处理。
由此,把分散存储型多处理器系统内多个节点分组,在各个组实行不同应用(例如数据库系统、决策支援系统等)时,能够选择、设定对应于按节点单位实行的应用的检查点获取的有无(获取节点、非获取节点)。这时,根据节点间通信在获取节点或非获取节点的某个之间进行,控制数据传送。
还有,特征还在于把上述节点分组,在每个组中实行不同的应用,在属于各个组的每个节点上获取检查点,在属于某个组的各节点获取检查点之际,属于其它组的节点经由上述信道进行对其它节点的数据发送,属于不同组的节点间的数据间通信延迟到下一个检查点获取之后,在属于某个组的某个节点中发生故障之际,属于其它组的所有节点抑制对上述信道的数据发送,结束接收经由上述信道发送来的数据,使上述信道成为没有通信中的数据的状态,属于发生了故障的组的所有节点分别从前一个获取的检查点再次开始数据处理。
由此,由于通过把分散存储型多处理器系统内的多个节点按各实行的应用分组,在每个组进行关于检查点获取的和其它节点的同步控制,因此,减轻了检查点所需要的处理负担(额外开销)。其中,进行控制使得不同组的节点间的经由信道的数据发送在组间不产生不匹配。
图1是示出本发明实施形态的检查点/重新运行方式的分散存储型多处理器系统结构的框图。
图2是用于说明使用了BIB(Before Image Buffer(前缘缓冲器))的数据保存和重新运行的说明图。
图3是示出实施形态中节点间通信的发信侧动作的流程图。
图4是示出实施形态中节点间通信的接收侧动作的流程图。
图5是用于说明实施形态中即使不延迟地进行节点间通信也不存在问题的状况的说明图。
图6是用于说明实施形态中即使不延迟地进行节点间通信也不存在问题的状况的说明图。
图7是用于说明各节点的cup1-1、2-1…N-1一起进行检查点获取动作的流程图。
图8是示出多个节点1、2、…N中的通常的数据处理和检查点获取的时序图。
图9是示出逻辑地对应于各节点的2元树(Binary Tree)图。
图10示出BIB表的一例。
图11示出2个BIB计数器和2个BIB的对后关系。
图12示出在多处理器系统中进行的检查点获取处理总体的流程。
图13是示出检查点获取处理的顺序的流程图。
图14是用于说明对检查点重新运行并再起动的方法的流程图。
图15是用于说明障碍发生时的节点间通信的2元树图。
图16是用于说明为同步开始检查点获取的节点间通信的2元树图。
图17是用于说明接收了检查点获取的开始指令请求时的节点动作的流程图。
图18是用于说明在节点间使开始检查点获取同步的动作的流程图。
图19是示出节点间通信的发信侧动作的流程图。
图20是用于说明在节点间使开始检查点获取同步的动作的流程图。
图21是用于说明节点间通信的接收处理的流程图。
图22是示出2阶段检查点方式的动作的时序图。
图23是示出为了节点实施2阶段检查点的超高速缓冲存储器装置的控制方法的流程图。
图24是示出对于众多节点A-P进行分组的概念图。
图25是示出对于众多节A-P进行分组的概念图。
图26是示出检查点/重新运行方式的计算机的动作基本原理的概念图。
图27示出立即执行在2个节点(计算机A、计算机B)间进行数据通信时的通信处理请求时的不理想状况例。
图28示出延迟在2个节点(计算机A、计算机B)间进行数据通信之际的通信处理请求例。
图29示出采集使2个节点(计算机A、计算机B)间进行数据通信时的通信处理请求延迟后的新检查点例。
图30示出使2个节点(计算机A,计算机B)间进行数据通信之际的通信处理请求延迟后发生故障的情况例。
发明的实施形态以下,参照


本发明的实施形态。图1是示出第1实施形态的检查点/重新运行方式的分散存储型多处理器系统的结构的框图。示于图1的分散存储型多处理器系统具有多个(N个)节点(计算机)1,2,…,N,用通信开关10(信道)相互连接。
各节点1,2,…,N具有cpu1-1、2-1,…,N-1,通信转接器1-2、2-2、…、N-2,主存储器1-3、2-3、…、N-3,BIB(Before Image Buffer)1-4、2-4、…、N-4,超高速缓冲存储器1-5、2-5、…、N-5。各节点的转接器2-1、2-2、…、N-2和通信开关10连接。
各节点1,2,…,N为了能够进行故障发生时的再次执行,具有定期地取得对于自节点的检查点,并在故障时从前一个取得的检查点起再次开始数据处理的功能,为实现该功能,设置了被称为BIB1-4、2-4、…、N-4的特殊硬件机构。
另外,图1所示的第1实施形态中的结构内,各节点1,2,…,N具有的CPU数分别为1个,但也可以是1个节点具有的CPU数为2个以上的多处理器构造。还有,BIB是实现检查点/重新运行方式的计算机的一种装置,也可适用其它实现法。
另外,即使节点的CPU数和CPU种类,主存储器的容量、操作系统的种类等不同也无关紧要。不过,从管理系统的观点出发,希望各节点是相同的硬件结构,同一种操作系统。
图2是说明在图1的节点1、2、…、N中使用了称为BIB(BeforeImage Buffer)的对数存储器的数据保存和重新运行的说明图,示出了更新主存储器的数据时,把发生了更新的地址和更新前的数据保存在BIB(图2(a))、使用BIB把主存储器恢复(重新运行)为原状态的情况(图2(b))。
首先,BIB4在CPU1更新超高速缓冲存储器5中的数据时,通过监视为了维护输出到系统总线b上的超高速缓冲存储器的相关性的总线指令,检测被改写了哪个地址的数据。BIB读出主存储中有改写请求的地址的数据(尚未被更改的数据),把它们的地址和数据组保存在缓冲器中。
例如,图2(a)中,当CPU1在超高速缓冲存储器上把X写入100地址时,BIB 4检测出在100地址上进行了写入动作,从主存储器读出100地址的内容(A),在BIB 4中存储100地址的原数据A。
然后,在发生故障等而把主存储器重新运行为原状态时,如图2(b)所示,把超高速缓冲存储器5的内容无效化,使用保存在BIB 4中的地址和原来的值把主存储器的内容恢复为原状态。一旦主存储器的内容返回到前一检查点的状态,则清除BIB,恢复到通常的处理。
节点1,2,…,N在各个主存储器1-3、2-3、…、N-3上获取检查点,而且,通过在BIB上保存对于来自检查点的主存储器1-3、2-3、…、N-3的更新经历,则能够进行发生故障时的主存储器的重新运行。
节点1,2,…,N上在主存储器内取得新检查点的顺序如下。
(A1)把CPU的上下文(寄存器的值)保存在主存储器上。
(A2)把在超高速缓冲存储器上被更新了的数据写回主存储器(快速)。
(A3)清除BIB的内容,结束检查点处理返回到通常的数据处理。
这里,(A3)的处理意味着检查点获取的结束,在未实行(A3)时而发生了故障的情况下,对一个即将在前面的检查点进行重新运行。另一方面,在执行了(A3)后发生了故障时,对该检查点(即(A3)结束时刻)进行重新运行。
在系统中发生了故障时,对前一个检查点进行重新运行,再起动的顺序如下。
(B1)把超高速缓冲存储器无效化。
(B2)使用记录在BIB上的地址和更新前的数据值把主存储器恢复到前一个检查点。
(B3)通过把保存在主存储器的CPU的上下文复原到CPU中,再次起动。
接着,说明节点间通信。在第1实施形态中,从某节点(发信节点)向其它节点(接收节点)的信息传送按以下顺序进行。
(C1)在发信节点的主存储器上生成信息。
(C2)起动发信节点的通信转接器。
(C3)依据通信开关10进行路由选择。
(C4)起动接收节点的通信转接器。
(C5)在接收节点的主存储器上存储信息。
在此,说明应用程序和节点间通信控制部分(第1实施形态中,作为系统程序的一部分实现)的联锁。
在此,为使说明简化,将节点1作为发送侧,将节点N作为接收侧进行说明。
图3是示出节点间通信的发信侧动作的流程图,应用程序一旦在主存储器1-3上生成向其它节点发信的发信消息(步骤A1),则实行系统调用,调用系统程序中的节点间通信控制单元(步骤A2)。
节点间通信控制单元使CPU1-1成为禁止中断(步骤A3),在通信转接器1-2的控制寄存器中设置用于把发送信息发送给指定节点N的控制信息,起动通信转接器(步骤A4)。然后,解除CPU的中断禁止(步骤A5)。
使CPU禁止中断在一般的I/O机器的控制中是为了进行正确的动作而广泛进行的。而在本发明这样使用检查点/重新运行方式的计算机的结构中还具有为防止取得检查点的意义。
一般若在操作I/O设备的寄存器过程中进行检查点处理,则发生故障时从该I/O设备的寄存器操作过程中再起动,故不能保证动作。不在I/O机器的寄存器操作过程中开始检查点处理本身并不是本发明的特征,在以往的检查点/重新起动方式的计算机中已经采用。
最后,依据通信转接器1-2的发信结束,确认完成了对于其它节点的发信处理(步骤A6),节点间通信控制单元把请求了信息发送的应用程序(发信请求处理)置于可执行状态(步骤A7)。
图4是示出节点间通信的接收侧动作的流程图。首先,如果通信转接器N-2检测到来自其它节点1的信息接收请求,则产生中断,开始节点间通信控制单元中的处理(步骤B1)。
节点间通信控制单元将信息存储区的接收缓冲器分配在主存储器N-3上(步骤B2),在控制寄存器上设置控制信息使得在接收缓冲器上存入由通信转接器N-2接收的信息,然后,起动通信转接器。
若通信转接器N-2中的接收结束(步骤B4),则节点间通信控制单元检查所接收的信息是否为通知其它节点中发生故障的信息(步骤B5)。
这里,接收的信息是通知其它节点中发生故障的信息时(步骤B5的Yes),则跳到障碍处理单元,所有节点在前一个检查点重新运行,进行用于再起动的处理。
另一方面,在接收的信息是通知发生故障的信息以外,即,是关于一般的数据处理的信息时(步骤B5的No),如果应接收其信息的应用程序为等待信息接收状态,则把该应用程序置为可执行状态。
在本发明的分散存储型多处理器系统中,如果发生节点间通信的请求,则不等到下个检查点获取结束就立即进行节点间通信,由此使节点间通信高速化。
为能做到这一点,需要对于发生的情况进行处理。
本发明的第1实施形态中,通过设置如下的结构和方法(D1)-(D4),使得能够不等到下个检查点获取结束就立即进行节点间通信。
(D1)所有节点同步地获取检查点(关于不完全同步实现的方法在后述的第3实施形态,第4实施形态中说明)。
(D2)在某个节点发生故障时,在所有节点结束下一检查点获取(清除BIB之前)之前,通知发生了故障,所有节点在前一个检查点重新运行。
(D3)对于节点间通信以外的I/O机器的输入输出和与其它计算机(例如,实行不同的应用程序的其它节点组中的计算机)的通信请求延迟到下一检查点获取之后进行。
(D4)获取检查点的过程中,信道处于不存在传送中的数据的状态。即,获取检查点时,抑制对于经由通信开关10的其它节点的数据发送,并且结束来自经由通信开关10的其它节点的数据接收。
依据(D4)的方法,即使在某个节点发生故障,所有节点同步地,分别在前一检查点重新运行的情况下,对于通信开关10也没有必要进行任何特别的处理,或者仅复位通信开关10即可。
下面,依据上述的(D1)-(D4)的构成,说明通过立即执行节点间通信的请求使节点间通信高速化的例子。这里,使用2个例(第1侧、第2例)说明即使不延迟地进行节点间通信也没问题的情况。
第1例如图5所示,在时刻CKPO,所有节点1,2,3取得检查点后,在故障发生前的节点间通信中从节点1向节点2发送信息,在节点2,根据该信息从节点2向节点3发信息。
设在从节点2向节点3发出信息后,在时刻FLTo节点1发生了故障。这时,在各节点1、2、3结束检查点获取之前,即清除BIB的内容之前,检测到在节点1发生了故障,对时刻CKPo时的检查点进行重新运行。
即,在所有节点1、2、3中同步地获取检查点,而且在某个节点发生故障时,所有的节点在同一时刻获取的检查点处重新运行,由此,即使时刻FLTo之后进行节点间通信也不产生矛盾。从而能够不使节点间通信进行等待地实施节点间通信。
第2例如图6所示,这是在故障发生前的节点间通信中从节点1向节点2发送信息,在节点2根据其信息向I/O机器(这里是磁盘装置)进行写入的情况。
本发明中,虽然立即进行节点间通信,但向盘的写入仍要等到检查点的处理结束。这里,在某一节点发生故障时,通过所有节点在同一时刻取得的检查点重新起动,不从节点1发送信息,还有节点2中是不进行向盘写入的状态,因此,节点间不发生矛盾。
这样,本发明第1实施形态中,不延迟地进行节点间通信以及伴随节点间通信的各节点间的通常的数据处理,而关于对外存写的I/O机器的输入输出请求和与其它计算机(例如执行不同应用的其它节点组中的计算机)的通信在所有节点同步地取得检查点后进行其处理要求。由此,节点间通信和基于由该节点间通信的信息的通常数据处理如上述第1例,第2例所示,能够无延迟地进行。
下面,说明在第1实施形态中,在所有节点同步地一起取得检查点的方法。
作为开始检查点获取的定时,一般使用下面的任何一个。
(E1)经过一定时间(E2)BIB的残余容量降到某预定值以下(E3)被延迟的I/O请求数上升到某预定值以上等等。采用何种方式,或并用多种方式,可以根据系统的使用方法和BIB的容量决定。
第1实施形态中,设仅是(E1)经过一定时间时,各节点一起开始检查点的获取。由此,对于检查点的开始,没有必要进行用于在各节点间取得同步的节点间通信。
图7是用于说明各节点的CPU1-1、2-1、…、N-1一起进行检查点获取动作的流程图。还有,图8是示出多个节点1,2,…,N中通常的数据处理和检查点获取定时的流程图。
各节点进行通常的数据处理直到时刻T1(步骤C1)。其间,各节点间发生的节点间通信请求不延迟地立即执行。另外,从其它节点接收的信息不延迟地传送给应用程序。
一旦达到时刻T1,则各节点停止通常的数据处理的执行(步骤C2)。另外,时刻T1是以预先决定的某时刻为基准的预定时间后的时刻。
在时刻T1-T2,原则上不进行向其它节点的信息发送,而由于在CPU的中断禁止状态下进行通信转接器的起动(图3中的步骤A4),因此,来自在时刻T1前有请求的其它节点的信息发送可以在时刻T1过后接收(步骤C3)。然而,这样的信息发送也在时刻T2前结束。另外,从其它节点接收的信息存储在主存储器上的接收缓冲器中,而通过不把cpu给与到接收了信息的应用程序上,故防止开始通常的数据处理。
若达到时刻T2,则使cpu成为禁止中断(步骤C5)。这是为了防止cpu进行某个中断处理,而可靠地进行超高速缓冲存储器的清洗。
一旦达到时刻T2,则各节点作为一起取得检查点的一个环节,把cpu的上下文(寄存器的内容)保存到主存储器,清洗超高速缓冲存储器(步骤C6、C7)。然后,使cpu成为许可中断(步骤C8)。
最后,需要在所有节点同步地进行检查点处理的结束(BIB内容的清除)。即,由于取得检查点所需时间在所有节点并不相同,故在各节点各自进行BIB内容的清除时,若在所有节点清除BIB的内容之前发生了障碍等,则所有节点将不能够在同一检查点重新运行。
第1实施形态中,把分散存储型多处理器系统内的各节点与树形构造的各节(节点)建立对应关系,处于基于该对应的母节点和子节点的关系的节点之间通过节点间收发检查点结束准备完毕和检查点结束的通知(消息)取得同步。另外,检查点结束准备完毕表示成为超高速缓冲存储器结束并且能够清除BIB的内容前的状态。
这里,使逻辑上2元树(Binary Tree)的各节点(节)和系统中的各节点(计算机)11对应。
如图9(a)所示,把节点1对应于2元树的根节点,节点2,3对应成为节点1的子节点。一般,节点2n及节点2n+1作为节点n的子节点相对应。该对应是以节点的识别编号为基础逻辑地把各节点间建立对应的,不必要特别的硬件。
若在某个节点结束了超高速缓冲存储器的清洗,则成为cpu允许中断(步骤C8),等待接收来自2元树上子节点的检查点结束准备完毕的通知状态(步骤C9)。但在不具有2元树上子节点时不进行该处理。
若接收到来自子节点的检查点结束准备完毕的通知,则从2元树的子节点顺序地向母节点进行发信,在节点1接收到来自节点2及节点3的检查点结束准备完毕的通知的时刻,能够保让在所有节点超高速缓冲存储器清洗。
接着,节点1向全部子节点,即节点2及节点3发送检查点结束指令的通知,其信息这次如图9(C)所示,从2元树的母节点顺序地向子节点进行发送。
若某个节点向母节点发送了检查点结束准备完毕的通知,则成为等待接收来自母节点的检查点结束指令的通知的状态。在此,接收了来自母节点的检查点结束指令的通知的节点发送对于其子节点结束的检查点结束指令的通知(步骤C11、C12)。
另外,为了同步开始下一检查点的获取,需要确定时刻T11及时刻T12。这些时刻,节点1以图8中的时刻T13为基准,把其预定时间后的时刻决定为取得下一个检查点的时刻T1、T2,并且作为检查点结束指令的参数可以传送到各节点。
接收了检查点结束指令的节点清除BIB的内容(步骤13),再次开始通常的数据处理。
这样,第1实施形态中,通过把各节点与2元树的节点逻辑对应,按照所决定的顺序,即相应于母节点和子节点的关系的顺序传递检查点结束准备完毕或检查点结束的通知,能够对所有节点有效地进行检查点获取结束的同步。
例如,节点数为1023时,能够以向上信息传送9级和向下信息传送9级实现。
还有,还能够与子节点3个以上的一般树的节点相对应以代替使各节点与2元树的树构造的节点相对应。
另外,为了进一步提高性能,各节点在图7中的步骤C8结束的时刻,还能够边进行步骤C9-C12的处理边再次开始通常的数据处理。
为此,需要在未使检查点获取结束时,再次开始通常的数据处理的机构。
例如,节点在多处理器结构的情况下,可以通过设置2个BIB的结构实现。
还有,在单处理器时,也可以把BIB的适当范围的内容在重新运行时写回到主存储器。
还有,所有节点中在结束了检查点取得的时刻,各个处理器一起开始通常的数据处理的同步一般称为位垒同步。用硬件取得同步的机构能够用“接与”电路实现。通过具备使用“接与”的硬件,能够代替上述那样的使用节点间通信获取同步的方法。
这里,用图10-图13说明节点在多处理器的情况下,设置了2个BIB的结构的概要。为了决定各cpu应该使用哪个BIB,使用图10所示那样的BIB(记录)表。BIB表设在例如总线控制器(未图示)上。
图10所示,BIB表保持着cpu各个cpu编号和那些cpu现在使用着的BIB的编号(当前BIB编号)的关系。
这里,当前BIB编号“0”表示使用BIB6a,当前BIB编号“1”表示使用BIB6b。在系统开始时,设定为所有cpu的当前BIB编号表示“0”,使得全部的cpu使用BIB6a。
图11示出2个BIB计数器52a、52b和2个BIB6a、6b的关系。BIB计数器52a保持着指定BIBa的更新经历信息存储位置的指针,其指针值在每次更新经历信息写入BIB6a时,都从BIB6a的起始地址向最终地址增加1。BIB计数器52b保持着指定IBI6b的更新经历信息存储位置的指针,其指针值在每次更新经历信息写入BIB6b时,都从BIB6b的起始地址向最终地址增加1。
在通常的程序执行处理期间,各cpu在需要向主存储器写入时,对于总线控制器传送(1)cpu的ID(2)存储器的地址(3)存储器的数据总线控制器若检测到该写入请求,则从cpu的ID(cpu的编号)决定使用哪个BIB(在此设使用BIB6a),得到对应于该BIB6a的BIB计数器52a的值,把存储器地址和其存储器地址更新前的数据作为更新经历信息记录在对应于其计数器的BIB6a的位置上,而且更新主存储器。
然后,各cpu在用来自总线控制器的中断信号和查询处理检测到经过了预定时间、或者BIB6a的残余容量降低到预定量时,开始检查点获取处理。在检查点取得处理中,为复原各cpu内部状态所必要的寄存器的值以及超高速缓冲存储器内的数据中尚未反映在主存储器中的数据经由总线控制器写入到主存储器中。关于这时的更新经历和上述一样记录在BIB6a中。
至此结束了的各cpu为切换使用的BIB,把BIB表的当前BIB编号从“0”改写为“1”(这里设接着使用BIB6b),然后,立即再次开始通常的程序处理。
这样,按结束了检查点获取处理的cpu的顺序,通过把使用的BIB从至此为止使用的BIB切换为另一个BIB,能够不破坏至此为止使用的BIB的内容而再次开始通常的程序执行处理。由此,各cpu能够在结束了自身的检查点获取处理的时刻立即再次开始通常的程序执行处理,使系统总体的待机时间大幅度减少。
接着,参照图12说明检查点获取处理的总体流程。
现在,如图13所示,设cpu2a-2c并行动作,即各cpu2a-2c分别进行通常的数据处理(图12(1))。而且,设这时使用的BIB是BIB6a(图12(2))。
然后,在各cpu2a-2c的动作中BIB6a的残余容量降低到预先设定的预定量时(图12(3)),cpu2a-2c的每一个都检测到其意义,开始检查点处理(图12(4))。
该检查点获取处理的开始以及所需时间如上述,依据其检测定时以及检测时处理中的程序种类、超高速缓冲存储器的状态而不相同。
而各cpu2a-2c在自身的检查点处理结束时,切换使用的BIB,立即再次开始通常处理(图12的(5))。由此,对于再次开始通常的数据处理的cpu,开始向BIB6b的更新经历的采集(图12的(6))。
另一方面,在全部cpu2a-2c的检查点处理结束了之际(图12的(7)),进行BIB6a的复位,即废除在BIB6a中记录的更新经历。
接着,参照图13的流程图,说明各cpu实行的检查点获取处理的顺序。
各cpu当进行通常的数据处理时(步骤S1),在检测到记录中的BIB的残余容量降低到预先设定的预定量的情况下(步骤S2),开始检查点获取处理(步骤S3)。在该检查点获取处理中,包含cpu的各种寄存器的其cpu的内部状态(上下文)和未反映在主存储器中的超高速缓冲存储器的内容写入到主存储器中。接着,该cpu为切换使用的BIB,把BIB表中该当前BIB编号从“0”改写为“1”(步骤S4)。
随后,判断其cpu是否为结束了自身检查点获取处理的最后的cpu(步骤S5)。该判断通过参照BIB表,查询是否在未改写当前BIB编号的cpu来进行。如果全部cpu的当前BIB编号都已改写为新的编号,则该cpu是结束了检查点获取处理的最后的cpu。这种情况下,该cpu为了废除至今使用的BIB的内容,清除其BIB(步骤S6)。在该清除处理中,对应于该BIB的BIB计数器的指针值返回到“0”。随后,该cpu再次开始在检查点获取处理中所中断了的通常的程序执行处理(步骤S7)。
另外,不一定必须把2个存储器物理地作为BIB使用,也可以把1个物理存储器作为2个逻辑存储器(BIB)使用。
以上在第1实施形态中,说明了在所有节点同步获取检查点的方法以及在检查点获取之际由于不进行节点间通信而不必获取有关信道的检查点的情况。
以下,参照图15所示的流程图,说明在第1实施形态中,当某个节点发生故障时,所有节点对前一个检查点重新运行,再次起动的方法。
这里的前提是对于发生了故障的节点,通过在前面的检查点重新运行,能够再次起动通常的数据处理。对于某节点发生了故障,其节点陷入了完全不动作的状态,适宜的是复位分散存储型多处理器总体。
当检测出某个节点发生故障时或者从其它节点接收了发生故障的通知时(图4的障碍处理单元(步骤B6)),起动图15所示流程中执行的障碍处理单元,开始恢复处理。
首先,在本节点发生故障时,进行故障了的HW的复位等必要的故障恢复处理(步骤D1)。
接着,向2元树的母节点发送故障通知(步骤D2)。
如图15(a)所示,障碍发生通知从发生了故障的节点一个接一个地传向母节点,最终到达节点1。
如图15(b)所示,如果在多个节点几乎同时发生了故障时,2元树上的任一个节点几乎同时或隔开时间从2个子节点接收到故障发生通知。这时,母节点可以只发送1个故障发生通知。
节点1若接收到故障发生通知,则对于子节点发出重新运行指令。接收了来自2元树上的母节点的重新运行指令的节点(步骤D3)向2元树上的子节点发送重新运行指令(步骤D4)。这样,如图15(c)所示,重新运行指令从节点1一个接一个地传向子节点。
在接收了重新运行指令的节点中,进行超高速缓冲存储器的无效化(步骤D5)、以及通过参照BIB内容的主存储器的重新运行(步骤D6),从检查点再次起动通常的数据处理。
另外,在获取检查点的过程中,当某个节点发生了故障时,其故障发生通知在收发检查点结束准备完毕的定时内传向其它的节点。这时,最终地把故障发生通知到节点1。而且,从节点1向子节点传送重新运行指令,对于即将清除BIB内容的节点,也进行对于前一个检查点的重新运行。
还有,依据故障的种类,在故障发生了的节点,也可能有不继续一切数据处理的情况。这样的情况时,由于检查点获取结束准备完毕的通知不能从其节点传向其母节点,因此通过在母节点监视关于接收来自子节点的检查点获取结束准备完毕的通知的超时,能够检测出故障发生。
而且,用从母节点向发生了故障的子节点施加复位等方法,在上述子节点cpu再次动作时,能够适用上述的恢复处理。
以上,在第1实施例中,说明了所有节点同步地获取检查点的构成及方法,这时,通过抑制向其它节点的发信,避开在通信开关10和通信转接器1-2、2-2、…、N-2中产生半途不完整的状态,当某个节点发生故障时,所有节点在前一个检查点重新运行,再次起动通常的数据处理,依据这些机构,示出了节点间通信能够无延迟地进行。
下面,说明第2实施形态。
第1实施形态中,仅就经过一定时间的场合说明了各节点1、2、…、N一起开始检查点获取的情况。
第2实施形态中,说明某个节点在BIB残余容量下降到某个预定值之下时在所有节点开始检查点获取的方法。在此,BIB的残余容量降低到某定值的节点被称为检查点处理开始请求节点。
第2实施形态由于和第1实施形态接近,因此以不同部分为中心进行说明。第2实施形态中也和第1实施形态相同,各节点逻辑地与2元树的节点1对1地对应。
如图16(a)所示,检查点处理开始请求节点(节点5)对于母节点(节点2)发送检查点获取开始指令请求,接收了该请求的母节点(节点2)又将其发送到自己的母节点(节点1),由此,向节点1传送检查点获取开始指令请求。
沿着2元树形状的传送,是为了防止众多节点对节点1发送检查点获取开始指令请求。
节点1对于节点2和节点3发送检查点获取指令,如图16(b)所示,沿着2元树的形状,向所有节点传送了检查点获取指令。
各节点在BIB的残余容量下降到某阈值时,或者从子节点接收了检查点获取的开始指令请求,进行图17的流程所示的处理。
首先,符合条件的节点向母节点发送检查点获取开始请求(步骤E1)。但对于节点1,由于没有母节点因此不进行该步骤。
一旦检查点获取开始请求传到节点1,则节点1向子节点,即节点2、3发送检查点获取指令(步骤E2)。节点1由于没有母节点,不执行步骤E2。
节点2,3把从节点1发送来的检查点获取指令向自己的子节点发送(步骤E3)。各节点通过执行步骤E2、及步骤E3的步骤,向所有节点传送了检查点获取指令。
各节点中断通常的数据处理,把节点间通信的接收处理执行到时刻T4(步骤E4、E5)。这是因为检查点获取指令达到对应于2元树的叶的节点期间,可能产生伴随通常的数据处理的节点间通信,故需要将其全部接收。
另外,希望在节点1执行步骤E3之际决定时刻T4。
若成为时刻T4,则由于信道(通信开关10)上没有节点间通信的数据,因此和图7的步骤C5-C13一样,进行检查点获取及获取结束的同步处理(步骤E6-E14)。详细的说明按照和上述图7所示流程中的步骤C5-C13相同的顺序进行。
另外,第2实施形态中,在某节点BIB的残余容量降低到某阈值时,首先说明了如图16(a)所示,把检查点获取开始指令请求传递到根节点(节点1),如图16(b)所示,从根节点发出检查点获取指令的情况,然而也可以是其它的方法。
作为所希望的方法,如图16(c)所示,从检测出BIB的残余容量降低到某阈值的检查点处理开始请求节点起(图16(c)中节点5)向母节点及所有子节点发送检查点获取指令,接收到检查点获取指令的节点向自己的母节点及所有子节点发送检查点获取指令,由此向所有节点发送检查点获取指令,这样的方法也能够采用。
这种情况下,从某节点接收检查点获取指令时,需要以下2点(F1)对于传送来检查点获取指令的节点,不发送检查点获取指令。
(F2)在接收了2个以上的检查点获取指示时,舍弃第2个及其以后接收的检查点获取指令。
以上,第2实施形态对于在某节点产生需要开始获取检查点时,即BIB的残余容量降低到某个定值时,向所有节点传送检查点处理开始请求,并在没有节点间通信的状态下,对所有节点同步地获取检查点的方法进行了说明。
下面,说明第3实施形态。
第2实施形态中,在图17的步骤E5,假定为了进行在检查点获取指令达到对应于2元树的叶的节点之前可能产生的节点间通信的接收处理,要等待到成为时刻T4。第3实施形态示出通过不等到时刻T4而使节点间通信更高速化的方法。
第3实施形态中,关于通信转接器1-2、2-2、…、N-2假定下述的功能。
(G1)各节点的cpu能够设定对于其节点的通信转接器的接收拒绝模式。
(G2)为了从节点A向节点B发送数据,起动节点A的通信转接器,而且,在节点B的通信转接器设定为接收拒绝模式时,实际上不进行通信,通过节点A的通信转接器在节点A的cpu中产生中断,通知异常结束以及异常结束的原因。
在通信转接器1-2、2-2、…、N-2具有上述(G1)、(G2)的功能时,通过如图18、图19那样变更图17的流程图所示的在节点间使检查点获取开始同步的方法以及图3的流程图所示的节点间通信的发信侧(发信控制单元)的动作方法,能够节省从母节点接收到检查点获取指令后的等待时间。
各节点在开始检查点之际(步骤F1),把通信转接器设定在接收拒绝模式(步骤F2)。
在此,设节点A生成发送信息(步骤G1),起动通信转接器(步骤G2-G4),对于节点B进行数据发送(步骤G5-G6)。另一方面,节点B为了开始检查点获取,把通信转接器设定在接收拒绝模式(步骤F2)。
这时,在节点A中,在图19的步骤G6检测到对方的通信转接器设定在接收拒绝模式,在一定时间内不进行对于节点A的信息发送(步骤G9)。
通常,该等待期间,对于节点A也发送了检查点获取指令,因此,中断通常的数据处理成为开始检查点获取。
以上,在通信转接器能够设定接收拒绝模式的情况下,说明了对于检查点获取开始不必等待一定时间直到没有了伴随通常的数据处理的节点间通信为止。
另外,在第3实施形态中的方法对于第1实施形态也能适用,这时,图7的步骤C3、C4中不必继续节点间通信的接收处理直到经过时刻T2。
下面,说明第4实施形态。
第3实施形态中,在能够把通信转接器设定为接收拒绝模式的情况下,说明了对于检查点获取的开始,不必等待一定时间直到伴随通常的数据处理的节点间通信没有为止。第4实施形态中,示出通信转接器中即使没有可以设定接收拒绝的功能也可以不必等待一定时间的办法。
如图20的流程所示,在开始检查点之际(步骤H1),在cpu允许中断的状态下,进行把cpu的上下文保存在主存储器上的处理(步骤H2)和超高速缓冲存储器清洗1(步骤H3)。其中,所谓超高速缓冲存储器清洗1是仅对于超高速缓冲存储器的一部分进行清洗的处理。
由此,在步骤H2或H3的执行中,当有来自其它节点的数据发送时,作为来自通信转接器的中断,数据接收请求传送到cpu。
这时,接收侧节点的cpu进行如图21的流程图所示的节点间通信的妆收处理。接收侧节点的cpu在超高速缓冲存储器清洗的过程中,通过处理来自通信转接器的中断(步骤I2-I4),在结束了用超高速缓冲存储器清洗1清洗的超高速缓冲存储器的部分上有可能存在被改写了的数据。
为此,接收侧节点在信息接收处理之后(步骤I5、I7、I8),在步骤I9中,当发生了接收请求中断时,检查是否为检查点获取过程中。在检查点获取过程中的情况下,返回到图21的步骤H2的处理,重新进行检查点的获取。
该方法基于这样的考虑,与其在不清楚是否有信息到来的状态下等待,不如作为没有来到的状态进行某种程度的超高速缓冲存储器的清洗,如果在其间有信息到来,可以再次实行超高速缓冲存储器的清洗。由此,可期待提高整个系统的性能。
另外,第4实施形态中说明了有信息到来时,在步骤H2中还要再次实行把cpu的上下文保存在主存储器上的处理,而依据cpu的上下文的保存方法,不必变更信息到来之前保持的内容。即,虽然依赖于在什么时刻保存了上下文,但例如若接收到检查点获取信息,则有来自通信转接器的中断而开始检查点获取,这时,如果保存了通常数据处理中的寄存器的内容,则预先保存上下文,可以不变更前面的数据而直接利用前面的数据。
下面,说明第5实施形态。
由于在检查点/重新运行方式的计算机中,在超高速缓冲存储器的清洗方面需要检查点获取中所需时间的大半部分,故作为有效地降低其时间的方式,使用2阶段检查点。这种情况下,取节点中的超高速缓冲存储器为可写回型。
以往的检查点方式中,如图22(a)所示,进行通常处理、检查点处理、通常处理、检查点处理…这样的反复,这里的额外开销成为检查点处理/(通常处理+检查点处理)在该检查点处理中,占据时间最大比例的是把超高速缓冲存储器上的更新数据写回到主存储器上(清洗)的时间。
为了缩短以往的检查点处理的额外开销中占据最大比例的“把超高速缓冲存储器上的更新数据写回(清洗)到主存储器上的时间”,依据以下的顺序,进行2阶段检查点处理。图23(b)中示出2阶段检查点方式的动作时序。
(H1)通常的数据处理(H2)第1阶段和通常的数据处理并行,用作为清洗专用的硬件的超高速缓冲存储器清洗装置进行超高速缓冲器清洗。
(H3)第2阶段不进行通常的数据处理,在把cpu的上下文保存在主存储器上后,用超高速缓冲存储器清洗装置进行超高速缓冲存储器的清洗。
通过在第1阶段中,边进行通常的数据处理边进行超高速缓冲存储器清洗,在第2阶段开始时刻,相当地减少了应从超高速缓冲存储少器写回主存储器的数据量。从而,不能够进行通常的数据处理,能够减少第2阶段所需时间。
第5实施形态中,说明了把采用了该2阶段检查点方式的计算机作为分散存储型多处理器系统中的各节点使用的情况。
图23中示出各节点用于进行2阶段检查点的、超高速缓冲存储器清洗装置的控制方法。
首先,在实行通常的数据处理之际若发生了应开始第1阶段的主要原因(步骤J1、J2),则起动超高速缓冲存储器清洗硬件,即超高速缓冲存储器清洗装置(步骤J3)。由此,在用超高速缓冲存储器清洗装置进行超高速缓冲存储器清洗的另一方面能够并行地进行通常的数据处理(步骤J4)。
在此,若发生应开始第2阶段的主要原因(步骤J5),则不进行通常的数据处理,成为cpu中断禁止,把cpu的上下文保存在主存储器上(步骤J6,J7)。然后,停止,再起动超高速缓冲存储器清洗装置,把超高速缓冲存储器清洗的对象返回到超高速缓冲存储器总体中,用超高速缓冲存储器清洗装置实行第2阶段中的超高速缓冲存储器清洗(步骤J8,J9)。在第2阶段,即使把超高速缓冲存储器总体作为对象,但也仅是在第1阶段未完成写回部分和在第1阶段执行中被更新了的数据,因此写回数据量少。从而,能够缩短可以不执行通常的数据处理的时间。
若依据超高速缓冲存储器清洗装置进行的超高速缓冲存储器的清洗结束,则cpu成为中断许可,在进行了节点间的结束同步后,清除BIB,退回到通常的数据处理(步骤J10-J12)。
另外,步骤11中节点间的检查点结束同步能够使用上述第1实施形态中说明过的方法。由此,适用通过缩短检查点获取自身所需要的时间,则在缩短不能执行通常的数据处理的时间,即不能进行节点间通信的时间的同时,通过在所有节点同步地获取检查点可以立即实行节点间通信请求的本发明,能够使节点间通信的高速化。
另外,移向第1阶段及第2阶段的定时,即步骤J2及步骤J5中的判定条件方面可以有各种候补。
关于步骤J2,有各节点独立下述某个条件(I1)-(I3)是否成立的方法,以及在检测出某个节点处下述条件(I1)-(I3)成立时,用节点间通信将其传送到其它节点的方法。
(I1)各节点从再次开始通常的数据处理后经过一定时间。
(I2)超高速缓冲存储器中写回的必要数据量超过阈值。
(I3)BIB的残余容量降低到阈值。
还有,关于步骤J5,有各节点独立判定下述条件(J1)-(J)是否成立的方法以及在检测出某个节点处下述条件(J1)-(J2)成立时,用节点间通信将其传送到其它节点的方法。
(J1)各节点从第1阶段开始,经过了一定时间。
(J2)超高速缓冲存储器装置结束了所有的超高速缓存块的检查以及与此同时写回到数据主存中。
这些候补中,哪个最适合,依各节点处的数据处理的内容而异,因此,最好能够试验地选择。
还有,用节点间通信把条件(I1)-(I3)、(J1)-(J2)通知给其它节点的方法能够使用上述第1实施形态至第4实施形态中说明的方法。
以上,说明了使用2阶段检查点方式的计算机的情况。
下面,说明在把分散存储型多处理器系统中的节点分组时适用本发明的例子。在分散存储型多处理器系统中实行多种应用时,把存在于系统中的众多节点分成苦干个逻辑组,在各组进行不同的应用。
图24中概念性地示出多个节点分组的状况,各节点经由信道连接(未图示),相互之间能够进行数据收发。
例如,考虑接受来自多个远程终端的处理业务的大规模数据库系统和也参照该数据库的决策支援系统的例子。这时,应该避开由于计算机的下行而服务停止的状况,但认为决策支援系统有计算机的下行,即使从初始再次执行,也没有那样深刻的影响。
于是,分散存储型多处理器系统取得检查点时,属于执行数据库系统的分组中的节点上取得了检查点,但执行决策支援系统的节点(前提是少数)尚未取得检查点。
在这里,把被指令检查点获取的节点作为取得节点,把来被指令检查点获取的节点作为非取得节点。图24中,包含于检查点采集组(数据库系统)中的节点(例如节点B、F)成为取得节点,包含于检查点非采集组(决策支援系统)的节点(例如节点C、H)成为非取得节点。
本实施形态中,在各节点上设置了使本节点是否取得检查点,即设定为检查点取得节点或非取得节点的哪一个的装置,并设以节点单位选择检查点取得的有无。
在这样检查点取得节点和非取得节点混杂结构的分散型多处理器系统的情况下,将产生如下的节点间通信。
(K1)属于实行数据库系统的组(检查点采集组)的节点间通信。
(K2)伴随从决策支援系统(检查点非采集组)对数据库查询发送的节点间通信。
(K3)伴随从数据库对决策支援系统的结果发送的节点间通信。
(K1)例如是图24中的从节点B向节点F的数据通信(1),虽然检查点获取时抑制数据发送,但由于在采集组内同步地进行检查点的采集,因此能够进行无延迟的数据通信。通过检查点取得时抑制数据发送,能够在信道中不存在传送中的数据的状态下取得检查点。
(K2)例如是图24中的从节点C向节点G的数据通信(2),在可能实行数据库一侧,仅在检查点获取过程中抑制数据发送。
(K3)例如是图24中的从节点G向节点C的数据通信(3),有时仅检查点采集组被重新运行,或者仅检查点非采集组被再次引导(reb00t),由于有时在两组之间状态上产生矛盾,因此,数据发送不得不延迟到下一个检查点取得之后。
另外,在属于实行数据库系统的分组中的节点(取得节点)发生故障时,属于该组的所有节点返回到前面的检查点,再次开始通常的数据处理,而关于实行决策支援于系统的节点(非取得节点)继续通常的处理。
另一方面,实行决策支援系统的节点(非取得节点)发生了故障时,不进行再次引导,通常,从起始重新实行决策支援系统。关于属于实行数据库的分组的节点(取得节点)继续通常的处理。
这样,在分散存储型多处理器系统中,使以节点为单位设定的检查点取得节点和非取得节点混合存在,能够构筑有效的检查点/重新运行方式的分散存储型多处理器系统。
下面,说明也参照在上述大规模的数据库系统及其数据库的接受订货与订货管理系统中分别分配节点组,在每个节点组取得检查点的同时实行检查点处理的情况。
例如,如图25所示,把经由信道相互连接的多个节点分为3个组,并且设例如用一方的检查点采集组X的节点组实现大规模的数据库系统,以另一方的检查点采集组Y的节点组实现接受订货与订货管理系统。另外,还存在检查点非采集组。这里,各节点组同步地进行检查点获取。
在这种情况下,设想在实行数据库系统的组内以及实行接受订货与订货管理系统的组内频繁地发生数据通信,但在属于2个组的节点间的数据通信却极少。于是,代替在属于2个组的所有节点间同步地获取检查点,在各个组内同步地获取检查点,在2个组中不同步。
例如,在图25中,在属于某个组的各节点取得检查点之际,属于其它组的节点经由信道进行向其它节点的数据发送。例如,在检查点采集组X中取得检查点之际,检查点采集组Y的节点M对节点N进行数据传送(1)。
另一方面,属于不同组的节点间,例如节点K和节点O的数据传送(2)延迟到下一个检查点取得后。
在属于某个组的某个节点上发生故障时,属于其它组的所有节点抑制向信道的数据传送,在使对于经由信道正在传送的数据的接收结束之后,如果需要则进行初始化,使信道上没有正在通信中的数据。
还有,属于包含发生了故障的节点的组中的所有节点在分别于前面的检查点重新运行后,再次开始通常的数据处理。这样,能够按每个节点组同步地取得检查点。
通过这样以节点组为单位同步地取得检查点,则能够减少关于节点间开始检查点获取的同步、以及检查点取得后的通常的数据处理开始的处理所带来的额外开销。
另外,在图24、图25中说明的结构中,根据需要,检查点取得之后的数据间通信的方法可以使用上述第1实施形态-第4实施形态中说明过的方法。
还有,本发明由于必须把以往的分散存储型多处理器系统中的节点变更为具备检查点/重新运行机构的节点,而连接节点间的信道(通信开关10)可以原样使用,因此能够广泛地应用在分散存储型多处理器系统中。还有,适用了本发明的分散存储型多处理器系统以大规模科学技术计算和数据库处理为首,能够适用于广泛的用途,能够享受其高可靠性。
如以上详述的那样,若依据本发明,即使是在节点中使用了检查点/重新运行方式的计算机时,通过即时地进行节点间通信,也能够使节点间通信高速化。
权利要求
1.一种分散存储型多处理器系统,在经由信道连接了2个以上至少包含处理器和主存储含器的节点并且经由上述信道进行节点间通信的分散存储型多处理器系统中,特征在于上述节点为了能够在故障发生时进行再次执行,具有在某时刻取得对于自节点的检查点,在发生故障时从前面取得的检查点再次开始数据处理的功能;上述节点的每一个都对应于树构造的某个节点,对于具有基于该对应的关系的节点,进行用于取得开始检查点获取的同步的数据发送;检测出应该开始检查点获取的节点向母节点发送上述检查点获取开始请求;从子节点接收到上述检查点获取开始请求的节点向母节点发送上述检查点获取开始请求,由此,依次地发送上述检查点获取开始请求,直到根节点;从子节点接收到上述检查点获取开始请求的根节点对所有子节点发送检查点获取指令。从母节点接收到上述检查点获取指令的节点向子节点发送上述检查点获取指令,由此,对所有节点传送了检查点获取指令,在所有的节点取得开始检查点获取的同步。
2.权利要求1记述的分散存储型多处理器系统,特征在于上述节点的一个都对应于树构造的某个节点,对于具有基于这种对应的关系的节点进行用于取得开始检查点获取的同步的数据发送;检测到应该开始检查点获取的节点对于母节点及所有子节点发送检查点获取指令;接收到上述检查点获取指令的节点对于母节点及所有子节点中除去发送来检查点获取指令的节点之外的所有节点发送检查点获取指令,由此,在全部节点取得开始检查点获取的同步。
3.权利要求1记述的分散存储型多处理器系统,特征在于这是在上述节点的处理器上设置可写回超高速缓冲存储器,并且在上述主存储器上获得上述检查点的系统,上述节点在与其它所有节点同步进行的检查点获取之前,与通常的数据处理并行,与所有其它节点同步地把存在于上述超高速缓冲存储器中的涂改数据的一部分强制地写回到上述主存储器中。
4.权利要求1记述的分散存储型多处理器系统,特征在于上述节点的每一个在达到某时刻的时刻点开始上述检查点的获取,使得和其它所有节点同步地进行上述检查点的获取。
5.一种分散存储型多处理器系统,在经由信道连接2个以上至少包含处理器和主存储器的节点并且经由上述信道进行节点间通信的分散存储型多处理器系统中,特征在于上述节点具有为了能够在故障发生时进行再次执行,在某时刻取得对于自节点的检查点,在发生故障时从前面取得的检查点再次开始数据处理的功能;对上述信道进行控制使得在依据上述功能采集检查点之际自节点成为不可接收数据的第1通信装置、将伴随通常的数据处理的节点间的数据发送确认为对方节点是否为不可接收数据的第2通信装置;把和全部其它节点同步取得的检查点保持到在所有的节点结束下一个检查点获取,在某个节点发生故障时,在下一个检查点获取之前,和其它全部的节点同步地通知故障发生;立即实行伴随通常的数据处理的节点间的数据传送而不必延迟到下一个检查点获取之后;其结果,在用上述第2通信装置确认了对方节点为不可接收数据之际,成为待机状态,直到能够数据发送。
6.一种分散存储型多处理器系统,在经由信道连接2个以上至少包含处理器和主存储含器的节点并且经由上述信道进行节点间通信的分散存储型多处理器系统中,特征在于上述节点具有为了能够在故障发生时再次执行,在某时刻取得关于自节点的检查点,在故障发生时从前面取得的检查点再次开始数据处理的功能;把同全部其它节点同步取得的检查点保持到在所有节点结束下一个检查点获取,在某节点发生故障时,在下一个检查点获取之前,和其它全部节点同步地通知故障发生;依据上述功能开始检查点的获取后,在从其它节点接收了伴随通常的数据处理的节点间的数据发送时,是在通知故障发生的时候,从前面取得的检查点再次开始数据处理,是其它通知时,重新进行检查点的获取。
7.权利要求1记述的分散存储型多处理器系统,特征在于上述节点的每一个都对应于树构造的某个节点,对于具有基于这种对应的关系的节点进行用于取得结束检查点获取的同步的数据发送;从所有子节点接收了检查点结束准备完毕的通知的节点向母节点发送检查点结束准备完毕的通知;从所有子节点接收了检查点结束准备完毕的通知的根节点对所有子节点发送检查点结束指令的同时使检查点获取结束,再次开始通常的数据处理;当从母节点接收到检查点结束指令时,或者从已经再次开始通常的数据处理的节点接收到通常的数据通信时,节点对于所有的子节点发送检查点结束指令的同时使检查点的获取结束,再次开始通常的数据处理。
8.权利要求1或权利要求2记述的分散存储型多处理器系统,特征在于上述节点的每一个都对应于树构造的某个节点,并且对于具备基于这种对应的关系的节点进行用于取得检查点获取结束的同步的数据发送;上述各节点在开始检查点获取的时刻,成为不可接收来自其它节点的数据的状态,在即将结束检查点获取之前成为能够接收来自其它节点的数据的状态的同时再次开始通常的数据处理;从所有子节点接收到检查点结束准备完毕的通知的节点向母节点发送检查点结束准备完毕的通知;从所有子节点接收到检查点结束准备完毕的通知的根节点对于所有的子节点发送检查点结束指令的同时使检查点获取结束,废弃以前的检查点;在从母节点接收到检查点结束指令时,或者从已经再次开始了通常的数据处理的节点接收到通常的数据通信时,节点对于所有子节点发送检查点结束指令的同时使检查点的获取结束,废弃以前的检查点。
9.权利要求7或权利要求8记述的检查点/重新运行方式的分散存储型多处理器系统,特征在于通过在上述母节点中在一定时刻之前是否接收了来自所有子节点的检查点获取结束准备完毕的通知检测故障。
10.权利要求1或权利要求2记述的分散存储型多处理器系统,特征在于上述各节点具有设定依据上述功能获取检查点的获取节点或不进行检查点获取的非获取节点的装置;用上述设定装置设定在上述获取节点的节点在获取检查点时,抑制对于经由上述信道的其它节点的数据发送,并结束接收经由上述信道发送来的数据的接收;用上述设定装置设定在上述非获取节点的节点抑制对于经由上述信道的其它节点的数据发送;在上述信道中不存在对于上述获取节点的发送中的数据的状态下,与其它全部节点同步地进行;在某个上述获取节点中发生故障之际,上述非获取节点抑制对上述信道的数据发送,结束接收经由上述信道发送来的数据,使上述信道中成为没有正在通信中的数据的状态;上述获取节点从前面获取的检查点再次开始数据处理。
11.权利要求1或权利要求2记述的分散存储型多处理器系统,特征在于上述节点是被分组并在每个组中实行不同的应用,是在属于各组的每个节点获取检查点的节点,在属于某个组中的各节点获取了检查点之际,属于其它组的节点不经由上述信道向其它节点进行数据发送,属于不同组的节点间的数据间通信延迟到下一个检查点取得之后;在属于某个组中的某节点发生故障时,属于其它组的所有节点抑制对上述信道的数据发送,使经由上述信道发送来的数据的接收结束,使上述信道中没有通信中的数据;属于发生了故障的组的全部节点分别从前面取得的检查点再次开始数据处理。
全文摘要
在经由通信开关10连接节点1,2,…,N,经由通信开关10进行节点间通信的系统中,节点具有为了使故障发生时的再执行成为可能。在某时刻取得关于自节点的检查点,在故障发生时从前面取得的检查点再次开始数据处理的功能,抑制对于经由通信开关10的其它节点的数据发送,在通信开关10中不存在发送中的数据的状态下,和其它所有节点同步地进行开始基于该功能的检查点的获取。
文档编号G06F11/14GK1164710SQ9710451
公开日1997年11月12日 申请日期1997年3月18日 优先权日1996年3月19日
发明者平山秀昭, 酒井浩 申请人:株式会社东芝
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1