CN109445970A - 一种软件可靠性时间序列预测方法及应用 - Google Patents
一种软件可靠性时间序列预测方法及应用 Download PDFInfo
- Publication number
- CN109445970A CN109445970A CN201811086951.XA CN201811086951A CN109445970A CN 109445970 A CN109445970 A CN 109445970A CN 201811086951 A CN201811086951 A CN 201811086951A CN 109445970 A CN109445970 A CN 109445970A
- Authority
- CN
- China
- Prior art keywords
- thread
- frequency
- time series
- time
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000000714 time series forecasting Methods 0.000 title claims abstract description 12
- 238000012360 testing method Methods 0.000 claims abstract description 28
- 238000012549 training Methods 0.000 claims abstract description 25
- 238000004458 analytical method Methods 0.000 claims abstract description 9
- 238000012544 monitoring process Methods 0.000 claims abstract description 7
- 238000002347 injection Methods 0.000 claims abstract 2
- 239000007924 injection Substances 0.000 claims abstract 2
- 230000006870 function Effects 0.000 claims description 62
- 230000007246 mechanism Effects 0.000 claims description 35
- 238000001514 detection method Methods 0.000 claims description 33
- 238000004422 calculation algorithm Methods 0.000 claims description 20
- 230000001186 cumulative effect Effects 0.000 claims description 18
- 238000004364 calculation method Methods 0.000 claims description 12
- 230000008859 change Effects 0.000 claims description 7
- 230000005284 excitation Effects 0.000 claims description 6
- 238000012417 linear regression Methods 0.000 claims description 5
- 230000002159 abnormal effect Effects 0.000 claims description 4
- 230000015654 memory Effects 0.000 claims description 3
- 238000011478 gradient descent method Methods 0.000 claims description 2
- 230000007787 long-term memory Effects 0.000 claims description 2
- 241000208340 Araliaceae Species 0.000 claims 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims 1
- 235000003140 Panax quinquefolius Nutrition 0.000 claims 1
- 239000008186 active pharmaceutical agent Substances 0.000 claims 1
- 238000005538 encapsulation Methods 0.000 claims 1
- 235000008434 ginseng Nutrition 0.000 claims 1
- 238000012800 visualization Methods 0.000 abstract description 4
- 230000000007 visual effect Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 11
- 238000013461 design Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 230000009471 action Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- ORILYTVJVMAKLC-UHFFFAOYSA-N Adamantane Natural products C1C(C2)CC3CC1CC2C3 ORILYTVJVMAKLC-UHFFFAOYSA-N 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000013079 data visualisation Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000012886 linear function Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 238000012300 Sequence Analysis Methods 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 206010016256 fatigue Diseases 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000000465 moulding Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/008—Reliability or availability analysis
Landscapes
- Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种软件可靠性时间序列预测方法及应用,并在上述基础下,基于复杂JAVA多线程环境,实现线程运行状态监测,线程时间序列采集并可视化,评估线程运行的可靠性及预测线程在未来可能的状态变化趋势曲线。该方法包括:步骤一、注入JAVA程序进行线程状态监控及采集线程时间序列信息;步骤二、可视化线程时间序列,建立LSTM模型,并基于线程时间序列曲线进行模型训练,建立训练集和测试集;步骤三、以训练完的LSTM模型对当前时间段进行可靠性验证及对未来时间段进行趋势曲线预测。本发明解决在JAVA多线程环境下,线程时间序列采集及可视化的问题,并基于环形拓扑的线程监控及线程时间序列分析,提供更加完善、便捷、高效的线程可靠性评估方法。
Description
技术领域
本发明涉及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)把不可见的程序执行过程建模为以线程工作频率为观测点的时间序列曲线图;2)具有可视化动态时间序列曲线展示、评估、预测等功能,便于进一步对主程序可靠性进行分析。本软件程序可以运行在基于JAVA的大规模线程环境下,进一步提升对JAVA线程运行状态的检测能力。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细的说明。
图1为本发明表示总体方法的设计图。
图2为本发明表示基于本发明方法的程序的API接口表。
图3为本发明表示环形检测机制示意图。
图4为本发明表示环形检测机制原理图。
图5为本发明表示环形检测机制线程检测原理图。
图6为本发明表示累加均值线程工作频率计算流程图。
图7为本发明表示LSTM模型结构设计示意图。
图8为本发明表示API函数包引入示意图。
图9为本发明表示初始化API函数示意图。
图10为本发明表示环形检测机制和时间序列生成API引入示意图。
图11为本发明表示线程局部时间序列可视化示意图。
图12为本发明表示线程全局时间序列可视化示意图。
图13为本发明表示LSTM模型结果评估预测示意图。
具体实施方式
为了更清楚地说明本发明,下面结合优选实施例和附图对本发明做进一步的说明。附图中相似的部件以相同的附图标记进行表示。本领域技术人员应当理解,下面所具体描述的内容是说明性的而非限制性的,不应以此限制本发明的保护范围。
本发明基于环形的线程工作状态检查机制,分析在主程序中各线程的工作状态。并基于累加均值的线程频率计算方法,在一个阈值条件内,计算计算线程的工作频率,将频率与时间进行映射,组成时间序列。通过可视化线程时间序列数据,动态监测线程的运行状态。并以时间序列为训练数据,投入LSTM模型进行训练,来识别时间序列的特征,对当前时间段内的数据进行可靠性评估及预测线程可能的工作状态。进而实现一个能动态检测线程工作状态;能将线程记录的时间序列可视化;能预测线程运动趋势的功能。
本发明是一种软件可靠性时间序列预测方法,该方法主要包括以下四个模块:1)API函数实现模块;2)环形线程工作状态检测模块;3)基于累加均值的线程频率计算方法及时间序列生成模块;4) 基于LSTM的预测模块。如图1所示,首先将本方法所实现的API 函数引入线程主程序中,并启动主程序。通过环形线程工作状态监测机制和累加均值的线程频率计算方法,对线程的工作状态进行记录,对线程的工作频率进行计算并映射成时间序列。之后将线程的时间序列数据可视化成曲线,并通过LSTM模型对投入的时间序列进行训练,得到对应的评估和预测结果。
下面进一步对本发明中各模块进行解释:
1)API函数实现:通过API程序引入主程序的方法,保证仅对线程主程序进行细微造型的前提下,将本方法所实现的功能引入到线程主程序中。如图2所示,为以纯JAVA实现的核心API函数。本方法以函数封装的思想为引导,将本方法通过程序函数的形式封装起来,设置接口调用函数。使得程序以模块的形式存在,便于对特定功能进行调用、更新和修改。
2)基于环形线程工作状态检测机制:如图3所示,为环形线程检测机制示意图,系统程序启动前先初始化线程,之后当线程运行过程中满足条件阈值就会记录一次工作频率,并以环为检测路径,在环上动态地检测其他线程的工作状态。本程序以高效的环形检测机制为设计基础,打破传统检测机制中线程相互独立的局限性,通过设置线程之间的环形链接关系,将各个线程连成一个不可分割的整体。通过这种环形方式,使得每一个线程都能通过特定方式与其它各线程建立联系,进而相互进行状态检测。通过这种方式,当线程程序在运行途中突发异常,就能迅速的被其邻居线程所检测到。
为了更好的体现基于环形检测方法的优势。如图4所示,假设系统初始化时产生若干个线程,当第一个线程触发检测机制时,在完成对应时间序列生成后,会对其后继线程进行状态检验,确认其运行状态,并向系统软件报告。当线程大量启动时,每一个线程就承担着对其后继线程检测责任。这样,使得整个软件程序在每一时间阈值内,就会动态的对所有线程进行一次工作状态检测及时间序列生成。以这种方式运行,能大大提高了系统效率,降低程序运行负载。
环形检测机制对应的API接口函数为:
int L_TimeSeries_JAVA_Monitor(int iter,int loopnum)
环形检测机制的算法设计思想如图5所示,通过将线程环形结构展开,形成以检测线程为核心的线性检测结构,进而检测后继线程的工作状态。在线程初始化时,以线程ID为基础建立环形线程对象,并将每一个线程对象连接起来,形成环状结构。当线程程序运行时,通过线程ID来映射线程对象,并以该对象为中心,检测其所记录的后继线程的工作状态。
线程工作状态检测对应的API接口函数为:
Int_L_TimeSeries_JAVA_TestPthread(线程状态信息参数)
基于环形的线程工作状态检测机制为软件程序提供了一个线程间关联的状态表,其高效的把每一个线程通过一个环结构体有机的联系起来,形成一个内部节点能相互联系的线程环。为使得每一个线程能以一种统一的机制去检测其后继线程的工作状态,并返回相应的线程工作状态信息。通过在环形检测机制API中嵌入一个线程工作状态检测API函数,其能保证对每一个线程都能以统一的规则进行检测。
线程工作状态检测函数的算法思想:
a、设置线程状态参量,表示线程的状态信息,初始化时默认线程为normal_exit状态;
b、在每个线程可靠性时间序列生成时,针对每个线程对应的工作频率,为每个线程赋予相应的状态值。这里,可以根据工作频率及线程工作状态设置方法,记录每个线程的运行频次,并为线程设置相应的工作状态值。
c、当触发线程工作状态检测机制时,通过从上一个线程传递来的线程状态信息(线程ID、环形结构体线程序号、顺序结构体线程序号、线程工作频率等),来确定线程的工作频率及位置。通过检测目标线程在时间序列生成前后所设定的工作状态参数,并根据线程工作频率及状态信息,进而判断线程的工作状态。
d、返回所识别的状态参数,系统软件根据状态参数进行报告线程状态。
环形检验机制的实现,使得软件中每一个线程之间建立链式关系,使得程序线程在一个条件阈值内能动态检测软件所有线程的工作状态,并进行异常报告。相比于集中式检测方法,该机制无需生成额外监控线程,就能在一个时间阈值内对所有线程进行检测,大大减轻了程序的负载。
3)基于累加均值的线程频率计算方法及时间序列生成:用于计算每个线程运行期间频率的方法,通过计算出的线程频率数值来评估该线程的运行状态,并生成时间序列。一般情况下,由于计算机计算能力较强,使得线程完成一次工作所需时间通常在微秒级别,然而编译器所自带的计数器时常因为复杂的系统环境滞后,导致单独对线程进行依次计算频率容易产生较大的误差。本方法基于累加求均值的方法,通过累计每一次线程运行时的工作频率均值,使得该频率均值能向着一个固定值进行收敛,能更好的解决单次检测所造成的误差。
具体算法及流程图如下所示:
为更好的对线程的工作状态进行评估,通过设置条件阈值,对线程工作状态进行干预,设置线程频率计算的触发条件。通过线程在条件阈值触发前后的时间戳差值来计算线程的工作频率。为了更精确地检测线程每一个运动的工作频率,我们采取累加均值的方法,使得每一次线程运动的频率向着一个固定值进行收敛。
a、条件阈值算法设计
条件阈值的设计是为了限制线程产生工作状态的频次。让线程在一定条件阈值内触发工作状态,这能更好的对线程的工作状态进行检测。由于高集成系统的处理器处理频率越来越高,系统线程单一的执行速度越来越快,导致在极短时间内对处于工作状态的线程进行频率计算时,可能会出现由于计数器、系统环境等所带来的延迟,造成的误差。而由于时间数量级差距较大,会产生较大的误差。为了解决这类问题的产生,我们引入了条件阈值,通过条件阈值来限制线程触发工作状态的条件。
条件阈值算法设计原理:
以线程迭代周期为基础,对线程进行迭代周期进程处理,当达到线程运行的周期数值对应的条件阈值余数时,记录该线程执行一次工作状态,并产生一次时间序列。这大大提高了系统测试结果的准确性及可靠性。
算法公式:
condition=iter%threshold_value
其中:condition为条件阈值设置中的有效值;iter为线程的迭代周期;
threshold_value为条件阈值。
b、线程工作频率算法设计:
在一个运行周期内,累计线程工作的频次,计算从周期开始到当前工作状态结束的时间戳差值,通过将线程工作频次与时间差值做比,计算线程在此时的平均工作频率。其步骤如下
①线程启动时间点获取:
time=System.nanoTime();
work_counter=0
setFirst_timestamp=time
②一个条件阈值后的时间点获取:
time=System.nanoTime();
work_counter=work_counter+1;
setLast_timestamp=time;
③线程一次运动的活跃度计算:
Δtime=First_timestamp-Last_timestamp
④周期循环,生成时间序列并初始化线程频次:
if cycle_limit>=1000:
L_TimeSeries_flush_buffer();
initial_Frequency();
其中:
time为所记录的当前时间的时间戳;
work_counter为线程的工作频次;
First_timestamp为线程启动时初始时间戳值;
Last_timestamp为线程当前工作状态结束时的时间戳值;
Δtime为线程在一次工作状态前后的时间戳差值;
frequency为线程的工作频率;
cycle_limit为最大线程周期;
L_TimeSeries_flush_buffer()为将当前记录的线程时间序列存入文档;
System.nanoTime()为记录当前时间节点的时间戳。
c、线程频率计算的流程图:
如图6所示,展示了线程频率计算的流程图,具体API函数如下:
int L_TimeSeries_JAVA_Generate(参数)
每当线程运行时所记录的迭代周期满足特定条件阈值时,对应线程将产生一次工作状态,并记录该值的工作频率。通过在特定时间内采集每个线程的工作频率,并将其累计,建立时间序列数列,通过 Web服务将时间序列可视化,即可观测在此过程中线程的工作状态。
4)LSTM预测建模:基于线程的时间序列数据训练LSTM模型,主要的特征是根据投入的原始数据进行模型训练,分析所提供的训练数据特征,基于数据特性来预测测试数据。设置线性回归函数及激励函数,通过正向传播算法拟合记忆数据输出结果,与真实数据进行评估计算损失值。通过反向传播算法利用梯度下降进行学习来调节线性回归函数值中的参数,使得模型所预测的值更接近真实值。通过设置训练周期、迭代、拟合参数,使模型预测结果更接近生数据的值。所采用的算法思想如下:
如图7所示,建立LSTM网络结构,以每一个时间状态作为一个节点状态,以xt为第t个节点状态的数据输入,以ht表示第t个节点状态的输出,设置第t个节点状态的遗忘门限ft、输入门限it、输出门限ot来控制网络中数据计算条件,以sigmoid函数作为激励函数,通过设置门限,对输入的数据进行限制。通过W[ht,xt]函数作为线性函数进行线性回归,σ(x)函数作为激励函数,设置门限状态。具体算法如下:
W[ht,xt]=W*ht+W*xt
(1)
ft=σ(Wf[ht-1,xt]+bf)
(3)
it=σ(Wi[ht-1,xt]+bi)
(4)
ot=σ(Wo[ht-1,xt]+bo)
(5)
通过上述方法,设置节点门限,动态剔除旧数据,添入新数据。以上述方法为基础,设为第t个节点的累计信息,设置Ct为第t 个节点状态,ht为第t个节点状态的输出结果。以tanh函数作为激励函数,W[ht,xt]为线性回归函数,进行计算并输出结果。
ht=ot*tanh(Ct)
(9)
通过上述算法,即可完成对一组对应值的预测。然而,上述方法仅是通过门限控制来对特定数量的数据进行计算,输出一个对应时间点的预测值,由于缺乏对样本的特征分析,预测值时常不可靠。所以,可以通过损失函数,评估每一次的预测结果,采用反向传播算法对线性函数W[ht,xt]的参数进行反复矫正,使得模型的预测值趋近原始数据值。
本方法采取平均绝对值误差法进行损失计算,该方法是对所有单个观察点与算术平均值的偏差的绝对值的平均,能更好地反应预测值误差的实际情况。该方法的数学公式如下:
其中:xi为第i个时间点的预测值;yi为第i个时间点的真实值。
为了更好的修正模型参数,使用了Adam算法作为优化器。Adam 算法为自适应时刻估计算法,能计算每个参数的自适应学习率,来寻找一个找到减少损失值最快的方向。具体算法如下:
其中,θ为参数;mt为第t时刻的平均值;vt为第t时刻的非中心方差值;为偏移修正第t时刻的平均值;为偏移修正第t时刻的方差值;该算法的最优参数β1设为0.9,β2设为0.9999,ε设为 10-8。根据此公式将θ参数改为w和b,即可对W[ht,xt]的参数进行更新。
通过上述所介绍的内容,LSTM模型是基于门限控制限制数据量的大小,并拟合记忆数据进行模型计算,输出预测值,通过损失函数评估预测值与真实值的偏差,通过反向传播优化器,更新线程函数W[ht,xt]的参数,反复迭代即可获得可靠性高的预测值。
下面结合一个具体实施例进行说明
本方法以基于JAVA多线程程序JTransforms的 Benckmark:DoubleDCT程序做一个简单的运行实例,以8个线程执行该benchmark多线程程序实现线程状态检测、时间序列可视化、线程状态预测。
由于本方法所实现的检测程序是以API函数为主导,通过将API 函数引入线程主程序中,来对主程序产生的各线程进行检测。
本发明方法所实现的核心API函数:
①L_TimeSeries_JAVA_Init():此API为时间序列初始化函数,在程序开始时,初始化参数、初始化时间序列数列对象、初始化线程对象、环形线程对象等。
②L_TimeSeries_JAVA_Generate(参数):此API为线程工作频率计算和可靠性时间序列自动生成程序。在JAVA多线程环境中,统计迭代次数,每当符合条件阈值,则使对应线程进入工作状态,生成线程工作频次,并记录进时间序列对象。
③L_TimeSeries_JAVA_Monitor(参数):此API为环形线程工作状态检测程序,在JAVA多线程环境中,使得线程每达到一个条件阈值就能对所有软件线程进行工作状态检测。
具体实施步骤如下:
1)API函数引入方法
主程序引入方法:
线程程序引入方法:
将上述程序引入JAVA线程主程序中,即可使本方法所实现的程序生效。在具体例子中的实施步骤,如图8、9、10所示。图8表示将时间序列包引入主线程中;图9表示将本方法所实现的初始化API 函数引入主程序中。图10表示将环形检测机制和线程频率计算引入线程程序的过程。
2)JAVA线程主程序
运行JAVA线程主程序,主要功能是通过基于环形的线程检测机制,动态检测线程的工作状态并向系统报告,并生成对应线程的时间序列文档。在eclipse编译器或通过web服务调用java接口用cmd 启动JAVA线程主程序,在eclipse控制台或者cmd界面上即可看到线程的工作状态信息,如图11所示,为在eclipse控制台上显示的线程工作状态信息。
3)时间序列可视化
时间序列可视化,是将处于工作状态的线程所生成的时间序列数据可视化,用于观测线程在某时间段内的运行状况。如图12所示,显示主程序运行中所产生的两个线程时间序列曲线图。其中,左部曲线图表示线程在局部时间内的可视化图,显示线程最新生成的时间序列状态。右部为全局时间序列,显示从线程启动到目前时间内时间序列的变化情况。图13表示,线程的全局时间序列曲线,表示程序从启动程序到程序结束的时间序列曲线信息。结合上述生成的曲线图中,就可以对JAVA多线程领域中复杂线程进行可靠性分析及评估。
4)LSTM预测模型
基于LSTM预测模型评估及预测,是将LSTM模型作为预测器,用于评估线程时间序列的状态。结合作为训练样本的时间序列数据,分析样本特征,然后对曲线进行评估和预测。本方法基于门限控制,设置最新输出窗口大小,限制数据流入。本实例为以线程2中前10318个时间序列数据为基础,进行时间序列预测,LSTM模型以 100个数据为门限,通过分析门限中前100个数据作为测试样本,拟合评分,预测后10个数据。通过剔除旧样本中前10个数据,将新预测数据添入进测试样本中,反复预测,直到迭代到预先设定的周期数为止。本实例结果仅供展示本模型所具备的功能,可以看出本实例所训练的模型损失值,表示模型与训练样本的拟合程度。模型的预测结果,根据分析其误差与源数据在5%的范围内,满足客观需求。倘若需要更好的预测结果,仅需调节模型训练周期,控制门限数据量即可。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定,对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。
Claims (5)
1.一种软件可靠性时间序列预测方法,其特征在于,所述方法包括以下步骤:
1)采用API函数注入主程序的方法,收集线程时间序列信息及工作状态;
2)采用基于环形的线程工作状态检测机制对线程进行动态监控;
3)采用基于累加均值的工作频率计算方法对线程工作频率记录,生成线程时间序列数据;
4)可视化时间序列曲线图,基于线程时间序列数据训练LSTM(长短期记忆网络)模型,获得训练集和测试集;基于训练集,通过LSTM模型对线程未来的状态变化进行预测。
2.根据权利要求1所述的一种软件可靠性时间序列预测方法,其特征在于,步骤1)所述的API函数注入方法,其特征在于,还包括:
API函数注入主程序的方法,是通过API程序引入主程序的方法,将所实现的功能全部引入到线程主程序中;编写纯JAVA实现核心API函数;采取函数封装的思想,并通过程序函数的形式封装,设置接口调用函数;使得代码以模块的形式存在。
3.根据权利要求1所述的一种软件可靠性时间序列预测方法,其特征在于,步骤中2)所述的基于环形的线程工作状态检测机制,其特征在于,还包括:
基于环形的线程工作状态检测机制,主要思路是将主程序产生的线程关联起来,并通过线程间相互检测,完成在一个时间周期内,对所有运行线程同时检测的环形检测机制;时间周期指10的整数倍迭代所消耗的时间;程序启动时,建立线程对象,并以线程ID为索引,将每个线程对象连接起来,构建环形线程对象;基于环形线程,对每一个线程对象构建线程检测路径,该路径是以线程为起始点,对应线程通过该路径,沿着线程后继方向检测其他线程的状态;当触发线程工作状态检测机制时,通过从上一个线程传递的线程状态信息,来确定线程的工作频率及位置;通过检测目标线程在时间序列生成前后所设定的工作状态参数,并根据线程工作频率及状态信息,判断该线程的工作状态;工作状态包括:a、正常退出;b、异常退出;c、正在运行;d、繁忙等待;e、无状态。
4.根据权利要求1所述的一种软件可靠性时间序列预测方法,其特征在于,步骤中3)所述的基于累加均值的工作频率计算方法及时间序列生成,其特征在于,还包括:
基于累加均值的工作频率计算方法,是用于计算每个线程运行期间频率的方法,通过计算出的线程频率数值来评估该线程的运行状态;基于累加求均值的方法,通过累计每一次线程运行时的工作频率均值,使得该频率均值能向着一个固定值进行收敛,能更好的解决单次检测所造成的误差;
时间序列生成是以线程工作频率作为观测值,获取线程在每个条件阈值内线程的工作频率;通过把对应线程频率与生成线程频率的时间点进行映射,显示出线程在该时间内的运行频率;随着程序运行,以线程频率为数据进行采集,建立基于时间关系的线程频率曲线图,这能大大的反应线程在每一个时刻的工作能力,并且以该时间序列为基础,通过分析该时间序列特征及趋势状态,对此事件序列中的子序列进行可靠性评估及对未来线程趋势状态进行预测。
5.根据权利要求1所述的一种软件可靠性时间序列预测方法,其特征在于,步骤中4)所述的基于线程时间序列数据的LSTM模型训练及评估,其特征在于,还包括:
基于线程的时间序列数据训练LSTM模型,主要的特征是根据投入的原始数据进行模型训练,分析所提供的训练数据特征,进而预测测试样本数据;该模型通过设置线性回归函数及激励函数,采用正向传播算法拟合记忆数据输出结果,与真实数据进行评估计算损失值;通过反向传播算法利用梯度下降法进行学习来调节线性回归函数值中参数,使得模型所预测的值更接近真实值;通过设置训练周期、迭代、拟合参数,使模型预测结果更接近样本数据值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811086951.XA CN109445970A (zh) | 2018-09-18 | 2018-09-18 | 一种软件可靠性时间序列预测方法及应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811086951.XA CN109445970A (zh) | 2018-09-18 | 2018-09-18 | 一种软件可靠性时间序列预测方法及应用 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109445970A true CN109445970A (zh) | 2019-03-08 |
Family
ID=65530409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811086951.XA Pending CN109445970A (zh) | 2018-09-18 | 2018-09-18 | 一种软件可靠性时间序列预测方法及应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109445970A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200320035A1 (en) * | 2019-04-02 | 2020-10-08 | Micro Focus Software Inc. | Temporal difference learning, reinforcement learning approach to determine optimal number of threads to use for file copying |
CN114647785A (zh) * | 2022-03-28 | 2022-06-21 | 北京工业大学 | 基于情感分析的短视频获赞数量预测方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105049365A (zh) * | 2015-06-15 | 2015-11-11 | 国家计算机网络与信息安全管理中心 | 一种多核多线程入侵检测设备的自适应调频节能方法 |
CN105899268A (zh) * | 2015-06-23 | 2016-08-24 | 中国科学院深圳先进技术研究院 | 基于gpu的并行心电信号分析方法 |
CN106897707A (zh) * | 2017-03-02 | 2017-06-27 | 苏州中科天启遥感科技有限公司 | 基于多源中分的特征影像时间序列合成方法及装置 |
CN107102969A (zh) * | 2017-04-28 | 2017-08-29 | 湘潭大学 | 一种时间序列数据的预测方法和系统 |
CN107659431A (zh) * | 2017-08-15 | 2018-02-02 | 北京趣拿软件科技有限公司 | 接口处理方法、装置、存储介质和处理器 |
CN108256626A (zh) * | 2016-12-28 | 2018-07-06 | 中国科学院深圳先进技术研究院 | 时间序列的预测方法及装置 |
CN108255590A (zh) * | 2017-12-07 | 2018-07-06 | 深圳比特微电子科技有限公司 | 一种数据流控制方法和装置 |
CN108710958A (zh) * | 2018-05-16 | 2018-10-26 | 北京旋极信息技术股份有限公司 | 一种预测健康管理方法及装置、计算机可读存储介质 |
-
2018
- 2018-09-18 CN CN201811086951.XA patent/CN109445970A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105049365A (zh) * | 2015-06-15 | 2015-11-11 | 国家计算机网络与信息安全管理中心 | 一种多核多线程入侵检测设备的自适应调频节能方法 |
CN105899268A (zh) * | 2015-06-23 | 2016-08-24 | 中国科学院深圳先进技术研究院 | 基于gpu的并行心电信号分析方法 |
CN108256626A (zh) * | 2016-12-28 | 2018-07-06 | 中国科学院深圳先进技术研究院 | 时间序列的预测方法及装置 |
CN106897707A (zh) * | 2017-03-02 | 2017-06-27 | 苏州中科天启遥感科技有限公司 | 基于多源中分的特征影像时间序列合成方法及装置 |
CN107102969A (zh) * | 2017-04-28 | 2017-08-29 | 湘潭大学 | 一种时间序列数据的预测方法和系统 |
CN107659431A (zh) * | 2017-08-15 | 2018-02-02 | 北京趣拿软件科技有限公司 | 接口处理方法、装置、存储介质和处理器 |
CN108255590A (zh) * | 2017-12-07 | 2018-07-06 | 深圳比特微电子科技有限公司 | 一种数据流控制方法和装置 |
CN108710958A (zh) * | 2018-05-16 | 2018-10-26 | 北京旋极信息技术股份有限公司 | 一种预测健康管理方法及装置、计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
WEIDONG WANG: "HBTM: A Heartbeat-based Behavior Detection Mechanism for POSIX Threads and OpenMP Applications", 《HTTPS://ARXIV.ORG/ABS/1512.00665》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200320035A1 (en) * | 2019-04-02 | 2020-10-08 | Micro Focus Software Inc. | Temporal difference learning, reinforcement learning approach to determine optimal number of threads to use for file copying |
CN114647785A (zh) * | 2022-03-28 | 2022-06-21 | 北京工业大学 | 基于情感分析的短视频获赞数量预测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Que et al. | Remaining useful life prediction for bearings based on a gated recurrent unit | |
CN107967485B (zh) | 用电计量设备故障分析方法及装置 | |
CN103116540B (zh) | 基于全局超级块支配图的动态符号执行方法 | |
CN113762486B (zh) | 换流阀故障诊断模型的构建方法、装置和计算机设备 | |
Bouktif et al. | Extracting change-patterns from cvs repositories | |
CN112101431A (zh) | 电子设备故障诊断系统 | |
Ghosh et al. | A novel automata and neural network based fault diagnosis system for PLC controlled manufacturing systems | |
CN105868116A (zh) | 基于语义变异算子的测试用例生成和优化方法 | |
CN109213684A (zh) | 基于OpenMP线程心跳检测技术的程序检测方法及应用 | |
CN109445970A (zh) | 一种软件可靠性时间序列预测方法及应用 | |
Arul et al. | Data anomaly detection for structural health monitoring of bridges using shapelet transform | |
Liang et al. | A new method for multivariable nonlinear coupling relations analysis in complex electromechanical system | |
CN109308225B (zh) | 一种虚拟机异常检测方法、装置、设备及存储介质 | |
CN116520806A (zh) | 一种工业系统智能故障诊断系统及其方法 | |
CN115081484A (zh) | 基于crj-oselm算法的航空发动机传感器故障诊断方法 | |
Schat et al. | Detecting mean changes in experience sampling data in real time: A comparison of univariate and multivariate statistical process control methods. | |
CN116796275A (zh) | 一种工业设备多模态时序异常检测方法 | |
CN115438897A (zh) | 一种基于blstm神经网络的工业过程产品质量预测方法 | |
Zhang et al. | An enhanced temporal algorithm-coupled optimized adaptive sparse principal component analysis methodology for fault diagnosis of chemical processes | |
Shalobanov et al. | Diagnosing continuous dynamic systems by changing the position of the input signal | |
CN110427320B (zh) | 一种轻量级嵌入式程序控制流异常定位检测方法 | |
Chen et al. | Multi-granularity Cross-Domain Temporal Regression Network for Remaining Useful Life Estimation of Aero Engines | |
Shepperd | Products, processes and metrics | |
Linder et al. | Evaluating statistical models to measure environmental change: A tidal turbine case study | |
CN111859798A (zh) | 基于双向长短时神经网络的流程工业故障诊断方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190308 |
|
RJ01 | Rejection of invention patent application after publication |