一种软件可靠性时间序列预测方法及应用技术

技术编号:20545600 阅读:23 留言:0更新日期:2019-03-09 18:32
本发明专利技术公开了一种软件可靠性时间序列预测方法及应用,并在上述基础下,基于复杂JAVA多线程环境,实现线程运行状态监测,线程时间序列采集并可视化,评估线程运行的可靠性及预测线程在未来可能的状态变化趋势曲线。该方法包括:步骤一、注入JAVA程序进行线程状态监控及采集线程时间序列信息;步骤二、可视化线程时间序列,建立LSTM模型,并基于线程时间序列曲线进行模型训练,建立训练集和测试集;步骤三、以训练完的LSTM模型对当前时间段进行可靠性验证及对未来时间段进行趋势曲线预测。本发明专利技术解决在JAVA多线程环境下,线程时间序列采集及可视化的问题,并基于环形拓扑的线程监控及线程时间序列分析,提供更加完善、便捷、高效的线程可靠性评估方法。

A Time Series Prediction Method for Software Reliability and Its Application

The invention discloses a software reliability time series prediction method and its application. On the basis of the above, based on the complex JAVA multi-threading environment, the thread running state monitoring is realized, the thread time series collection and visualization are realized, the reliability of the thread running is evaluated, and the possible state change trend curve of the thread in the future is predicted. The method includes: step 1, injecting JAVA program to monitor thread status and collect thread time series information; step 2, visualizing thread time series, establishing LSTM model, and training model based on thread time series curve, establishing training set and test set; step 3, verifying the reliability of the current period and future period with the trained LSTM model. Predict the trend curve. The invention solves the problem of collecting and visualizing thread time series in JAVA multi-threaded environment, and provides a more perfect, convenient and efficient thread reliability evaluation method based on thread monitoring and thread time series analysis of ring topology.

