基于消息传递的HPC大规模并行程序异常的检测系统技术方案

技术编号:14680982 阅读:35 留言:0更新日期:2017-02-22 14:09
本发明专利技术公开了一种基于消息传递的HPC大规模并行程序异常自动监测及软硬件原因判断的检测系统,该系统克服了集中式检测机制性能开销大,扩展性差的问题,通过对消息传递行为的异常监测,被动心跳机制为每个节点上的工作进程设置消息监控计时器,当消息行为发生异常时,才会向主控节点发送心跳消息,而在正常情况下,并不用发送心跳,从而避免了对网络资源的占用,扩展性也不会因此受限,利用可疑事件定位机制,只在需要的时候进行状态检查,本发明专利技术对MPI程序的执行所造成的性能开销可以忽略不计,易于扩展支持高性能计算机上的大规模并行应用程序在运行和调试阶段的运行错误软硬件原因的判断。

【技术实现步骤摘要】

本专利技术涉及一种应用于HPC大规模并行程序的异常检测器、以及对于所述HPC大规模并行程序运行失败的原因进行软硬件判断的检测系统。更特别地说是一种基于消息传递采用被动心跳机制自动触发异常报警,并通过可疑事件定位机制进行异常软硬件原因检测和判定的检测系统。
技术介绍
高性能计算(highperformancecomputing,HPC)的规模庞大,结构复杂,计算能力强大,从了解蛋白质折叠过程到预测短期和长期的气候模式,大规模并行HPC模拟成为人们首选的工具,这些应用程序可以运行详细的数值模拟,为现实世界建模,使科学和工程领域的突破成为可能。随着HPC向Exascale(百亿亿次,E级)计算推进,计算能力显著提高的同时,由于规模的增大,部件的增多,系统结构更加的复杂,运行其上的HPC应用程序在运行过程失败的概率也会增多。HPC应用程序具有大规模和并行的特点,它可能会运行在数以百计数以千计的节点上,数以万计数以十万计的处理器核上。导致程序出错的原因可能来源于软件错误,也可能来源于硬件系统故障。而在应用程序级别,可能会有相同或者相似的程序行为。加之错误在程序执行过程中的传播。开发人员和调试人员以及用户很难判断。HPC领域的科学计算程序在执行过程中发生失败,相关研究表明,高性能计算机程序执行失败的各项原因中,程序本身的软件错误和硬件系统的故障占了其中绝大部分,程序软件本身的错误主要是由于程序的错误引起的,按照对程序执行过程的影响可以分为失败-终止(fail-stop)和失败-非终止(fail-nonstop)错误,失败-终止是指程序错误导致了程序的异常退出,而失败-非终止是指程序错误只是对程序的变量或者数据产生影响,而没有使程序终结,程序能够执行下去,但最终产生的计算结果很可能是不正确的。而大规模并行程序的错误有些只有在大规模的程序运行过程中才能显现出来。HPC系统的硬件系统发生故障,可能会导致瞬时故障,导致数据损坏的发生,当数据损坏发生在控制变量上,则会影响程序的正常执行,导致程序的非正常终结,而若发生在非控制变量上,则会改变数据的值,使得计算结果不正确。也可能会发生永久性故障,那么该节点上运行的MPI(messagespassinginterface,消息传递)工作进程显然会异常退出。而在应用级,用户可能无法及时察觉到这些异常情况。另一方面,随着HPC规模向E级推进,可靠性的问题更加突出。虽然随着科技和工艺技术的不断提高,单个电子器件的MTBF(meantimebetweenfailures,平均无故障运行时间)可以高达106小时,但对于现有的P级(Petascale,千兆级)系统来说,可能有数万个甚至数十万个处理器,系统的整体MTBF也只能达到1~100小时。对于那些运行规模很大,运行时间很长的HPC应用程序来说,在程序执行过程中发生硬件系统故障是在所难免的。软件错误和硬件故障都有可能导致程序进程的非正常终结或者导致错误的计算结果,从程序行为的角度来看,两者导致的结果并没有本质的区别。由于HPC应用运行在大规模的节点上,发生失败可能会发生在任意的时间点,任意的节点上,用户并不能确定,甚至用户并不能察觉到这种失败,也不能确定异常发生的时间点,位置,以及根源。这给HPC大规模并行程序的调试以及生产过程中的故障诊断带来很大的难度。
技术实现思路
为了确定出HPC大规模并行程序执行失败的根源原因,本专利技术的目的是提供一种基于消息传递的程序异常自动监测及软硬件原因判别的检测系统,该检测系统利用科学计算应用程序中普遍存在的消息传递,采用被动心跳机制,实现了HPC大规模并行程序执行过程中异常的自动报警并触发可疑事件的定位;一方面克服了采用集中式的心跳机制检查系统硬件状态需要进行周期性地检测,开销大,可扩展性差的问题;另一方面实现了HPC大规模并行程序执行过程中异常的自动报警和检测,准确定位硬件故障,同时为软件的错误根源定位提供最具可能性的若干候选项。本检测系统提高了程序调试和问题诊断的效率和准确度,降低了时间开销和资源浪费。本专利技术检测系统由服务初始化模块(1)、节点信息采集模块(2)、本地消息传递监测模块(3)、节点内心跳管理模块(4)、心跳检测模块(5、6)、可疑事件检测定位模块(7、8)、报告生成模块(9)和服务关闭模块(10)组成。称HPC程序MPI进程运行所在的节点为工作节点,选择MPIrank为0的进程所在的节点为主控节点。主控节点上如果运行有MPI工作进程,那么该节点即是主控节点也是一个工作节点。其中服务初始化模块、本地消息传递检测模块、节点内心跳管理模块位于所有的工作节点上,节点信息采集模块、报告生成模块和服务关闭模块位于主控节点上。心跳检测模块分为SERVER端和CLIENT端两部分,SERVER端位于主控节点上,CLIENT端位于工作节点上。可疑事件检测定位模块也分为SERVER端和CLIENT端两部分,CLIENT端位于主控节点上,而在每个工作节点上都有一个SERVER端。服务初始化模块在HPC程序执行的开始阶段分别启动三个服务进程,分别是心跳检测服务,该服务即是主控节点上的心跳检测模块的SERVER端;可疑事件检测定位服务,即是位于工作节点上的可疑事件检测定位模块的SERVER端;本地心跳管理服务,即是位于每个工作节点上的节点内心跳管理模块。节点信息采集模块收集HPC程序运行时的进程相关信息及各进程运行所在的结点的相关信息,包括MPI进程的进程Id,节点名,IP地址等,为后面的可疑事件检测定位模块确定需要检查的节点列表。本地消息传递监测模块监测本地工作进程中的消息传递操作,当存在消息传递发生时,生成一个请求重置计时器的通知,通过计时器超时警报该进程中消息传递的异常行为。节点内心跳管理模块对同一个节点上运行的隶属于同一个HPC程序的多个工作进程的状态进行监测和管理,接收工作进程发送来重置计时器请求,重置计时器,当计时器超时时,向主控节点的心跳检测模块SERVER端发送一条心跳消息。心跳检测模块包括SERVER端和CLIENT端两部分,之间采用TCP的方式建立socket连接进行消息的发送和接收。SERVER端位于主控节点上,等待接收来自各个工作节点的心跳消息,设定一个程序行为异常报警的Threshold,CLIENT端以函数调用的方式被实现,由各个工作节点上的本地心跳管理服务调用,向SERVER端发送心跳消息。SERVER端接收到的心跳消息数量超过Threshold时判定当前程序执行过程中存在可疑事件发生导致程序行为异常,从而触发可疑事件检测定位。可疑事件检测定位模块也分为SERVER端和CLIENT端两部分,之间采用UDP的方式建立socket连接进行消息的发送和接收。SERVER端位于每个工作节点上,即由服务初始化模块在程序开始阶段启动的可疑事件检测定位服务,等待接收来自CLIENT端的检测请求并回复响应信息。CLIENT端位于主控节点上,以函数调用的方式实现,当触发可疑事件检测定位时,采用轮询地方式,向每个工作节点发送检测请求,获取各个节点的硬件系统状态。报告生成模块记录可疑事件检测定位的结果,内容包括节点名、节点IP以及硬件系统状态alive或者dead等。当存在节点状态为dead时,本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/55/201610854431.html" title="基于消息传递的HPC大规模并行程序异常的检测系统原文来自X技术">基于消息传递的HPC大规模并行程序异常的检测系统</a>

