面向可变错误率的检查点间隔实时确定方法.pdf

上传人:111****112 文档编号:1585145 上传时间:2018-06-26 格式:PDF 页数:15 大小:1.98MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410683405.X

申请日:

2014.11.25

公开号:

CN104331347A

公开日:

2015.02.04

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 11/14申请日:20141125|||公开

IPC分类号:

G06F11/14; G06F9/44

主分类号:

G06F11/14

申请人:

中国人民解放军国防科学技术大学

发明人:

贾文涛; 张春元; 李宗伯; 杨乾明; 罗磊; 薛云刚; 蓝强

地址:

410073湖南省长沙市开福区德雅路109号

优先权:

专利代理机构:

国防科技大学专利服务中心43202

代理人:

郭敏

PDF下载: PDF下载
内容摘要

本发明公开了一种面向可变错误率的检查点间隔实时确定方法,目的是提供一种能准确地测算出实时错误率,并动态地调整应用执行的检查点间隔的方法。技术方案是构建由检查点控制模块、错误率测算模块和错误恢复模块组成的基于可变错误率的检查点控制系统;检查点控制模块判定当前检查点间隔是否完成,更新检查点状态;错误恢复模块进行错误恢复,错误率测算模块测算错误率和确定检查点间隔;最后由检查点控制模块设定检查点间隔和重设检查点的开启。本发明通过加权迭代法测算实时错误率,在确保测算速度的同时能得到较好的测算精度,且在每次检查点更新或错误恢复时重新设定检查点间隔,可以确保检查点间隔动态匹配错误率的变动。

权利要求书

权利要求书
1.  一种面向可变错误率的检查点间隔实时确定方法,其特征在于包括以下步骤:
第一步,构建基于可变错误率的检查点控制系统,该控制系统由检查点控制模块、错误率测算模块和错误恢复模块组成;检查点控制模块获取应用的运行状态信息,根据运行状态信息控制应用执行状态的转移,在每次启动应用进入检查点状态时启动错误率测算模块,在检测出错误时唤醒错误恢复模块,在每次检查点完成时设定检查点间隔;错误率测算模块在检测到错误时记录错误信息,根据已经发生错误的历史测算当前的实时错误率,根据系统运行时间测定检查点开销,根据实时的错误率和检查点开销确定最优检查点间隔;错误恢复模块在接收检查点控制模块发送的“启动错误恢复”信息时开始进行错误恢复,向应用发送“错误恢复开始”消息使应用进入错误恢复状态,同时向错误率测算模块发送“错误恢复开始”消息使其记录错误信息,在发生错误时为每个应用线程恢复之前保存的运行状态信息;
第二步,检查点控制模块通过系统时间判定当前检查点间隔是否完成,方法是:

2.  1检查点控制模块对整个检查点系统进行初始化,方法是:

2.  1.1设定应用初始状态为应用运行状态;

2.  1.2设定检查点更新次数j=0,错误发生次数i=0,系统开始运行的初始时间ti=tsys,第j次检查点间隔到达的时间tj=tsys,当前检查点开始的时刻tstart=tsys,tsys为当前的系统时间;

2.  1.3设定时刻tj时的系统平均错误时间MTTE(tj)=1s,第j次检查点更新的开销时间Tov(j)=0.01s,第j次检查点的间隔时间Tex(j)=0.1s;

2.  1.4设定计算系统平均错误时间的权值p=1/16,设定第j次检查点达 到时应用线程的运行状态信息context(j)=NULL;

2.  2检查点控制模块读取系统当时时间tsys并与Tex(j)对比,如果tsys<tstart+Tex(j)就返回2.2,否则,j=j+1并执行第三步;
第三步,检查点控制模块更新检查点状态,错误恢复模块进行错误恢复,与此同时,错误率测算模块测算错误率和确定检查点间隔,方法是:

3.  1检查点控制模块向错误率测算模块发送“启动检查点间隔测算”消息;同时,向应用发送“启动检查点”消息;检查点控制模块执行3.2,错误率测算模块执行3.5;

3.  2检查点控制模块获取应用线程的运行状态信息,线程的状态信息主要是线程控制块,包括程序计数器、CPU寄存器、存储器管理信息;

3.  3检查点控制模块将应用线程的运行状态信息与冗余线程的运行状态进行比对,如果两者运行状态信息相同,则说明应用线程无误,转至3.4,如果有错误,则转3.7步;

3.  4检查点控制模块进行检查点更新,检查点控制模块将当前的应用运行状态信息保存在磁盘:

3.  4.1检查点控制模块启动DMA,用应用当前的检查点状态信息替换前一次保存的旧的状态信息,即context(j-1)=context(j);

3.  4.2检查点控制模块向错误率测算模块和应用线程发送“检查点更新完成”消息,转至第四步;

3.  5收到3.1发送的消息后,错误率测算模块记录当前的系统时间以测量本次检查点的开销Tov(j);

3.  6错误率测算模块通过加权迭代法进行实时错误率的测算:

3.  6.1如果收到错误恢复模块发送的“错误恢复开始”消息,则转至3.6.2记录错误,否则转至3.6.3;

3.  6.2错误率测算模块进行错误记录:

3.  6.2.1i=i+1,错误发生次数i加1;

3.  6.2.2本次错误发生的时刻ti=tsys;

3.  6.3错误率测算模块采用加权迭代法对MTTE(tj)进行测算,得到MTTE(tj),转3.9;

3.  7检查点控制模块向错误恢复模块发送“启动错误恢复”消息,错误恢复模块收到消息后被唤醒并向应用和错误率测算模块发送“错误恢复开始”消息,转至3.8进行错误恢复;

