一种基于节点失效关联性的检查点放置方法与流程

文档序号:15118319发布日期:2018-08-07 22:05阅读:244来源:国知局

本发明属于计算机分布计算,涉及分布式系统容错计算和检查点技术,尤其涉及一种基于节点失效关联性的检查点放置方法。



背景技术:

为了满足大规模问题的科学计算或者仿真所需要的计算能力的需求,近十年来,计算机系统向大规模并行平台发展,随着分布式系统的规模变大以及分布式系统的组件之间的交互变复杂,分布式系统的失效频率大幅提高。大规模的科学计算或者仿真,特别在大数据时代,人们需要从海量的数据中挖掘信息,挖掘的算法计算可能需要在计算平台上持续几天甚至几个月的时间。频繁的失效导致之前计算的结果的丢失,需要重新进行计算,使得需要长时间运行在这些高性能计算平台上运行的任务的完成时间大大高于任务原本所需的时间。基于以上事实,必须提出有效的策略使得分布式平台能够安全、可靠、有效地完成运行的任务。

检查点(Checkpoint)技术是系统容错应用最为广泛的解决方案,检查点技术通过将应用程序运行的中间状态保存到可靠存储介质中,当系统发生失效时,重新载入最近存储的中间状态,从而达到减小任务完成时间的目的。容错的根本目的是让应用程序能够容忍系统发生的失效并且把任务的完成时间最小化。在一个软件系统中,如果设置检查点个数过多,由于设置一个检查点会产生额外代价,导致系统额外代价的显著增加;如果设置检查点个数过少,则当系统发生失效时,系统任务重复执行的额外代价会显著增加。由于一般情况下并不知道程序在无失效条件下需要运行多长时间,如何合理设置检查点以及在何时何处设置检查点长期以来一直是一个有待解决的热点研究问题。

现场失效数据记录了系统运行状态的日志,包括系统的异常状态,比如节点发生失效的时间、节点恢复重新加入到系统的时间等等。这些信息通常用于系统回演和失效分析,尚未被非常有效地分析并应用于容错技术中。



技术实现要素:

发明目的:针对上述现有技术存在的问题和不足,本发明提供一种基于节点失效关联性的检查点放置方法,通过分析节点之间失效的关联性,预测失效事件发生的时间,并通过失效事件驱动的检查点策略来达到减少分布式系统的浪费时间的效果。

技术方案:为实现上述发明目的,本发明中基于节点失效关联性的检查点放置方法,包括以下步骤:

(1)建立系统浪费时间表达函数;

(2)获取系统中的失效数据,所述失效数据至少包括:分布式系统中节点唯一编号、失效事件的开始时间和失效事件的结束时间;

(3)利用节点之间所有失效事件间的关联度获取任意两个节点之间的关联度,按照节点之间的关联度与预先设定阈值之间的关系将节点进行分组得到节点关联组;

(4)将节点关联组内各节点的事件按照事件的关联度进行事件分组得到关联组事件,将该节点关联组的各关联组事件按时间先后进行排列形成系统事件;

(5)根据失效事件时间间隔的概率分布计算检查点的周期。

其中,所述系统浪费时间表达函数为:

W=ΣTgcp+ΣTr

式中,W表示由于容错代价以及系统失效所带来的额外开销;Tgcp表示执行检查点的开销;Tr表示从探测到失效发生到修复失效的时间间隔。

进一步地,若失效事件时间间隔服从指数分布,则获取到的检查点的周期的表达式为:

式中,Tactive是需要求解的检查点周期;K为回退因子,用于表示系统回退代价;M是指数分布中的平均失效间隔时间。

其中,所述失效事件之间关联度的表达式为:

式中,dim,jn表示节点i上第j个失效事件与节点m上第n个失效事件的开始时间间隔的绝对值;θ是系统当前测量出的平均失效间隔时间。

进一步地,步骤(3)中两个节点之间的关联度为该两个节点的任意两个失效事件之间关联度之和,当两个节点之间的关联度大于预先设定阈值,则两个节点属于一个节点关联组。

