[发明专利]基于OpenMP线程心跳检测技术的程序检测方法及应用有效
申请号: | 201811086985.9 | 申请日: | 2018-09-18 |
公开(公告)号: | CN109213684B | 公开(公告)日: | 2022-01-28 |
发明(设计)人: | 王伟东;骆旺达 | 申请(专利权)人: | 北京工业大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京思海天达知识产权代理有限公司 11203 | 代理人: | 刘萍 |
地址: | 100124 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 openmp 线程 心跳 检测 技术 程序 方法 应用 | ||
本发明公开了基于OpenMP线程的环形拓扑心跳检测方法与应用,解决现有技术条件下不能有效检测基于OpenMP并行技术中各个线程程序运行状态等问题。当检测到某一线程初始化时,以该线程的线程号为基础建立线程结构体;当线程启动时,记录线程初始时间戳,倘若该线程运行期间满足预定义时间间隔,系统就记录一次该线程产生的心率值,并判断当前线程是否处于正常运行、挂起、忙等、正常退出、异常退出等状态。此外,本方法可绘制线程心率曲线,远程监视心率变化。本方法设计API函数并注入主程序,以环形链表的方式进行心跳状态检测,相比于传统的集中式检测方法,本方法无需生成额外的中心检测线程,优化了系统运行效率,提高检测的准确性。
技术领域
本发明涉及OpenMP并行技术领域。更具体地,涉及一种基于OpenMP并行技术下线程的环形拓扑心跳检测方法与应用。
背景技术
随着计算机技术的广泛应用,在大数据计算与特征分析领域中,在大规模的分层架构和异构硬件之间通常会涉及成百上千的用于并行性计算的进程或线程。这两种程序在其长时间运行过程中,很可能会出现各种异常而导致运行的进程或线程序故障。这些故障很可能是由于硬件错误或者软件错误引起,它们也可以是永久的或短暂的故障。永久性故障的产生原因主要来自CPU、内存或其他硬件,而瞬态故障通常无法追溯,通常会潜移默化地影响着程序执行的正确性。特别地,瞬态故障原因或多或少与设备暴露噪声有关,例如寄存器中某位反转。
在超级计算机中,进行复杂、强力计算很可能会导致环境过载、内存溢出等异常状况,致使程序故障变得频繁,以至于很难确保计算结果的正确性。永久(或硬)性故障可以暂停应用程序执行,而瞬态(软)故障通常会默默发生、影响着计算结果的正确性。通过程序的负载开销和心率检测,根据经验,通常程序负载开销率在30%以下且具有稳定的心率,一般情况下可以确保程序计算的正确性,其余为良性缺陷。据报道,超级计算机的平均故障间隔时间(MTBF),在几小时到几天之间,未来亿亿级超级计算机的预测故障率大约为几分钟或几小时。在多线程应用程序中,API调用,如函数:pthread kill(tid,0),只能检查线程是活跃还是死亡。如果线程处于挂起状态,则上述API函数调用将失去功能。在多线程应用程序中,有一些问题需要解决。例如,当在一个线程中发生致命错误时,CPU将对其核心进行转储,并且所有其他线程将被终止。同样,我们需要知道一个线程的状态,例如挂起,死亡或活跃。特别地,在OpenMP并行技术中很少有可以报告线程状态检测的工具。
近年来,计算机技术、大数据技术的广泛应用,计算机系统的可靠性成为越来越重要的话题,对于那些执行关键业务的计算机,被要求以较高的可靠性运行。倘若其在运行过程出现宕机状况无法追溯或与所供给数据之间出现偏差,都会造成巨大损失。所以,通过API提供函数操作,动态检测软件主程序线程的心率值,进而研究线程的可靠性,成为了当前研究的热点。心跳监控技术使用日益增多。心跳机制是高可用集群的基础技术,心跳监控技术可以周期性地检测集群中结点的工作状态,动态检测节点工作状态的趋势并记录。当程序节点的工作状态发生异常时,其可以动态地通知系统软件或为用户报告运行时刻的故障,提醒使用者进行系统或软件参数修正,保证程序的可靠性。
在方法的设计中,采取了基于环型拓扑的心跳检测机制,同时也被引入以支持OpenMP程序运行,通过模拟人行动时产生的心跳为基准,进而通过线程活动的频次来验证线程活跃状态,通过心跳线程与初始化线程运行时间的差值来检测心跳运行的负载。以上述内容为基础,实现了线程的心跳检测方法,并完成一套基于OpenMP并行技术下的线程心率检测的软件,并进行线程状态报告。
发明内容
本发明一个目的在于提供一种基于OpenMP线程的环形拓扑心跳检测方法,用于在OpenMP并行技术下对主程序线程进行心率检测应用。
本发明以OpenMP并行技术为基础,在多线程环境下通过环形检测机制动态检测每一个线程的运行状态,通过设定的时间间隔阈值,动态记录每一个线程产生的心率。在当前线程生成心率并记录后,紧接着通过运行状态模板对当前线程的后继邻居线程进行状态检测,并报告线程状态。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京工业大学,未经北京工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811086985.9/2.html,转载请声明来源钻瓜专利网。