论文部分内容阅读
近年来,高性能计算(High Performance Computing,HPC)系统在规模和拥有的处理器数量上有迅速增长的趋势。而系统出现故障的可能性也随之大大增加。如何设计高效可靠的容错机制已经是高性能计算领域中迫切需要解决的问题。MPI(Message Passing Interface)是高性能计算系统中事实上的编程规范。在多种包含进程级容错功能的MPI实现中,FT-MPI[7]检查点/恢复机制的系统开销较低。然而其容错机制并非对用户透明,恢复阶段对MPI通信域和用户数据的恢复需要在应用程序一级实现。
本文基于FT-MPI运行时环境和多种纠删码(RAID4/RAID5/RDP/B-code),实现了一种轻量级的MPI程序容错机制。根据对系统开销和容错要求的不同,用户可以选用基于不同编码设计的检查点/恢复接口,能够在系统中多个进程或者节点故障的情况下实现运算中间数据的自动恢复。
通过对消息传递系统中主流容错机制的充分研究,我们选定了基于纠删码的内存协同检查点协议作为设计各检查点/恢复接口的解决方案。在做检查点时,接口根据某种编码把处于同一条纹中的数据按位异或后得到冗余数据,保存在某个冗余进程或者散布于各个进程中。按照协同检查点协议,各个工作进程在相同的位置调用检查点接口,系统每一时刻只保存最近的一个检查点。恢复时,FT-MPI首先恢复MPI运行时环境和MPI库的状态,然后应用程序调用恢复接口,从之前保存的内存检查点数据中通过解码恢复重启进程的检查点数据,使得整个程序回滚到上一次做检查点的状态并继续运行。
本文将多种接口的性能进行了比对,包括调用接口的时间开销,以及引入检查点机制对于系统资源的占用。测试中发现,各检查点/恢复接口的效率主要取决于接口中调用的MPI组通信函数。本文将对接口测试中性能差异的原因进行详细的描述,并给出相应的优化方案。通过对各种接口在FT—MPI环境下的测试,发现接口性能良好,开销较小,证明了这种检查点/恢复机制实际应用于分布式计算系统中的可行性。