《面向可变错误率的检查点间隔实时确定方法.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。