【技术实现步骤摘要】
一种软件可靠性时间序列预测方法及应用
本专利技术涉及JAVA多线程可靠性评估应用领域。更具体地,涉及一种软件可靠性时间序列预测方法及应用。
技术介绍
随着信息科学技术的广泛使用,在大规模复杂计算、机器学习和网络爬虫等多线程应用领域中,所执行的高级语言程序通常会涉及成百上千个用于并行计算的线程。大量线程在长时间的运行过程中,很可能会因为系统环境突发的各种异常而导致运行中线程出现突然终止或计算失效的情况,这些突发的异常现象很可能是由于系统过载、硬件老化或者软件错误等问题引起。发生这些异常现象时,线程经常会直接终止或者默认继续运行,导致系统很难对此过程中发生的异常状况进行检测和追溯。为了检测软件程序运行过程中各线程工作状况,提供一种可靠性时间序列曲线分析工具,对线程进行可靠性检测与预测,很多研究人员都对此进行深入的实践研究。近年来,计算机系统运行的可靠性一直受到用户的普遍关注,如果在运行过程中频繁出现异常状况,导致系统的运行数据无法追溯或与所产生的实际结果不一致,都会造成巨大经济损失。此外,当前软件领域,大部分程序是整套成型的软件系统,很多软件是通过JAVA语言设计和开发,重构软件系统所需的经济与时间成本巨大。本专利技术程序以API函数注入的形式,无需对主程序进行较大范围改动,就能对主程序中各线程状态进行检测,进而减少由主程序重构带来的成本。通过引入时间序列曲线图并对时间序列曲线进行特征分析,可以更好的提供一个线程工作状态评估方法。本专利技术中可靠性时间序列是将某种统计指标的数值按时间先后顺序排序所形成的数列。通过采用时间序的分析方法,根据时间序列曲线反映出的发展过程、方向、趋势,进行类推或拓展,借此可分析当前时间段内的水平及下一段时间内的水平趋势。通过时间序列的分析方法可以更好的模拟线程的工作状态,提供一个对应时间段的线程工作频率,使得研究人员能更好的通过线程时间序列对程序运行状态进行可靠性评估。为解决复杂环境下JAVA线程状态监测的问题,本专利技术程序采用基于环形线程工作状态检测机制及累计均值的线程频率计算方法,来检查JAVA程序中各线程的工作状态,并采集以线程工作频率为观测点的时间序列数据,并绘制可靠性时间序列可视化曲线图。通过LSTM模型对可靠性时间序列数据进行建模,对投入训练的时间序列进行特征分析,并评估当前时间段内线程的可靠性及预测未来某一时间段内线程状态的变化趋势。
技术实现思路
本专利技术目的在于提供一种软件可靠性时间序列预测方法,用于在JAVA多线程环境下对主程序中各线程进行动态检测、时间序列数据可视化、线程状态评估、线程预测等。本专利技术以JAVA多线程技术为基础,在多线程环境下通过环形检测机制动态地检测主线程中各线程的运行状态。当线程工作迭代周期满足阈值条件时,时间周期一般指10的整数倍迭代所消耗的时间;计算该线程的工作频率并记录数值。在线程完成工作频率计算及记录后,紧接着通过环形检测机制对该线程的后继线程进行状态检测。再此过程中,将收集的时间序列数据可视化,通过LSTM模型对时间序列曲线数据进行训练,提取样本特征,并通过LSTM模型对线程目前时段的工作频率进行可靠性评估及预测未来一段时间内线程的状态变化情况。为达到上述目的,本专利技术采用下述方法:一种软件可靠性时间序列预测方法及应用,所述方法包括以下步骤:1)API函数注入线程主程序,收集线程时间序列信息及工作状态。2)采用基于环形的线程工作状态检测机制对线程进行动态监控。3)采用基于累加均值的工作频率计算方法对线程工作频率记录,生成线程时间序列数据。4)可视化时间序列曲线图,基于线程时间序列数据训练LSTM(长短期记忆网络)模型,获得训练集和测试集,通过LSTM模型对线程未来的状态变化进行预测。API函数注入主程序的方法,是通过API程序引入主程序的方法,保证仅对线程主程序进行细微改造的前提下,将本方法所实现的功能全部引入到线程主程序中。本方法编写纯JAVA实现核心API函数。采取函数封装的思想,并通过程序函数的形式封装,设置接口调用函数。使得代码以模块的形式存在,便于对特定功能进行调用、更新和修改。基于环形的线程工作状态检测机制,主要内容是将主程序产生的线程关联起来,并通过线程间相互检测,完成在一个阈值条件内,可以对所有运行线程同时检测的环形检测机制。程序启动时,建立线程对象,并以线程ID为索引将每个线程对象连接起来,构建环形线程对象。基于环形线程,对每一个线程对象构建线程检测路径,该路径是以线程为起始点,对应线程通过该路径,沿着线程后继方向检测其他线程的状态。当触发线程工作状态检测机制时,通过从上一个线程传递的线程状态信息,来确定线程的工作频率及位置索引。通过检测目标线程在时间序列生成前后所设定的工作状态参数,根据线程工作频率及状态信息,判断该线程的工作状态。(工作状态:a、正常退出;b、异常退出;c、正在运行;d、繁忙等待;e、无状态)基于累加均值的工作频率计算方法,用于计算每个线程运行期间频率的方法,通过计算出的线程频率数值来评估该线程的运行状态。一般情况下,由于计算机计算能力较强,使得线程完成一次工作频率计算所用的时间通常在微秒级别,然而编译器所自带的计数器时常滞后,导致单独对线程进行依次计算频率容易产生较大的误差。本方法基于累加求均值的方法,通过累计每一次线程运行时的工作频率均值,使得该频率均值能向着一个固定值进行收敛,能更好的解决单次检测所造成的误差。时间序列生成是以线程工作频率作为观测值,获取线程在每个条件阈值内,线程的工作频率。通过把对应线程频率与生成线程频率的时间点进行映射,显示出线程在该时间内的运行频率。随着程序运行,以线程频率为数据进行采集,建立基于时间关系的线程频率曲线图,这能大大的反应线程在每一个时刻的工作能力,并且以该时间序列为基础,通过分析该时间序列特征及趋势状态,可以对此事件序列中的子序列进行可靠性评估及对未来一定时间内的线程趋势状态进行预测。基于线程的时间序列数据训练LSTM模型,主要的特征是根据投入的原始数据进行模型训练,分析所提供的训练数据特征,基于数据特性来预测测试数据。设置线性回归函数及激励函数,通过正向传播算法拟合记忆数据输出结果,与真实数据进行评估计算损失值。通过反向传播算法利用梯度下降法进行学习来调节线性回归函数值中的参数,使得模型所预测的值更接近真实值。通过设置训练周期、迭代、拟合参数,使模型预测结果更接近原始数据的值。本专利技术的有益效果如下:本专利技术基于JAVA线程,以API函数的形式引入线程主程序,采用基于环形线程工作状态检测机制和累加均值的工作频率计算方法,来记录主线程下各线程的工作状态,计算并记录线程对应的工作频率。通过收集线程时间序列数据,将线程时间序列可视化。将用于训练的时间序列数据投入LSTM模型,提取线程时间序列特征,根据特征对测试集进行评估并进行预测。本专利技术程序主要的优势有:1)采用基于环形的工作状态检测机制,相比于传统的集中式检测方法,该方法无需生成额外监测线程,并且能在一个条件阈值内对所有线程进行动态检查,大大减轻了系统运行负载。2)基于累加均值的线程频率计算,通过累加均值的计算策略,解决系统单次频率计算过快,计数器因复杂系统环境而滞后的误差。3)通过训练好的LSTM模型可以对线本文档来自技高网
...