【技术保护点】
一种基于消息传递的HPC大规模并行程序异常自动监测及软硬件原因判断的检测系统,其特征在于:检测系统由服务初始化模块(1)、节点信息采集模块(2)、本地消息传递监测模块(3)、节点内心跳管理模块(4)、CLIENT端心跳检测模块(5)、SERVER端心跳检测模块(6)、CLIENT端可疑事件检测定位模块(7)、SERVER端可疑事件检测定位模块(8)、报告生成模块(9)和服务关闭模块(10)组成;服务初始化模块(1)用来初始化启动三个服务进程,即心跳检测服务、可疑事件检测定位服务和本地心跳管理服务;节点信息采集模块(2)收集HPC程序运行时的进程相关信息及各进程运行所在的节点相关信息;本地消息传递监测模块(3)监测本地工作进程中的消息传递操作,当存在消息传递发生时,生成一个请求重置计时器的通知,通过计时器超时警报该进程中消息传递的异常行为;节点内心跳管理模块(4)对同一个节点上运行的隶属于同一个HPC程序的多个工作进程的状态进行监测和管理,接收工作进程发送来重置计时器请求,重置计时器,当计时器超时时,向主控节点的SERVER端心跳检测模块(6)发送一条心跳消息;通过本地消息传递监测模块(3)结合节点内心跳管理模块(4)实现了在发现消息传递有可疑迹象时,才向外发送心跳消息,当心跳检测服务端接收到心跳信息时,则说明心跳发送方监控的工作进程中在一个监测期内没有发生消息传递操作,导致这种情况的原因有4种:原因A:MPI程序的代码可划分为两部分,计算代码区和通信代码区,计算代码区用于各种计算任务,通信代码区负责进程之间消息的传递,当工作进程执行计算代码花费的时间过长,那么监测期内很可能不会进行消息传递;原因B:程序错误导致本地工作进程出现了阻塞、死锁、异常退出的现象,工作进程无法正常进展下去导致不再发生消息传递操作;原因C:将相互通信的节点称为对等节点,相互通信的进程称为对等进程,某个节点上的工作进程发生异常有可能是由于对等进程的异常引起的,这种现象叫做错误的级联传播;对等节点上的对等进程由于程序错误而出现了阻塞、死锁、异常退出的现象,由于进程之间的相互影响,导致本地工作进程也出现了阻塞、死锁、异常退出的现象,监测期内不会发现消息传递;原因D:本地工作进程的对等节点发生了硬件系统故障,这种情况下,该对等节点上的工作进程异常结束,导致本地工作进程执行过程中发生阻塞、死锁或异常退出等问题,不再发生消息传递操作;心跳检测模块包括SERVER端和CLIENT端两部分,之间采用TCP的方式建立连接进行消息的发送和接收;SERVER端位于主控节点上,等待接收来自各个工作节点的心跳消息,设定一个程序行为异常报警的心跳阈值,CLIENT端以函数调用的方式被实现,由各个工作节点上的本地心跳管理服务调用,向SERVER端发送心跳消息;SERVER端接收到的心跳消息数量超过心跳阈值时,判定当前程序执行过程中存在可疑事件发生导致程序行为异常,从而触发可疑事件探测定位;所述CLIENT端心跳检测模块(5)以静态库函数调用的形式实现,当节点内心跳管理模块(4)发现所在节点消息传递行为异常时,调用该函数调用,CLIENT端心跳检测模块(5)会与SERVER端心跳检测模块(6)建立起TCP socket连接,向SERVER端心跳检测模块(6)发送心跳信息;可疑事件探测定位模块也分为SERVER端和CLIENT端两部分,之间采用UDP的方式建立连接进行消息的发送和接收;SERVER端位于每个工作节点上,即由服务初始化模块在程序开始阶段启动的可疑事件探测定位服务,等待接收来自CLIENT端的探测请求并回复响应信息;CLIENT端位于主控节点上,以函数调用的方式实现,当触发可疑事件探测定位时,采用轮询地方式,向每个工作节点发送探测请求,获取各个节点的硬件系统状态;报告生成模块(9)记录可疑事件探测定位的结果,内容包括节点名、节点IP以及节点状态,即正常或者故障;当存在节点状态为故障时,判定导致HPC程序执行失效的原因为硬件系统故障,否则为软件错误引起的;服务关闭模块(10)将在程序执行结束后对服务初始化模块所启动的三个服务即心跳检测服务、可疑事件探测定位服务和本地心跳管理服务进行清理;原因是在初始化阶段,为了避免对HPC程序执行的影响,将这三个服务以独立进程的方式而非MPI进程的方式运行。...