3.  8:错误恢复模块启动DMA为应用恢复之前保存的检查点状态context(j)=context(j-1),恢复完成后错误恢复模块给错误率测算模块和应用发送“错误恢复完成”消息,转第四步。

3.  9错误率测算模块读取当前系统时间tsys并与3.5.1读取的系统时间相减,即为本次检查点的开销Tov(j);

3.  10错误率测算模块利用3.6得出的实时错误率MTTE(ti)和3.9的检查点开销Tov(j),通过公式2计算本次检查点的最优检查点间隔Tex(j):
Tex(j)=Tov(j)*MTTE(ti)]]>  (公式2)
计算完成后,向检查点控制模块发送“检查点间隔测算完成”消息和Tex(j);
第四步,检查点控制模块设定检查点间隔和重设检查点的开启,方法是:

4.  1:检查点控制模块根据应用线程的状态判定应用是否已经结束,如果应用结束则执行4.2,否则转至4.3;

4.  2:检查点控制模块结束检查点控制系统运行;

4.  3:检查点控制模块从错误率测算模块获取Tex(j)并设定检查点间隔;

4.  4:检查点控制模块重新设定检查点的开始时间tstart=tsys,并返回2.2。

2.  如权利要求1所述的面向可变错误率的检查点间隔实时确定方法,其特征在于3.6.3步错误率测算模块采用加权迭代法对MTTE(tj)进行测算的 过程是:

3.  6.3.1获取当前错误发生次数i;

3.  6.3.2当i<K时,K是计算一次平均错误时间所需要平均的错误次数,范围是8~32,
MTTE(tj)=(tj-t0)/i,结束;

3.  6.3.3当i≥K时,MTTE(tj)=p*(tj-ti-K-1)/K+(1-p)*MTTE(tj-1),其中,(tj-ti-K-1)/K为最近K次错误的平均时间,MTTE(tj-1)为上一次检查点更新时测算的错误率;

3.  6.3.4如果|(tj-ti-3)/4-MTTE(tj-1)|/MTTE(tj-1)>0.5,则
MTTE(tj)=p*(tj-ti-3)/4+(1-p)*MTTE(tj-1),结束;
如果|(tj-ti-3)/4-MTTE(tj-1)|/MTTE(tj-1)≤0.5,结束。

说明书