有益效果:本发明中基于节点失效关联性的检查点放置方法,通过利用失效事件的关联性统计获取检查点的周期,优化全局一致检查点的个数,降低检查点本身的时间代价;优化每次检查点放置位置,降低每次从检查点恢复运行时重新运行的时间代价;随着系统积累的失效事件信息增多,可定期通过本发明分析添加的新信息,以得到更合理的节点分组,进而产生更合理的动态检查点放置策略,减小任务完成时间。

附图说明

图1为同步全局一致检查点的示意图;

图2为系统中单独节点的行为模型;

图3为获取系统节点关联性矩阵的实现过程示意图;

图4为节点分组的实现过程示意图。

具体实施方式

下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。

本发明中基于节点失效关联性的检查点放置方法(CPNFC,Chekpoint Placement based on Node Failure Correlation),在节点发生失效前,执行一次检查点过程,可以有效的屏蔽关联性失效。节点之间的关联性是指:如果在节点P1上发生了一个失效事件,那么与节点P1相关联的节点很快也会发生失效。

下面首先介绍CPNFC方法的模型,CPNFC方法基于以下假设:

(1)分布式系统已经存在一定数量的标准化的失效数据记录;

(2)在系统中某个应用或者节点发生失效之后,经过排查程序漏洞或者修复硬件失效后可以解决该失效,即应用程序重新运行到此处时不会发生同一个失效,程序可继续运行;

(3)系统通信链路符合先进先出原则;

(4)在恢复运行阶段不发生失效。

如图1所示,由于系统中同时运行若干独立运行的进程,进程之间通过消息传递保持着交互关系,由单个进程形成的本地状态简单相叠加可能导致不正确全局状态,如出现孤儿消息或者丢失消息,因此需要构造出全局一致状态,形成正确的检查点。

为了方便叙述,不失一般性假设每个节点上只运行一个单独的应用进程。

CPNFC方法采用如下符号来描述系统:

Nodes={P0,P1,…PN}:表示构成分布式系统的节点集合,共N+1个;

FailureEvent=<nodeId,startTime,endTime>:该三元组表示失效信息,其中nodeId表示发生此失效的节点在系统中唯一编号,startTime表示该失效事件开始的时间,endTime表示该失效事件结束的时间,即系统恢复正常的时间;

FailureEventij,0≤i≤N,0≤j≤ei:表示节点Pi上按照时间先后排序的第j个失效事件,其中ei表示第i个节点的失效事件个数;

Gcpi:表示系统的第i个全局一致检查点;

Tgcp:表示执行一次全局一致检查点的开销,由于协同检查点协议是同步的,所以把执行一次全局检查点的开销看成执行一次单独进程的检查点开销即可;

Tb:表示失效发生时离最近的一次全局检查点的距离(时间间隔);

Tr:表示从探测到失效发生到修复失效至重新开始运行程序的时间间隔;

dim,jn:表示节点i上第j个失效事件与节点m上第n个失效事件的开始时间间隔的绝对值;

CT(dim,jn):表示FailureEventim与FailureEventjn之间的关联度;

Correlationmn,0≤m≤N,0≤n≤N:表示节点m,n之间的关联度;

Clusteri={Pj|Pj属于节点分组i}:表示系统中识别出来的第i个关联节点集合;

ClusterEventij:表示第i个关联节点集合合并后按照时间先后排序的第j个事件;

SystemEventi:表示系统事件按照时间先后排序的第i个事件;

W:表示由于容错代价以及系统失效所带来的额外开销;

Nt:表示在正常运行Texec内系统发生失效个数的期望值;

Texec:系统正常运行的时间长度;

Tactive:需要求解的检查点周期;

M:指数分布中的平均失效间隔时间;

K:回退因子,用于表示系统回退代价。

本发明中基于节点失效关联性的检查点放置方法(CPNFC),包括以下步骤:

