首页 / 专利库 / 电脑编程 / 高性能计算 / 一种基于超级计算机的应用级多层检查点的优化方法

一种基于超级计算机的应用级多层检查点的优化方法

阅读:647发布:2020-05-11

专利汇可以提供一种基于超级计算机的应用级多层检查点的优化方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于超级计算机的应用级多层检查点的优化方法,属于 计算机系统 结构和 高性能计算 领域。一种基于超级计算机的应用级多层检查点的优化方法,包括以下步骤:1)替换故障 节点 2)确定各层检查点放置时间序列;3)对 硬件 节点以及运行在节点上的 进程 进行组划分;4)采用故障类型判定 算法 确定发生在进程组内的故障类型;5)针对故障类型,在进程组内采用相应的恢复策略;6)当到达各层检查点放置时间序列中对应的时间点时,采用相应的检查点策略完成中间状态数据的保存;8)继续运行,若尚未运行结束,返回步骤6),否则结束检查点放置。本发明克服了现有的多层检查点优化方法依赖于超级计算机的硬件特性,导致其往往不具备通用性的缺点。,下面是一种基于超级计算机的应用级多层检查点的优化方法专利的具体信息内容。

1.一种基于超级计算机的应用级多层检查点的优化方法,其特征在于,包括以下步骤:
1)探测待分配节点列表,若待分配节点中有节点出现故障,则采用空闲列表中的节点进行替换,替换前后所述节点的顺序不变;
2)读取检查点配置文件,获取检查点配置文件中三种故障类型发生的概率,确定各层检查点的放置时间序列;
所述故障类型包括由于软件错误导致被提交任务的运行失败导致的故障、由于单个硬件节点故障导致被提交任务的运行失败导致的故障和由于多个硬件节点故障导致被提交任务的运行失败导致的故障;
3)根据检查点配置文件中的任务运行信息,采用基于超级计算机体系架构的划分规则对硬件节点及运行在所述节点上的进程进行组划分;
所述任务运行信息包括任务并行规模和每个硬件节点上运行的进程数;
4)在进程组内通过一次MPI通信确定组内缺失数据的进程,采用故障类型判定算法确定发生在缺失数据的进程中的故障类型;
5)针对故障类型,在硬件节点组内采用相应的恢复策略,将任务运行状态回滚至最近一次保存的状态;
6)当运行至检查点放置时间序列中对应的时间点时,采用相应的检查点策略完成中间状态数据的保存;
7)若尚未运行至最后时间点,返回步骤6);否则,结束运行。
2.根据权利要求1所述的基于超级计算机的应用级多层检查点的优化方法,其特征在于,步骤1)的具体操作为:
定义待分配节点列表为worklist,空闲节点列表为sparelist;
在提交任务之前,采用ping程序对worklist中的所有待分配节点进行检测,若待分配节点无法ping通,则采用sparelist中的节点对故障节点进行替换;
完成所有故障节点的替换后,利用更新后的worklist进行任务提交。
3.根据权利要求1所述的基于超级计算机的应用级多层检查点的优化方法,其特征在于,在步骤2)中确定各层检查点的放置时间序列,具体包括以下步骤:
201)定义三种故障类型分别为level、level2、level3,并且发生概率分别对应为:{p1,p2,p3};
202)定义e1为发生level1故障,e2为发生level2故障,e3为发生level3故障,结合{p1,p2,p3),采用如下故障发生时间序列:
...,e3,e1,e1,e1,e2,e1,e1,e1,e2,e1,e1,e1,e3,e1,...
203)定义s1为设置level1故障对应的检查点事件,s2为设置level2故障对应的检查点事件,s3为设置level1对应的检查点事件,对应多层检查点时间序列为:
...,s3,s1,s1,s1,s2,s1,s1,s1,s2,s1,s1,s1,s3,s1,...。
4.根据权利要求1所述的基于超级计算机的应用级多层检查点的优化方法,其特征在于,在步骤3)中,对硬件节点进行组划分的规则为:
定义每个硬件节点上运行p个计算进程,在提交slurm脚本时指定-n参数为p,在程序中体现为每个硬件节点上运行p个进程,此时硬件节点组划分演变为将m个计算进程划分在一个通信组中;
对运行在所述节点上的进程进行组划分的规则为:
在硬件节点组中,将运行在硬件节点上的p个计算进程划分到不同进程组中,每个进程组包含m/p个进程。
5.根据权利要求1所述的基于超级计算机的应用级多层检查点的优化方法,其特征在于,在步骤4)中,采用故障类型判定算法确定发生在缺失数据的进程中的故障类型,包括以下步骤:
401)打开进程在硬件节点上对应的共享内存区域,读取位于共享内存区域头部的1字节数据,若该数据为‘*’,则该进程的检查点数据有效,设置has_lost标志位为0;
若该数据为‘#’,则该进程的检查点数据无效,设置has_lost标志位为1;
402)在进程组内对has_lost标志位采用MPI_Allreduce函数进行累加,若has_lost在累加操作之后依旧为0,则说明没有发生硬件节点故障,此时故障类型为level1;
403)定义单进程组内最大容错数为M,若has_lost不为0,且has_lost小于等于M,此时故障类型为level2;
404)若hash_lost大于M,此时故障类型为level3。
6.根据权利要求5所述的基于超级计算机的应用级多层检查点的优化方法,其特征在于,在步骤5)中的恢复策略包括以下三种:
1)若故障类型为level1,此时共享内存中的数据全部有效,各个进程直接读取共享内存中保存的数据即可完成恢复;
2)若故障类型为level2,此时共享内存中的数据出现缺失,对出现数据缺失的进程采用RAID5编码策略进行恢复;
3)若故障类型为level3,此时出现多份共享内存的数据缺失,采用并行IO策略进行恢复。
7.根据权利要求6所述的基于超级计算机的应用级多层检查点的优化方法,其特征在于,第二种恢复策略中,采用RAID5编码策略进行恢复的操作为:
确定出现了数据缺失的进程;
在该进程对应的进程组内进行一次MPI_Reduce操作进行数据恢复。
8.根据权利要求6所述的基于超级计算机的应用级多层检查点的优化方法,其特征在于,第三种恢复策略中,采用并行IO策略进行恢复的操作为:
在进程组内各个进程根据访问文件偏移量创建文件视图,并从超级计算机的lustre文件系统中按照各进程文件视图读取进程组文件,完成数据恢复。
9.根据权利要求6所述的基于超级计算机的应用级多层检查点的优化方法,其特征在于,在步骤6)中,采用相应的检查点策略完成中间状态数据的保存具体如下:
1)对于s1检查点事件,设置共享内存中的标志位为0,使用memcpy将进程的中间状态数据保存到共享内存中,保存完毕后,将该标志位置为1,完成一次检查点的设置;
2)对于s2检查点事件,设置共享内存中的标志位为0,使用memcpy将进程的中间状态数据保存到共享内存中,保存完毕后,对位于共享内存中的数据进行条带划分,条带数目为进程组大小,在进程组内进行一次MPI_Reduce通信,完成RAID5校验和计算,进程组内每个进程分别保存不同条带的校验和,最后设置标志位为1,完成一次检查点的设置;
3)对于s3检查点事件,进程组内各个进程建立独立的文件视图,各进程按照文件视图指定的访问位置将进程数据保存到进程组文件中,完成一次检查点的设置。