说明书面向可变错误率的检查点间隔实时确定方法
技术领域
本发明涉及错误率变化时容错处理器的检查点间隔确定方法,特别是在错误率变动明显时的检查点间隔实时确定方法。
背景技术
软错误是处理器面对的主要威胁,目前主要的容错方式是冗余检错+检查点恢复。其运行方式是应用程序以双模冗余或双线程的方式执行,执行中比较运行状态进行检错,定时的备份程序状态,检测出错误后返回到已备份的检查点重新执行。
在检查点系统中,应用通常有三个状态:应用运行状态、检查点状态和错误恢复状态,容错的过程就是应用在三个状态中转移的过程。检查点系统的任务就是控制应用状态的转移。传统的检查点系统由检查点控制模块和错误恢复模块组成。检查点控制模块的任务是:获取应用的运行状态信息以检测错误,检测出错误时唤醒检查点控制模块,控制应用进入检查点和结束检查点状态。错误恢复模块在收到检查点控制模块发出的“检测到错误”消息时控制整个系统进行错误恢复,在错误恢复完成后控制应用返回应用运行状态。
在介绍技术方案之前,先给出几个定义:
●Tex:检查点间隔时间,当检查点间隔时间到达时进行检查点的更新备份;
●Tov:更新检查点的时间开销;
●MTTE:(Mean Time To Error):发生一次错误的平均时间,表征错误率。
以上三个参数是常量,是传统检查点系统的主要参数。本发明中,与之 对应的参数会随着时间发生变化,我们定义如下:
●ti:第i次错误发生的时刻,t0为系统开始运行的初始时间;
●tj:第j次检查点间隔到达的时间;
●Tex(j):第j次检查点的间隔时间;
●Tov(j):第j次检查点更新的开销时间;
●MTTE(tj):时刻tj时的系统平均错误时间;
●p:计算系统平均错误时间的权值;
●tsys:当前的系统时间;
●tstart:当前检查点开始的时刻;
●context(j):第j次检查点达到时应用线程的运行状态信息。
传统检查点系统的运行通常有三个步骤。
第一步,检查点控制模块通过系统时间判定当前检查点间隔是否完成。
1.1检查点控制模块对整个检查点系统进行初始化。包括设定检查点间隔(传统的检查点间隔是一个固定的时间参数);设定应用初始状态为应用运行状态。
1.2检查点控制模块读取当前的系统时间tsys,并与1.1中设定的检查点间隔对比,如果tsys<tstart+Tex就返回1.2继续读取并对比,否则转至第二步。
第二步,检查点控制模块检测错误,并根据检错结果更新检查点或进行错误恢复。
2.1检查点控制模块向应用发送“启动检查点”的消息。应用收到消息后立即进入检查点状态,并向检查点控制模块发送自己的运行状态信息。
2.2检查点控制模块获取应用线程的运行状态信息,线程的运行状态信息主要是线程控制块,包括程序计数器、CPU寄存器、存储器管理信息等。
2.3检查点控制模块比对冗余线程的运行状态信息检测错误。容错执行时,每个应用线程都会有一个对应的冗余线程,其执行的程序与对应的应用 线程完全相同,如果相互冗余的两个线程状态信息相同,则此线程无误,执行2.4。如果相互冗余的两个线程状态信息不同,则说明此线程有误,转至2.5。
2.4:检查点控制模块启动DMA(Direct Memory Access),用应用当前的检查点状态信息更新前一次保存的状态信息。更新完成后检查点控制模块向应用发送“检查点更新完成”消息,转至第三步。
2.5检查点控制模块唤醒错误恢复模块,错误恢复模块给应用发送“错误恢复开始”消息并转至2.6以进行错误恢复。
2.6:错误恢复模块启动DMA为应用恢复之前保存的检查点状态。恢复成功后,错误恢复模块给应用发送“错误恢复完成”消息并转至第三步。
第三步,检查点控制模块重设检查点的开启。
3.1:检查点控制模块根据应用线程的状态判定应用是否已经结束。如果应用结束则执行3.2,否则转至3.3。
3.2:检查点控制模块结束检查点系统运行。
3.3:检查点控制模块重新设定检查点的开始时间tstart=tsys,并返回1.2。
传统的检查点系统可以确保错误发生后,应用能够返回之前保存的检查点继续运行,不用从头再开始执行,从而降低了发生错误时的开销。但是检查点本身需要不断的保存或更新检查点状态,也会产生一定的性能开销。性能开销和检查点间隔的时间长度密切相关,过短的检查点间隔会导致频繁的检查点更新,而过长的检查点间隔会导致错误发生时将返回更早的应用状态重新执行。因此确定较合适的检查点间隔是降低检查点容错开销的重要方式。
目前确定检查点间隔的方法都是固定检查点间隔方法,即程序执行前先通过公式1确定检查点间隔Tex,在执行的过程中检查点间隔固定不变。
Tex=Tov*MTTE]]>(公式1)
Tov是更新检查点的时间开销,MTTE是平均错误时间,表征错误率。
随着处理器故障率的激增,错误率除了数量增大外,也呈现出动态变化性。这是因为软错误率受环境的影响很大,在应用运行过程中芯片的温度、辐射环境等也会动态地变化。另外,很多芯片越来越多的使用了动态电压频率调制技术,即动态的调整芯片的主频和电压以获得性能和功耗的改进。但是超频和调低电压会使芯片的错误率产生极大的变动。
一般认为,在21摄氏度基础上温度每提高10摄氏度,芯片错误率就会增加一倍,而目前芯片的工作温度高达几百摄氏度。由于很多功耗技术的采用(休眠、降频等),温度的变动也会有几十甚至上百摄氏度。另外在太空中的计算机随着轨道变动、辐射风暴等,错误率的变动会超过百倍。
固定的检查点间隔确定方法不能随着故障率的变动动态地调整检查点间隔,使得检查点容错的性能受到很大影响。针对BOTS测试集的10个程序表明,在错误率MTTE=1s(即平均每1秒发生一次错误)时最优检查点间隔为482k cycles。如果检查点间隔不能随故障率变动,那么在MTTE=0.1s和0.01s时开销为28%和187%,而通过变动检查点间隔则可以分别降低为8.5%和34%。所以,如果能在冗余执行时实时地调整检查点间隔以匹配变化的故障率,则可以极大地降低容错执行的开销。目前还没有针对可变错误率的检查点间隔实时确定的相关技术方案公布。
发明内容
本发明要解决的技术问题是提供一种面向可变错误率的检查点间隔实时确定方法,能准确地测算出实时错误率,并动态地调整应用执行的检查点间隔。
本发明的技术方案是:
第一步,构建基于可变错误率的检查点控制系统。该控制系统由检查点控制模块、错误率测算模块和错误恢复模块组成。检查点控制模块获取应用 的运行状态信息,根据运行状态信息控制应用执行状态的转移;在每次启动应用进入检查点状态时启动错误率测算模块;在检测出错误时唤醒错误恢复模块;在每次检查点完成时设定检查点间隔。错误率测算模块在检测到错误时记录错误信息;根据已经发生错误的历史测算当前的实时错误率;根据系统运行时间测定检查点开销;根据实时的错误率和检查点开销确定最优检查点间隔。错误恢复模块在接收检查点控制模块发送的“启动错误恢复”信息时开始进行错误恢复;向应用发送“错误恢复开始”消息使应用进入错误恢复状态,同时向错误率测算模块发送“错误恢复开始”消息使其记录错误信息;在发生错误时为每个应用线程恢复之前保存的运行状态信息。
第二步,检查点控制模块通过系统时间判定当前检查点间隔是否完成。
2.1检查点控制模块对整个检查点系统进行初始化。
2.1.1设定应用初始状态为应用运行状态;
2.1.2设定j=0,i=0,ti=tsys,tj=tsys,tstart=tsys;
2.1.3设定MTTE(tj)=1s,Tov(j)=0.01s,Tex(j)=0.1s。
2.1.4设定p=1/16,context(j)=NULL(空指针)。
2.2检查点控制模块读取系统当时时间tsys并与Tex(j)对比,如果tsys<tstart+Tex(j)就返回2.2,否则,j=j+1并执行第三步。
第三步,检查点控制模块更新检查点状态,错误恢复模块进行错误恢复,与此同时,错误率测算模块测算错误率和确定检查点间隔。
3.1检查点控制模块向错误率测算模块发送“启动检查点间隔测算”消息;同时,向应用发送“启动检查点”消息;检查点控制模块执行3.2,错误率测算模块执行3.5。
3.2检查点控制模块获取应用线程的运行状态信息,线程的状态信息主要是线程控制块,包括程序计数器、CPU寄存器、存储器管理信息等。
3.3检查点控制模块将应用线程的运行状态信息与冗余线程的运行状 态进行比对,如果两者运行状态信息相同,则说明应用线程无误,转至3.4,如果有错误,则转3.7步。
3.4:检查点控制模块进行检查点更新。检查点控制模块将当前的应用运行状态信息保存在磁盘,以备发生错误时可以从此处恢复执行。
3.4.1检查点控制模块启动DMA,用应用当前的检查点状态信息替换前一次保存的旧的状态信息,即context(j-1)=context(j)。
3.4.2检查点控制模块向错误率测算模块和应用线程发送“检查点更新完成”消息,转至第四步。
3.5收到3.1发送的消息后,错误率测算模块被唤醒,错误率测算模块记录当前的系统时间以测量本次检查点的开销Tov(j)。
3.6错误率测算模块通过加权迭代法进行实时错误率的测算:
3.6.1如果收到错误恢复模块发送的“错误恢复开始”消息,则转至3.6.2记录错误,否则转至3.6.3。
3.6.2错误率测算模块进行错误记录。
3.6.2.1i=i+1,错误发生次数i加1;
3.6.2.2本次错误发生的时刻ti=tsys。
3.6.3错误率测算模块采用加权迭代法对MTTE(tj)进行测算。
3.6.3.1获取当前错误发生次数i;
3.6.3.2当i<K时,K是计算一次平均错误时间所需要平均的错误次数,范围是8~32,
MTTE(tj)=(tj-t0)/i,并转至3.9;
3.6.3.3当i≥K时,
MTTE(tj)=p*(tj-ti-K-1)/K+(1-p)*MTTE(tj-1),其中,(tj-ti-K-1)/K为最近K次错误的平均时间,MTTE(tj-1)为上一次检查点更新时测算的错误率;
3.6.3.4如果|(tj-ti-3)/4-MTTE(tj-1)|/MTTE(tj-1)>0.5,则
MTTE(tj)=p*(tj-ti-3)/4+(1-p)*MTTE(tj-1),转3.9;
如果|(tj-ti-3)/4-MTTE(tj-1)|/MTTE(tj-1)≤0.5,则直接转3.9。
3.7检查点控制模块向错误恢复模块发送“启动错误恢复”消息,错误恢复模块收到消息后被唤醒并向应用和错误率测算模块发送“错误恢复开始”消息,转至3.8进行错误恢复。
3.8:错误恢复模块启动DMA为应用恢复之前保存的检查点状态context(j)=context(j-1),恢复完成后错误恢复模块给错误率测算模块和应用发送“错误恢复完成”消息,转第四步。
3.9错误率测算模块读取当前系统时间tsys并与3.5.1读取的系统时间相减,即为本次检查点的开销Tov(j)。
3.10错误率测算模块利用3.6得出的实时错误率MTTE(tj)和3.9的检查点开销Tov(j),通过公式2计算本次检查点的最优检查点间隔Tex(j):
Tex(j)=Tov(j)*MTTE(tj)]]>(公式2)
计算完成后,向检查点控制模块发送“检查点间隔测算完成”消息和Tex(j)。
第四步,检查点控制模块设定检查点间隔和重设检查点的开启。
4.1:检查点控制模块根据应用线程的状态判定应用是否已经结束。如果应用结束则执行4.2,否则转至4.3。
4.2:检查点控制模块结束检查点系统运行。
4.3:检查点控制模块从错误率测算模块获取Tex(j)并设定检查点间隔。
4.4:检查点控制模块重新设定检查点的开始时间tstart=tsys,并返回2.2。
采用本发明可以达到以下技术效果:
1.该方法通过加权迭代法测算实时错误率(步骤3.6),在确保测算速度的同时能得到较好的测算精度。
2.该方法在每次检查点更新或错误恢复时重新设定检查点间隔(步骤四),可以确保检查点间隔动态匹配错误率的变动。
附图说明
图1背景技术所述传统检查点系统结构图;
图2背景技术所述传统的检查点控制和错误恢复流程;
图3本发明第一步构建的检查点系统结构图;
图4为本发明整体流程图;
图5本发明步骤3.6错误率测算的效果示意图。
具体实施方式
图3为本发明检查点系统结构图(第一步)
构建基于可变错误率的检查点控制系统。该控制系统由检查点控制模块、错误率测算模块和错误恢复模块组成。检查点控制模块获取应用的运行状态信息,根据运行状态信息控制应用执行状态的转移;在每次启动应用进入检查点状态时启动错误率测算模块;在检测出错误时唤醒错误恢复模块;在每次检查点完成时设定检查点间隔。错误率测算模块在检测到错误时记录错误信息;根据已经发生错误的历史测算当前的实时错误率;根据系统运行时间测定检查点开销;根据实时的错误率和检查点开销确定最优检查点间隔。错误恢复模块在接收检查点控制模块发送的“启动错误恢复”信息时开始进行错误恢复;向应用发送“错误恢复开始”消息使应用进入错误恢复状态,同时向错误率测算模块发送“错误恢复开始”消息使其记录错误信息;在发生错误时为每个应用线程恢复之前保存的运行状态信息。
图4本发明总体流程图:
第一步,构建基于可变错误率的检查点控制系统,该控制系统由检查点控制模块、错误率测算模块和错误恢复模块组成。
第二步,检查点控制模块通过系统时间判定当前检查点间隔是否完成。
2.1检查点控制模块对整个检查点系统进行初始化。
2.1.1设定应用初始状态为应用运行状态;
2.1.2设定j=0,i=0,ti=tsys,tj=tsys,tstart=tsys;
2.1.3设定MTTE(tj)=1s,Tov(j)=0.01s,Tex(j)=0.1s。
2.1.4设定p=1/16,context(j)=NULL(空指针)。
2.2检查点控制模块读取系统当时时间tsys并与Tex(j)对比,如果tsys<tstart+Tex(j)就返回2.2,否则,j=j+1并执行第三步。
第三步,检查点控制模块更新检查点状态,错误恢复模块进行错误恢复,与此同时,错误率测算模块测算错误率和确定检查点间隔。
3.1检查点控制模块向错误率测算模块发送“启动检查点间隔测算”消息;同时,向应用发送“启动检查点”消息;检查点控制模块执行3.2,错误率测算模块执行3.5。
3.2检查点控制模块获取应用线程的运行状态信息,线程的状态信息主要是线程控制块,包括程序计数器、CPU寄存器、存储器管理信息等。
3.3检查点控制模块将应用线程的运行状态信息与冗余线程的运行状态进行比对,如果两者运行状态信息相同,则说明应用线程无误,转至3.4,如果有错误,则转3.7步。
3.4:检查点控制模块进行检查点更新。检查点控制模块将当前的应用运行状态信息保存在磁盘,以备发生错误时可以从此处恢复执行。
3.4.1检查点控制模块启动DMA,用应用当前的检查点状态信息替换前一次保存的旧的状态信息,即context(j-1)=context(j)。
3.4.2检查点控制模块向错误率测算模块和应用线程发送“检查点更新完成”消息,转至第四步。
3.5收到3.1发送的消息后,错误率测算模块被唤醒,错误率测算模块记录当前的系统时间以测量本次检查点的开销Tov(j)。
3.6错误率测算模块通过加权迭代法进行实时错误率的测算:
3.6.1如果收到错误恢复模块发送的“错误恢复开始”消息,则转至3.6.2记录错误,否则转至3.6.3。
3.6.2错误率测算模块进行错误记录。
3.6.2.1i=i+1,错误发生次数i加1;
3.6.2.2本次错误发生的时刻ti=tsys。
3.6.3错误率测算模块采用加权迭代法对MTTE(tj)进行测算。
3.6.3.1获取当前错误发生次数i;
3.6.3.2当i<K时,K是计算一次平均错误时间所需要平均的错误次数,范围是8~32,
MTTE(tj)=(tj-t0)/i,并转至3.9;
3.6.3.3当i≥K时,
MTTE(tj)=p*(tj-ti-K-1)/K+(1-p)*MTTE(tj-1),其中,(tj-ti-K-1)/K为最近K次错误的平均时间,MTTE(tj-1)为上一次检查点更新时测算的错误率;
3.6.3.4如果|(tj-ti-3)/4-MTTE(tj-1)|/MTTE(tj-1)>0.5,则
MTTE(tj)=p*(tj-ti-3)/4+(1-p)*MTTE(tj-1),转3.9;
如果|(tj-ti-3)/4-MTTE(tj-1)|/MTTE(tj-1)≤0.5,则直接转3.9。
3.7检查点控制模块向错误恢复模块发送“启动错误恢复”消息,错误恢复模块收到消息后被唤醒并向应用和错误率测算模块发送“错误恢复开始”消息,转至3.8进行错误恢复。
3.8:错误恢复模块启动DMA为应用恢复之前保存的检查点状态context(j)=context(j-1),恢复完成后错误恢复模块给错误率测算模块和应用发送“错误恢复完成”消息,转第四步。
3.9错误率测算模块读取当前系统时间tsys并与3.5.1读取的系统时间相减,即为本次检查点的开销Tov(j)。
3.10错误率测算模块利用3.6得出的实时错误率MTTE(tj)和3.9的检查点开销Tov(j),通过公式2计算本次检查点的最优检查点间隔Tex(j):
Tex(j)=Tov(j)*MTTE(tj)]]>(公式2)
计算完成后,向检查点控制模块发送“检查点间隔测算完成”消息和Tex(j)。
第四步,检查点控制模块设定检查点间隔和重设检查点的开启。
4.1:检查点控制模块根据应用线程的状态判定应用是否已经结束。如果应用结束则执行4.2,否则转至4.3。
4.2:检查点控制模块结束检查点系统运行。
4.3:检查点控制模块从错误率测算模块获取Tex(j)并设定检查点间隔。
4.4:检查点控制模块重新设定检查点的开始时间tstart=tsys,并返回2.2。
图5本发明错误率测算的效果(步骤3.6)
本发明由错误测算模块对处理器进行错误率的测算,采用的方法是加权迭代法。
本发明将错误率变动为10倍以下的称为温和性变动(左图所示),将超过100倍的称为激进性变动(右图所示)。图中横坐标是时间,左侧的纵坐标表示错误率,右侧的纵坐标表示相对误差。左图中实线MTTE injected表示我们注入的错误率变化,它有一个持续5秒钟的10倍错误率变动。空心菱形表示通过本方法测试所得的错误率,可以从图看出,除了在开始和变动的很短时间中测试的错误率有较大误差,其它绝大部分时间中测试的误差极小。图中虚线SRET表示各个时间段的累计相对误差,可以看出温和性错误率变动的累计相对误差在50s时为0.06。
右图表示的是持续10s的激进性错误率变动。从图可以看出,本方法在绝大部分时间测试所得的错误率都极为准确,在50s时的累计相对误差为 0.08。两种情况下的累计相对误差都小于0.1,说明评测的效果极好。

