随着超级计算机变得越来越强大,它们也越来越容易出现故障,因为内置部件的数量越来越多。本周出席在盐湖城举行的SC12超级计算会议的几位研究人员提出了有望解决这一日益严重的问题的解决方案。今天的高性能计算(HPC)系统可能有100,000个或更多的节点,每个节点由内存、处理器、总线和其他电路等多个组件组成。从统计上讲,所有这些部分都必然会在某个时刻发生故障;当他们失败时,超级计算机就会关闭,北卡罗来纳州立大学的博士生大卫菲亚拉在SC12的演讲中说。当然,这个问题并不是什么新鲜事。美国劳伦斯利弗莫尔国家实验室600个节点的ASCI(AcceleratedStrategicComputingInitiative)怀特超级计算机在2001年投入使用时,平均故障间隔时间(MTBF)只有5小时,非常短这是主要是由于频繁的组件故障。Fiala表示,经过一些调整,ASCIWhite的MTBF延长至55小时。但随着超级计算机节点数量的增加,这个问题会越来越严重。“必须有办法做到这一点,”菲亚拉说。“随着我们进入百亿亿次级计算时代,这个问题只会变得更糟。”他表示,在计算能力方面,未来十年的超级计算机将是今天超级计算机的十倍。Fiala说,当今处理系统故障的技术和方法可能不是很可扩展。他举了一个检查点的例子:一个正在运行的程序被暂时停止,它的状态被保存到磁盘;如果程序稍后崩溃,系统可以从之前的检查点重新启动任务。据Fiala介绍,这种设置检查点的方法存在的问题是,随着节点数量的增加,设置检查点所需的开销也会增加,并且会急剧增加。例如,在具有100,000个节点的超级计算机上,只有大约35%的活动与执行作业有关。Fiala估计,如果发生系统故障,其余活动将由检查点和恢复操作承担。Fiala说,百亿亿次计算系统需要额外的硬件,可以用数百万或更多的部件构建,系统的可靠性必须提高100倍才能保持与当今超级计算机相同的水平。计算机的MTBF相同。Fiala描述了他和其他研究人员开发的有助于提高稳定性的技术。该技术解决了静态数据损坏问题,静态数据损坏是指系统将数据写入磁盘时发生的未检测到的错误。基本上,研究人员的方法涉及同时运行程序的多个副本(或“克隆”)并比较答案。该软件名为RedMPI,与消息传递接口(MPI)一起运行,消息传递接口(MPI)是一个函数库,用于跨多个服务器对运行的应用程序进行分区,以便程序的不同部分可以并行执行。RedMPI拦截并复制应用程序发送的每条MPI消息,并将消息的副本发送给程序的克隆(或多个克隆)。如果不同的克隆计算出不同的答案,数字会被快速重新计算,从而节省再次运行整个程序所需的时间和资源。“实现冗余并不昂贵,”Fiala说。“所需的处理器核心数量可能会很高,但这避免了重写操作和检查点重启操作的需要。当然,另一种方法是只重新运行作业,直到你认为你得到了正确的答案。”Fiala建议为每个程序制作两份备份副本以实现三重冗余。虽然制作正在运行的程序的多个副本最初可能会占用更多资源,但随着时间的推移它实际上会更有效率,因为不需要重新运行程序来检查答案。此外,当多个副本运行时,可能不需要检查点,这也有望节省系统资源。“我认为确保冗余的想法实际上是一个好主意,”参加会议的加州大学圣克鲁兹分校计算机科学教授伊森米勒说。有些情况下可能会出现错误。”但他说,考虑到这种冗余机制可能产生的网络流量,这种方法可能不太合适。相反,他建议在同一组节点上运行所有应用程序,这将有望最大限度地减少节点到节点的通信流量。在另一场演讲中,伊利诺伊大学香槟分校的博士生AnaGainaru介绍了一种方法:分析日志文件以预测系统何时可能发生故障。方法结合了信号分析和数据挖掘。信号分析用于表征正常行为,以便在故障确实发生时很容易发现故障。数据挖掘寻找不同报告错误之间的相关性。其他研究人员表明,故障有时是相关的;那是因为根据Gainaru的说法,一种技术的故障会影响其他技术的性能。例如,当网卡出现故障时,它会迅速阻碍依赖网络的其他系统进程工作交流。研究人员发现,70%的相关故障提供了超过10秒的机会窗口。换句话说,在出现第一个故障迹象后,系统最多有10秒的时间来保存它正在处理的工作,或者将工作转移到另一个节点,然后再发生更严重的故障。“故障预测可以与其他容错技术或方法相结合,”Gainaru说。