说明书全文

一种基于超级计算机的应用级多层检查点的优化方法

技术领域

[0001] 本发明属于计算机系统结构和高性能计算领域,尤其是一种基于超级计算机的应用级多层检查点的优化方法。

背景技术

[0002] 检查点是大规模科学计算程序中最典型的容错技术,其核心思想是将程序的最近运行状态保存至检查点内,在故障发生时通过读取检查点数据使程序恢复至最近运行状态。传统的检查点技术通过定期将中间状态数据保存到全局文件系统中实现容错功能,然而,随着高性能计算机系统规模越来越大,系统能够提供的平均无故障运行时间(mean time between failure)逐渐缩短,检查点技术面临严峻的性能问题。
[0003] 多层检查点技术根据不同类型故障发生的概率,合理的利用本地存储设备降低程序与全局文件系统交互的频率,从而减少设置检查点的时间开销。然而,现有的多层检查点优化方法依赖于超级计算机的硬件特性(如需要计算节点的本地非易失性存储设备),导致其往往不具备通用性。例如,在一些超级计算机上,没有提供计算节点的本地非易失性存储访问接口,所以无法发挥现有多层检查点框架的相关特性。

发明内容

[0004] 本发明的目的在于克服现有的多层检查点优化方法依赖于超级计算机的硬件特性,导致其往往不具备通用性的缺点,提供一种基于超级计算机的应用级多层检查点的优化方法。
[0005] 为达到上述目的,本发明采用以下技术方案予以实现:
[0006] 一种基于超级计算机的应用级多层检查点的优化方法,包括以下步骤:
[0007] 1)探测待分配节点列表,若待分配节点中有节点出现故障,则采用空闲列表中的节点进行替换,替换前后所述节点的顺序不变;
[0008] 2)读取检查点配置文件,获取检查点配置文件中三种故障类型发生的概率,确定各层检查点的放置时间序列;
[0009] 所述故障类型包括由于软件错误导致被提交任务的运行失败导致的故障、由于单个硬件节点故障导致被提交任务的运行失败导致的故障和由于多个硬件节点故障导致被提交任务的运行失败导致的故障;
[0010] 3)根据检查点配置文件中的任务运行信息,采用基于超级计算机体系架构的划分规则对硬件节点及运行在所述节点上的进程进行组划分;
[0011] 所述任务运行信息包括任务并行规模和每个硬件节点上运行的进程数;
[0012] 4)在进程组内通过一次MPI通信确定组内缺失数据的进程,采用故障类型判定算法确定发生在缺失数据的进程中的故障类型;
[0013] 5)针对故障类型,在硬件节点组内采用相应的恢复策略,将任务运行状态回滚至最近一次保存的状态;
[0014] 6)当运行至检查点放置时间序列中对应的时间点时,采用相应的检查点策略完成中间状态数据的保存;
[0015] 7)若尚未运行至最后时间点,返回步骤6);否则,结束运行。
[0016] 进一步的,步骤1)的具体操作为:
[0017] 定义待分配节点列表为worklist,空闲节点列表为sparelist;
[0018] 在提交任务之前,采用ping程序对worklist中的所有待分配节点进行检测,若待分配节点无法ping通,则采用sparelist中的节点对故障节点进行替换;
[0019] 完成所有故障节点的替换后,利用更新后的worklist进行任务提交。
[0020] 进一步的,在步骤2)中确定各层检查点的放置时间序列,具体包括以下步骤:
[0021] 201)定义三种故障类型分别为level、level2、level3,并且发生概率分别对应为:{p1,p2,p3};
[0022] 202)定义e1为发生level1故障,e2为发生level2故障,e3为发生level3故障,结合{p1,p2,p3},采用如下故障发生时间序列:
[0023] …,e3,e1,e1,e1,e2,e1,e1,e1,e2,e1,e1,e1,e3,e1,…
[0024] 203)定义s1为设置level1故障对应的检查点事件,s2为设置level2故障对应的检查点事件,s3为设置level1对应的检查点事件,对应多层检查点时间序列为:
[0025] …,s3,s1,s1,s1,s2,s1,s1,s1,s2,s1,s1,s1,s3,s1,…。
[0026] 进一步的,在步骤3)中,对硬件节点进行组划分的规则为:
[0027] 定义每个硬件节点上运行p个计算进程,在提交slurm脚本时指定-n参数为p,在程序中体现为每个硬件节点上运行p个进程,此时硬件节点组划分演变为将m个计算进程划分在一个通信组中;
[0028] 对运行在所述节点上的进程进行组划分的规则为:
[0029] 在硬件节点组中,将运行在硬件节点上的p个计算进程划分到不同进程组中,每个进程组包含m/p个进程。
[0030] 进一步的,在步骤4)中,采用故障类型判定算法确定发生在缺失数据的进程中的故障类型,包括以下步骤:
[0031] 401)打开进程在硬件节点上对应的共享内存区域,读取位于共享内存区域头部的1字节数据,若该数据为‘*’,则该进程的检查点数据有效,设置has_lost标志位为0;
[0032] 若该数据为‘#’,则该进程的检查点数据无效,设置has_lost标志位为1;
[0033] 402)在进程组内对has_lost标志位采用MPI_Allreduce函数进行累加,若has_lost在累加操作之后依旧为0,则说明没有发生硬件节点故障,此时故障类型为level1;
[0034] 403)定义单进程组内最大容错数为M,若has_lost不为0,且has_lost小于等于M,此时故障类型为level2;
[0035] 404)若hash_lost大于M,此时故障类型为level3。
[0036] 进一步的,在步骤5)中的恢复策略包括以下三种:
[0037] 1)若故障类型为level1,此时共享内存中的数据全部有效,各个进程直接读取共享内存中保存的数据即可完成恢复;
[0038] 2)若故障类型为level2,此时共享内存中的数据出现缺失,对出现数据缺失的进程采用RAID5编码策略进行恢复;
[0039] 3)若故障类型为level3,此时出现多份共享内存的数据缺失,采用并行IO策略进行恢复。
[0040] 进一步的,第二种恢复策略中,采用RAID5编码策略进行恢复的操作为:
[0041] 确定出现了数据缺失的进程;
[0042] 在该进程对应的进程组内进行一次MPI_Reduce操作进行数据恢复。
[0043] 进一步的,第三种恢复策略中,采用并行IO策略进行恢复的操作为:
[0044] 在进程组内各个进程根据访问文件偏移量创建文件视图,并从超级计算机的lustre文件系统中按照各进程文件视图读取进程组文件,完成数据恢复。
[0045] 进一步的,在步骤6)中,采用相应的检查点策略完成中间状态数据的保存具体如下:
[0046] 1)对于s1检查点事件,设置共享内存中的标志位为0,使用memcpy将进程的中间状态数据保存到共享内存中,保存完毕后,将该标志位置为1,完成一次检查点的设置;
[0047] 2)对于s2检查点事件,设置共享内存中的标志位为0,使用memcpy将进程的中间状态数据保存到共享内存中,保存完毕后,对位于共享内存中的数据进行条带划分,条带数目为进程组大小,在进程组内进行一次MPI_Reduce通信,完成RAID5校验和计算,进程组内每个进程分别保存不同条带的校验和,最后设置标志位为1,完成一次检查点的设置;
[0048] 3)对于s3检查点事件,进程组内各个进程建立独立的文件视图,各进程按照文件视图指定的访问位置将进程数据保存到进程组文件中,完成一次检查点的设置。
[0049] 与现有技术相比,本发明具有以下有益效果:
[0050] 本发明的基于超级计算机的应用级多层检查点的优化方法,针对不提供本地非易失性存储的超级计算机上,无法发挥出现有多层检查点框架利用本地非易失性存储设备减小设置检查点引入的时间开销的优势,通过使用共享内存结合数据冗余技术替代本地非易失性存储,不仅保证了数据的可恢复性,并且充分发挥了内存高带宽的特性,极大的减少了设置检查点引入的时间开销;采用硬件节点组划分技术,实现了硬件节点组之间的隔离性,若某硬件节点组中发生level3级别的故障,读取全局文件系统进行恢复,而若某硬件节点组中发生的是故障类型level1对应的故障,仅需要读取共享内存中的数据即可,硬件节点组之间的隔离性细化了设置检查点与检查点数据恢复的粒度,避免了全局通信开销;还采用进程组作为设置检查点与检查点数据恢复的基本单位,通过进程组划分技术,将运行在硬件节点上的进程划分到不同的进程组中,保证单个硬件节点故障只会导致进程组中的一个进程的共享内存数据失效,从而使用RAID5技术可以完成共享内存数据的恢复,避免了单个硬件节点故障导致进程组中多个进程的共享内存数据失效。附图说明
[0051] 图1为本发明的流程图