面向可变错误率的检查点间隔实时确定方法.pdf_第1页
第1页 / 共15页
面向可变错误率的检查点间隔实时确定方法.pdf_第2页
第2页 / 共15页
面向可变错误率的检查点间隔实时确定方法.pdf_第3页
第3页 / 共15页
点击查看更多>>
资源描述

《面向可变错误率的检查点间隔实时确定方法.pdf》由会员分享,可在线阅读,更多相关《面向可变错误率的检查点间隔实时确定方法.pdf(15页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 104331347 A(43)申请公布日 2015.02.04CN104331347A(21)申请号 201410683405.X(22)申请日 2014.11.25G06F 11/14(2006.01)G06F 9/44(2006.01)(71)申请人中国人民解放军国防科学技术大学地址 410073 湖南省长沙市开福区德雅路109号(72)发明人贾文涛 张春元 李宗伯 杨乾明罗磊 薛云刚 蓝强(74)专利代理机构国防科技大学专利服务中心 43202代理人郭敏(54) 发明名称面向可变错误率的检查点间隔实时确定方法(57) 摘要本发明公开了一种面向可变错误率的检查点间。

2、隔实时确定方法,目的是提供一种能准确地测算出实时错误率,并动态地调整应用执行的检查点间隔的方法。技术方案是构建由检查点控制模块、错误率测算模块和错误恢复模块组成的基于可变错误率的检查点控制系统;检查点控制模块判定当前检查点间隔是否完成,更新检查点状态;错误恢复模块进行错误恢复,错误率测算模块测算错误率和确定检查点间隔;最后由检查点控制模块设定检查点间隔和重设检查点的开启。本发明通过加权迭代法测算实时错误率,在确保测算速度的同时能得到较好的测算精度,且在每次检查点更新或错误恢复时重新设定检查点间隔,可以确保检查点间隔动态匹配错误率的变动。(51)Int.Cl.权利要求书2页 说明书7页 附图5页。

3、(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书2页 说明书7页 附图5页(10)申请公布号 CN 104331347 ACN 104331347 A1/2页21.一种面向可变错误率的检查点间隔实时确定方法,其特征在于包括以下步骤:第一步,构建基于可变错误率的检查点控制系统,该控制系统由检查点控制模块、错误率测算模块和错误恢复模块组成;检查点控制模块获取应用的运行状态信息,根据运行状态信息控制应用执行状态的转移,在每次启动应用进入检查点状态时启动错误率测算模块,在检测出错误时唤醒错误恢复模块,在每次检查点完成时设定检查点间隔;错误率测算模块在检测到错误时记录错误信息,根据已经。

4、发生错误的历史测算当前的实时错误率,根据系统运行时间测定检查点开销,根据实时的错误率和检查点开销确定最优检查点间隔;错误恢复模块在接收检查点控制模块发送的“启动错误恢复”信息时开始进行错误恢复,向应用发送“错误恢复开始”消息使应用进入错误恢复状态,同时向错误率测算模块发送“错误恢复开始”消息使其记录错误信息,在发生错误时为每个应用线程恢复之前保存的运行状态信息;第二步,检查点控制模块通过系统时间判定当前检查点间隔是否完成,方法是:2.1检查点控制模块对整个检查点系统进行初始化,方法是:2.1.1设定应用初始状态为应用运行状态;2.1.2设定检查点更新次数j0,错误发生次数i0,系统开始运行的初。

5、始时间titsys,第j次检查点间隔到达的时间tjtsys,当前检查点开始的时刻tstarttsys,tsys为当前的系统时间;2.1.3设定时刻tj时的系统平均错误时间MTTE(tj)1s,第j次检查点更新的开销时间Tov(j)0.01s,第j次检查点的间隔时间Tex(j)0.1s;2.1.4设定计算系统平均错误时间的权值p1/16,设定第j次检查点达到时应用线程的运行状态信息context(j)NULL;2.2检查点控制模块读取系统当时时间tsys并与Tex(j)对比,如果tsyststart+Tex(j)就返回2.2,否则,jj+1并执行第三步;第三步,检查点控制模块更新检查点状态,错误。

6、恢复模块进行错误恢复,与此同时,错误率测算模块测算错误率和确定检查点间隔,方法是:3.1检查点控制模块向错误率测算模块发送“启动检查点间隔测算”消息;同时,向应用发送“启动检查点”消息;检查点控制模块执行3.2,错误率测算模块执行3.5;3.2检查点控制模块获取应用线程的运行状态信息,线程的状态信息主要是线程控制块,包括程序计数器、CPU寄存器、存储器管理信息;3.3检查点控制模块将应用线程的运行状态信息与冗余线程的运行状态进行比对,如果两者运行状态信息相同,则说明应用线程无误,转至3.4,如果有错误,则转3.7步;3.4检查点控制模块进行检查点更新,检查点控制模块将当前的应用运行状态信息保存。

7、在磁盘:3.4.1检查点控制模块启动DMA,用应用当前的检查点状态信息替换前一次保存的旧的状态信息,即context(j-1)context(j);3.4.2检查点控制模块向错误率测算模块和应用线程发送“检查点更新完成”消息,转至第四步;3.5收到3.1发送的消息后,错误率测算模块记录当前的系统时间以测量本次检查点的开销Tov(j);权 利 要 求 书CN 104331347 A2/2页33.6错误率测算模块通过加权迭代法进行实时错误率的测算:3.6.1如果收到错误恢复模块发送的“错误恢复开始”消息,则转至3.6.2记录错误,否则转至3.6.3;3.6.2错误率测算模块进行错误记录:3.6.2。

8、.1ii+1,错误发生次数i加1;3.6.2.2本次错误发生的时刻titsys;3.6.3错误率测算模块采用加权迭代法对MTTE(tj)进行测算,得到MTTE(tj),转3.9;3.7检查点控制模块向错误恢复模块发送“启动错误恢复”消息,错误恢复模块收到消息后被唤醒并向应用和错误率测算模块发送“错误恢复开始”消息,转至3.8进行错误恢复;3.8:错误恢复模块启动DMA为应用恢复之前保存的检查点状态context(j)context(j-1),恢复完成后错误恢复模块给错误率测算模块和应用发送“错误恢复完成”消息,转第四步。3.9错误率测算模块读取当前系统时间tsys并与3.5.1读取的系统时间相。

9、减,即为本次检查点的开销Tov(j);3.10错误率测算模块利用3.6得出的实时错误率MTTE(ti)和3.9的检查点开销Tov(j),通过公式2计算本次检查点的最优检查点间隔Tex(j):(公式2)计算完成后,向检查点控制模块发送“检查点间隔测算完成”消息和Tex(j);第四步,检查点控制模块设定检查点间隔和重设检查点的开启,方法是:4.1:检查点控制模块根据应用线程的状态判定应用是否已经结束,如果应用结束则执行4.2,否则转至4.3;4.2:检查点控制模块结束检查点控制系统运行;4.3:检查点控制模块从错误率测算模块获取Tex(j)并设定检查点间隔;4.4:检查点控制模块重新设定检查点的开。

10、始时间tstarttsys,并返回2.2。2.如权利要求1所述的面向可变错误率的检查点间隔实时确定方法,其特征在于3.6.3步错误率测算模块采用加权迭代法对MTTE(tj)进行测算的过程是:3.6.3.1获取当前错误发生次数i;3.6.3.2当i0.5,则MTTE(tj)p*(tj-ti-3)/4+(1-p)*MTTE(tj-1),结束;如果|(tj-ti-3)/4-MTTE(tj-1)|/MTTE(tj-1)0.5,结束。权 利 要 求 书CN 104331347 A1/7页4面向可变错误率的检查点间隔实时确定方法技术领域0001 本发明涉及错误率变化时容错处理器的检查点间隔确定方法,特别是。

11、在错误率变动明显时的检查点间隔实时确定方法。背景技术0002 软错误是处理器面对的主要威胁,目前主要的容错方式是冗余检错+检查点恢复。其运行方式是应用程序以双模冗余或双线程的方式执行,执行中比较运行状态进行检错,定时的备份程序状态,检测出错误后返回到已备份的检查点重新执行。0003 在检查点系统中,应用通常有三个状态:应用运行状态、检查点状态和错误恢复状态,容错的过程就是应用在三个状态中转移的过程。检查点系统的任务就是控制应用状态的转移。传统的检查点系统由检查点控制模块和错误恢复模块组成。检查点控制模块的任务是:获取应用的运行状态信息以检测错误,检测出错误时唤醒检查点控制模块,控制应用进入检查。

12、点和结束检查点状态。错误恢复模块在收到检查点控制模块发出的“检测到错误”消息时控制整个系统进行错误恢复,在错误恢复完成后控制应用返回应用运行状态。0004 在介绍技术方案之前,先给出几个定义:0005 Tex:检查点间隔时间,当检查点间隔时间到达时进行检查点的更新备份;0006 Tov:更新检查点的时间开销;0007 MTTE:(Mean Time To Error):发生一次错误的平均时间,表征错误率。0008 以上三个参数是常量,是传统检查点系统的主要参数。本发明中,与之对应的参数会随着时间发生变化,我们定义如下:0009 ti:第i次错误发生的时刻,t0为系统开始运行的初始时间;0010。

13、 tj:第j次检查点间隔到达的时间;0011 Tex(j):第j次检查点的间隔时间;0012 Tov(j):第j次检查点更新的开销时间;0013 MTTE(tj):时刻tj时的系统平均错误时间;0014 p:计算系统平均错误时间的权值;0015 tsys:当前的系统时间;0016 tstart:当前检查点开始的时刻;0017 context(j):第j次检查点达到时应用线程的运行状态信息。0018 传统检查点系统的运行通常有三个步骤。0019 第一步,检查点控制模块通过系统时间判定当前检查点间隔是否完成。0020 1.1检查点控制模块对整个检查点系统进行初始化。包括设定检查点间隔(传统的检查点。

14、间隔是一个固定的时间参数);设定应用初始状态为应用运行状态。0021 1.2检查点控制模块读取当前的系统时间tsys,并与1.1中设定的检查点间隔对比,如果tsys0.5,则0070 MTTE(tj)p*(tj-ti-3)/4+(1-p)*MTTE(tj-1),转3.9;0071 如果|(tj-ti-3)/4-MTTE(tj-1)|/MTTE(tj-1)0.5,则直接转3.9。0072 3.7检查点控制模块向错误恢复模块发送“启动错误恢复”消息,错误恢复模块收到消息后被唤醒并向应用和错误率测算模块发送“错误恢复开始”消息,转至3.8进行错误恢复。0073 3.8:错误恢复模块启动DMA为应用恢。

15、复之前保存的检查点状态context(j)context(j-1),恢复完成后错误恢复模块给错误率测算模块和应用发送“错误恢复完成”消息,转第四步。0074 3.9错误率测算模块读取当前系统时间tsys并与3.5.1读取的系统时间相减,即为本次检查点的开销Tov(j)。0075 3.10错误率测算模块利用3.6得出的实时错误率MTTE(tj)和3.9的检查点开销Tov(j),通过公式2计算本次检查点的最优检查点间隔Tex(j):0076 (公式2)0077 计算完成后,向检查点控制模块发送“检查点间隔测算完成”消息和Tex(j)。0078 第四步,检查点控制模块设定检查点间隔和重设检查点的开启。

16、。0079 4.1:检查点控制模块根据应用线程的状态判定应用是否已经结束。如果应用结束则执行4.2,否则转至4.3。说 明 书CN 104331347 A5/7页80080 4.2:检查点控制模块结束检查点系统运行。0081 4.3:检查点控制模块从错误率测算模块获取Tex(j)并设定检查点间隔。0082 4.4:检查点控制模块重新设定检查点的开始时间tstarttsys,并返回2.2。0083 采用本发明可以达到以下技术效果:0084 1.该方法通过加权迭代法测算实时错误率(步骤3.6),在确保测算速度的同时能得到较好的测算精度。0085 2.该方法在每次检查点更新或错误恢复时重新设定检查点。

17、间隔(步骤四),可以确保检查点间隔动态匹配错误率的变动。附图说明0086 图1背景技术所述传统检查点系统结构图;0087 图2背景技术所述传统的检查点控制和错误恢复流程;0088 图3本发明第一步构建的检查点系统结构图;0089 图4为本发明整体流程图;0090 图5本发明步骤3.6错误率测算的效果示意图。具体实施方式0091 图3为本发明检查点系统结构图(第一步)0092 构建基于可变错误率的检查点控制系统。该控制系统由检查点控制模块、错误率测算模块和错误恢复模块组成。检查点控制模块获取应用的运行状态信息,根据运行状态信息控制应用执行状态的转移;在每次启动应用进入检查点状态时启动错误率测算模。

18、块;在检测出错误时唤醒错误恢复模块;在每次检查点完成时设定检查点间隔。错误率测算模块在检测到错误时记录错误信息;根据已经发生错误的历史测算当前的实时错误率;根据系统运行时间测定检查点开销;根据实时的错误率和检查点开销确定最优检查点间隔。错误恢复模块在接收检查点控制模块发送的“启动错误恢复”信息时开始进行错误恢复;向应用发送“错误恢复开始”消息使应用进入错误恢复状态,同时向错误率测算模块发送“错误恢复开始”消息使其记录错误信息;在发生错误时为每个应用线程恢复之前保存的运行状态信息。0093 图4本发明总体流程图:0094 第一步,构建基于可变错误率的检查点控制系统,该控制系统由检查点控制模块、错。

19、误率测算模块和错误恢复模块组成。0095 第二步,检查点控制模块通过系统时间判定当前检查点间隔是否完成。0096 2.1检查点控制模块对整个检查点系统进行初始化。0097 2.1.1设定应用初始状态为应用运行状态;0098 2.1.2设定j0,i0,titsys,tjtsys,tstarttsys;0099 2.1.3设定MTTE(tj)1s,Tov(j)0.01s,Tex(j)0.1s。0100 2.1.4设定p1/16,context(j)NULL(空指针)。0101 2.2检查点控制模块读取系统当时时间tsys并与Tex(j)对比,如果tsys0.5,则0122 MTTE(tj)p*(t。

20、j-ti-3)/4+(1-p)*MTTE(tj-1),转3.9;0123 如果|(tj-ti-3)/4-MTTE(tj-1)|/MTTE(tj-1)0.5,则直接转3.9。0124 3.7检查点控制模块向错误恢复模块发送“启动错误恢复”消息,错误恢复模块收到消息后被唤醒并向应用和错误率测算模块发送“错误恢复开始”消息,转至3.8进行错误恢复。0125 3.8:错误恢复模块启动DMA为应用恢复之前保存的检查点状态context(j)context(j-1),恢复完成后错误恢复模块给错误率测算模块和应用发送“错误恢复完成”消息,转第四步。说 明 书CN 104331347 A7/7页100126 。

21、3.9错误率测算模块读取当前系统时间tsys并与3.5.1读取的系统时间相减,即为本次检查点的开销Tov(j)。0127 3.10错误率测算模块利用3.6得出的实时错误率MTTE(tj)和3.9的检查点开销Tov(j),通过公式2计算本次检查点的最优检查点间隔Tex(j):0128 (公式2)0129 计算完成后,向检查点控制模块发送“检查点间隔测算完成”消息和Tex(j)。0130 第四步,检查点控制模块设定检查点间隔和重设检查点的开启。0131 4.1:检查点控制模块根据应用线程的状态判定应用是否已经结束。如果应用结束则执行4.2,否则转至4.3。0132 4.2:检查点控制模块结束检查点。

22、系统运行。0133 4.3:检查点控制模块从错误率测算模块获取Tex(j)并设定检查点间隔。0134 4.4:检查点控制模块重新设定检查点的开始时间tstarttsys,并返回2.2。0135 图5本发明错误率测算的效果(步骤3.6)0136 本发明由错误测算模块对处理器进行错误率的测算,采用的方法是加权迭代法。0137 本发明将错误率变动为10倍以下的称为温和性变动(左图所示),将超过100倍的称为激进性变动(右图所示)。图中横坐标是时间,左侧的纵坐标表示错误率,右侧的纵坐标表示相对误差。左图中实线MTTE injected表示我们注入的错误率变化,它有一个持续5秒钟的10倍错误率变动。空心菱形表示通过本方法测试所得的错误率,可以从图看出,除了在开始和变动的很短时间中测试的错误率有较大误差,其它绝大部分时间中测试的误差极小。图中虚线SRET表示各个时间段的累计相对误差,可以看出温和性错误率变动的累计相对误差在50s时为0.06。0138 右图表示的是持续10s的激进性错误率变动。从图可以看出,本方法在绝大部分时间测试所得的错误率都极为准确,在50s时的累计相对误差为0.08。两种情况下的累计相对误差都小于0.1,说明评测的效果极好。说 明 书CN 104331347 A10。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1