发明名称 基于消息传递的HPC大规模并行程序异常自动监测及软硬件原因判断的检测系统
摘要 本发明公开了一种基于消息传递的HPC大规模并行程序异常自动监测及软硬件原因判断的检测系统,该系统克服了集中式检测机制性能开销大,扩展性差的问题,通过对消息传递行为的异常监测,被动心跳机制为每个节点上的工作进程设置消息监控计时器,当消息行为发生异常时,才会向主控节点发送心跳消息,而在正常情况下,并不用发送心跳,从而避免了对网络资源的占用,扩展性也不会因此受限,利用可疑事件定位机制,只在需要的时候进行状态检查,本发明对MPI程序的执行所造成的性能开销可以忽略不计,易于扩展支持高性能计算机上的大规模并行应用程序在运行和调试阶段的运行错误软硬件原因的判断。
申请公布号 CN106445781A 申请公布日期 2017.02.22
申请号 CN201610854431.3 申请日期 2016.09.27
申请人 北京航空航天大学 发明人 刘轶;张国振
分类号 G06F11/30(2006.01)I;G06F11/32(2006.01)I;G06F11/07(2006.01)I 主分类号 G06F11/30(2006.01)I
代理机构 北京永创新实专利事务所 11121 代理人 李有浩
主权项 一种基于消息传递的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进程的方式运行。
地址 100191 北京市海淀区学院路37号