(1)首先建立系统浪费时间表达函数,W=∑Tgcp+∑Tr,即所有检查点的时间代价和系统通过检查点恢复重复运行的时间代价之和,如图2所示,其中恢复时间由系统发生失效的数量以及系统修复的速度决定。CPNFC的目标是要最小化系统浪费时间。

(2)获取失效数据,失效数据至少包括:分布式系统中节点唯一编号、失效事件开始时间、失效事件结束时间等FailureEvent元组的信息。

(3)事件关联性分析与系统节点分组。采用关联性分析方法,对输入的系统失效数据进行关联性分析,获得Corrlationmn,并对系统节点分组,获得Cluster集合。

定义节点的关联度,来定量表示节点间的相关程度。该关联度基于节点间事件距离计算而得,采用球形协方差模型来定量描述两个失效事件之间的关联度。假设失效事件FailureEventim、FailureEventjn之间的距离为dim,jn,FailureEventim与FailureEventjn之间的关联度CT(dim,jn)的计算方式如公式(1)所示:

其中,θ是系统当前测量出的平均失效间隔时间,该参数可以选取系统的失效间隔时间(MTBF)。

分布式系统中任意两个节点Pi、Pj之间的关联度的计算方法为Pi与Pj的所有事件的关联度之和,则根据该定义,可以得到函数式(2):

对系统中的任意两个节点运行图3中的程序流程可以得到系统节点关联性矩阵,节点分组的问题实际上是聚类问题,并且CPNFC方法已经计算得到了节点之间的关联矩阵,采用灰色关联聚类方法来给节点聚类,当然也可以能够采用其他聚类算法。根据事件关联性分析得到了关联度矩阵,再通过定义一个阈值Tconst来给系统的节点分组,当两个节点的关联度Correlation(i,j)大于阈值Tconst时则认为节点Pi与节点Pj属于一个节点关联组,否则两个节点不相关,如图4所示为节点分组的实现过程。

关于阈值Tconst选取,通常可以通过取系统关联矩阵的统计量即平均值或者中位数等等,也可以通过控制节点分出来的组数来确定阈值。

(4)合并获取系统事件。根据节点分组信息,按照合并规则合并相关性事件,形成系统事件SystemEvent。完成节点分组后,要对相关节点时间合并以及系统事件合并,包括以下步骤:

1)把节点关联组Cluster组内的节点失效事件根据参数θ进行事件分组或者称为相关节点的事件合并,形成关联组事件ClusterEvent;

2)把各个关联组事件按时间先后合并成系统事件SystemEvent。

(5)获取检查点周期,采用代价模型求出最优化的检查点设置间隔。

在通过事件合并得到系统事件之后,CPNFC方法将系统看作一个整体来对之进行分析,这样,基于对发生失效历史数据的分析,预测下一次失效可能发生的时间,在发生失效之前,设置并执行一次检查点,这样一旦发生了失效,即可回退到检查点继续执行,检查点越靠近失效点之前的位置,系统付出的额外代价就越小。通过失效事件之间的时间间隔TBF(Time Between Failure)来定量分析系统的失效发生的特征,并利用概率密度f(t)表示的随机变量来描述并预测TBF。假设TBF服从指数分布,该分布使得检查点的周期设置可以为固定。

计算公式(3):

可以得到系统成功运行Δt时间而不发生失效的概率P(t>Δt)=1-P(t≤Δt)=e-Δt/M,因此,成功完成N个时间长度为Δt的任务所需要尝试的平均次数Nattempt=N/(P(t>Δt))=NeΔt/M,由于尝试的次数等于失败(系统发生失效)的次数加上成功的次数,可得Nfailure=Nattempt-N=N(e^(Δt/M)-1)。可得:

为了简化模型,利用指数函数的性质来线性化Nt可得式(5):

将式(5)代入式(3),为了求W的最小值,并在等式两边同时对Tactive求一阶导数并令其等于0可得等式(6):

求解等式(6)可以得到最优的检查点间隔:

这样,求出了检查点的周期。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1