【技术特征摘要】
1.一种基于消息传递的HPC大规模并行程序异常自动监测及软硬件原因判断的检测系统,其特征在于:检测系统由服务初始化模块(1)、节点信息采集模块(2)、本地消息传递监测模块(3)、节点内心跳管理模块(4)、CLIENT端心跳检测模块(5)、SERVER端心跳检测模块(6)、CLIENT端可疑事件检测定位模块(7)、SERVER端可疑事件检测定位模块(8)、报告生成模块(9)和服务关闭模块(10)组成;服务初始化模块(1)用来初始化启动三个服务进程,即心跳检测服务、可疑事件检测定位服务和本地心跳管理服务;节点信息采集模块(2)收集HPC程序运行时的进程相关信息及各进程运行所在的节点相关信息;本地消息传递监测模块(3)监测本地工作进程中的消息传递操作,当存在消息传递发生时,生成一个请求重置计时器的通知,通过计时器超时警报该进程中消息传递的异常行为;节点内心跳管理模块(4)对同一个节点上运行的隶属于同一个HPC程序的多个工作进程的状态进行监测和管理,接收工作进程发送来重置计时器请求,重置计时器,当计时器超时时,向主控节点的SERVER端心跳检测模块(6)发送一条心跳消息;通过本地消息传递监测模块(3)结合节点内心跳管理模块(4)实现了在发现消息传递有可疑迹象时,才向外发送心跳消息,当心跳检测服务端接收到心跳信息时,则说明心跳发送方监控的工作进程中在一个监测期内没有发生消息传递操作,导致这种情况的原因有4种:原因A:MPI程序的代码可划分为两部分,计算代码区和通信代码区,计算代码区用于各种计算任务,通信代码区负责进程之间消息的传递,当工作进程执行计算代码花费的时间过长,那么监测期内很可能不会进行消息传递;原因B:程序错误导致本地工作进程出现了阻塞、死锁、异常退出的现象,工作进程无法正常进展下去导致不再发生消息传递操作;原因C:将相互通信的节点称为对等节点,相互通信的进程称为对等进程,某个节点上的工作进程发生异常有可能是由于对等进程的异常引起的,这种现象叫做错误的级联传播;对等节点上的对等进程由于程序错误而出现了阻塞、死锁、异常退出的现象,由于进程之间的相互影响,导致本地工作进程也出现了阻塞、死锁、异常退出的现象,监测期内不会发现消息传递;原因D:本地工作进程的对等节点发生了硬件系统故障,这种情况下,该对等节点上的工作进程异常结束,导致本地工作进程执行过程中发生阻塞、死锁或异常退出等问题,不再发生消息传递操作;心跳检测模块包括SERVER端和CLIENT端两部分,之间采用TCP的方式建立连接进行消息的发送和接收;SERVER端位于主控节点上,等待接收来自各个工作节点的心跳消息,设定一个程序行为异常报警的心跳阈值,CLIENT端以函数调用的方式被实现,由各个工作节点上的本地心跳管理服务调用,向SERVER端发送心跳消息;SERVER端接收到的心跳消息数量超过心跳阈值时,判定当前程序执行过程中存在可疑事件发生导致程序行为异常,从而触发可疑事件探测定位;所述CLIENT端心跳检测模块(5)以静态库函数调用的形式实现,当节点内心跳管理模块(4...

【专利技术属性】
技术研发人员:刘轶张国振
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京;11

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

1