具体实施方式

[0052] 为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0053] 需要说明的是,本发明的说明书权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0054] 本发明提出的一种基于超级计算机的应用级多层检查点的优化方法总共包含三种类型的检查点方法,第一,采用操作系统提供的共享内存存储数据从而容忍软件错误;第二,采用操作系统提供的共享内存存储数据并结合RAID5编码,容忍单硬件节点故障;第三,采用MPI的并行IO技术容忍多硬件节点故障。相较于传统的利用超级计算机中计算节点的本地非易失性存储设备的多层检查点方法,本发明极大的扩展了多层检查点的可用性。该优化方法的提出对科学计算程序在高性能计算平台中容错建设具有一定的指导意义。
[0055] 下面结合附图对本发明做进一步详细描述:
[0056] 参见图1,图1为本发明的流程图,具体包括以下步骤:
[0057] 步骤1,在超级计算机的登录节点采用ping程序探测待分配节点列表,若待分配节点中有节点出现故障,则采用空闲列表中的节点对待分配节点列表中的故障节点进行原位替换(新节点出现在故障节点在待分配节点列中的同一位置);具体的:定义待分配节点列表为worklist,空闲节点列表为sparelist,在提交任务之前,首先在登录节点采用ping程序对worklist中的所有待分配节点进行检测,若出现待分配节点无法ping通的情况,则采用sparelist中的节点对故障节点进行原位替换,完成所有故障节点的替换后,使用新的worklist进行任务提交。
[0058] 步骤2,读取配置文件,获取超级计算机系统中各种故障发生的概率,确定对应故障类型的检查点的放置时间序列,具体包括以下步骤:
[0059] 201)读取配置文件中各种故障的概率,本发明中将故障分为三个级别:第一,由于软件错误导致被提交任务运行的失败;第二,由于单个硬件节点故障导致被提交任务运行失败;第三,由于多个硬件节点故障导致被提交任务运行失败。
[0060] 定义出现三个级别故障分别为level、level2、level3,并且其概率分别为:{p1,p2,p3};
[0061] 202)定义e1为发生level1故障,e2为发生level2故障,e3为发生level3故障,结合{p1,p2,p3},采用如下故障发生时间序列:
[0062] …,e3,e1,e1,e1,e2,e1,e1,e1,e2,e1,e1,e1,e3,e1,…
[0063] 203)定义s1为设置level1故障对应的检查点事件,s2为设置level2故障对应的检查点事件,s3为设置level1对应的检查点事件对应多层检查点时间序列:
[0064] …,s3,s1,s1,s1,s2,s1,s1,s1,s2,s1,s1,s1,s3,s1,…
[0065] 步骤3)为了减少设置检查点过程的通信开销,需要对硬件节点以及运行在节点上的计算进程进行分组,分组的具体规则如下:
[0066] 硬件节点分组规则为:定义每个硬件节点上运行p个计算进程,在提交slurm脚本时指定-n参数为p,在程序中体现为每个硬件节点上运行p个计算进程,此时硬件节点组划分演变为将m个计算进程(m为p的整数倍)划分在一个通信组中;
[0067] 进程分组规则为:在硬件节点组中,将运行在硬件节点上的p个计算进程划分到不同进程组中,每个进程组包含m/p个进程。
[0068] 步骤4)对完成步骤3的程序,在进程组内通过一次MPI通信确定组内缺失数据的进程,采用故障类型判定算法确定发生在组内的具体故障类型;故障判别算法如下:
[0069] 301)打开进程在硬件节点上对应的共享内存区域,读取位于共享内存区域头部的1字节数据,若该数据为‘*’,则表明该进程的检查点数据有效,置has_lost标志位为0;
[0070] 若该数据为‘#’,则表明该进程的检查点数据无效,置has_lost标志位为1;
[0071] 302)在进程组内对has_lost标志位采用MPI_Allreduce函数进行累加,若has_lost在累加操作之后依旧为0,说明没有发生硬件节点故障,此时故障类型为level1;
[0072] 303)定义单进程组内最大容错数为M,若has_lost不为0,且has_lost小于等于M,此时故障类型为level2;本发明采用RAID5编码策略,M=1;
[0073] 304)若hash_lost大于M,此时故障类型为level3。
[0074] 步骤5)对完步骤4)的程序,针对其故障类型,在进程组内采用对应的恢复策略,回滚到最近一次保存的运行状态,恢复策略如下:
[0075] 1)若故障类型为level1,则共享内存中的数据全部有效,各个进程直接读取共享内存中保存的数据即可完成恢复;
[0076] 2)若故障类型为level2,此时共享内存中的数据出现缺失,对出现数据缺失的进程采用恢复算法进行恢复;
[0077] 本发明中采用的是RAID5策略对数据进行恢复,具体如下:
[0078] 首先通过一次MPI_Allreduce通信确定哪一个进程出现了数据缺失,然后在该进程对应的进程组内进行一次MPI_Reduce操作进行数据恢复;
[0079] 3)若故障类型为level3,此时共享内存中的数据出现多份缺失,RAID5编码策略已经无法完成恢复,则采用并行IO策略,进程组内各个进程根据本进程访问文件偏移量创建文件视图,并直接从超级计算机的全局文件系统中按照进程文件视图并行读取进程组文件,完成数据恢复。
[0080] 步骤6)对完成步骤5)的程序,当到达检查点放置时间序列时,采用时间点对应的检查点策略完成中间状态数据的保存;检查点策略分为三种,分别对应s1,s2,s3三种检查点事件:
[0081] 第一种、设置共享内存中的标志位为0,使用memcpy将进程的中间状态数据保存到共享内存中,保存完毕后,将该标志位置为1,完成一次检查点的设置;
[0082] 第二种、设置共享内存中的标志位为0,使用memcpy将进程的中间状态数据保存到共享内存中,保存完毕后,对位于共享内存中的数据进行条带划分,条带数目为进程组大小,在进程组内进行一次MPI_Reduce通信,完成RAID5校验和计算,进程组内每个进程分别保存不同条带的校验和,最后设置标志位为1,完成一次检查点的设置;
[0083] 第三种、进程组内各个进程根据自身访问文件的偏移量建立文件视图,打开进程组文件,各进程按照文件视图指定的访问位置将进程数据保存到进程组文件中,完成一次检查点的设置。
[0084] 步骤7)若尚未运行至检查点放置时间间隔序列中的最后一次时间点,返回至步骤6)继续执行;否则结束检查点放置。
[0085] 以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