【技术保护点】
1.一种软件可靠性时间序列预测方法,其特征在于,所述方法包括以下步骤:1)采用API函数注入主程序的方法,收集线程时间序列信息及工作状态;2)采用基于环形的线程工作状态检测机制对线程进行动态监控;3)采用基于累加均值的工作频率计算方法对线程工作频率记录,生成线程时间序列数据;4)可视化时间序列曲线图,基于线程时间序列数据训练LSTM(长短期记忆网络)模型,获得训练集和测试集;基于训练集,通过LSTM模型对线程未来的状态变化进行预测。

【技术特征摘要】
1.一种软件可靠性时间序列预测方法,其特征在于,所述方法包括以下步骤:1)采用API函数注入主程序的方法,收集线程时间序列信息及工作状态;2)采用基于环形的线程工作状态检测机制对线程进行动态监控;3)采用基于累加均值的工作频率计算方法对线程工作频率记录,生成线程时间序列数据;4)可视化时间序列曲线图,基于线程时间序列数据训练LSTM(长短期记忆网络)模型,获得训练集和测试集;基于训练集,通过LSTM模型对线程未来的状态变化进行预测。2.根据权利要求1所述的一种软件可靠性时间序列预测方法,其特征在于,步骤1)所述的API函数注入方法,其特征在于,还包括:API函数注入主程序的方法,是通过API程序引入主程序的方法,将所实现的功能全部引入到线程主程序中;编写纯JAVA实现核心API函数;采取函数封装的思想,并通过程序函数的形式封装,设置接口调用函数;使得代码以模块的形式存在。3.根据权利要求1所述的一种软件可靠性时间序列预测方法,其特征在于,步骤中2)所述的基于环形的线程工作状态检测机制,其特征在于,还包括:基于环形的线程工作状态检测机制,主要思路是将主程序产生的线程关联起来,并通过线程间相互检测,完成在一个时间周期内,对所有运行线程同时检测的环形检测机制;时间周期指10的整数倍迭代所消耗的时间;程序启动时,建立线程对象,并以线程ID为索引,将每个线程对象连接起来,构建环形线程对象;基于环形线程,对每一个线程对象构建线程检测路径,该路径是以线程为起始点,对应线程通过该路径,沿着线程后继方向检测其他线程的状态;当触发线程工作状态检测机制时,通过从上一个线程传递的线程状态信息,来确定线程的工作频率及位置;通过检测目标线程在时间序列生成前后所设定的工作状态参数,并根据线...

【专利技术属性】
技术研发人员:王伟东骆旺达
申请(专利权)人:北京工业大学
类型:发明
国别省市:北京,11

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

1