发明名称 基于在线学的超级计算机结点故障主动容错方法
摘要 本发明公开了一种基于在线学的超级计算机结点故障主动容错方法,目的是解决系统级检查点方法存在容错开销大的缺陷。技术方案是对于构建的超级计算机系统,服务结点收集新的故障结点的历史状态数据,利用这些数据对结点故障行为进行集中式的在线学,获得更新的故障预测器;各计算结点获取自己的状态数据,利用新的故障预测器预测自己是否即将故障,如果是,则对本结点上正在运行的应用进程实施进程迁移;然后,服务结点与计算结点均睡眠等待规定的主动容错时间间隔Δ,并继续新一轮的主动容错过程。采用本发明可以提前预测超级计算机结点故障并实施低开销的主动容错,解决了系统级检查点方法容错开销大的问题,提升了超级计算机系统的可用性。
申请公布号 CN105718355A 申请公布日期 2016.06.29
申请号 CN201610040662.0 申请日期 2016.01.21
申请人 中国人民解放军国防科学技术大学 发明人 蒋艳凰;卢宇彤;赵强利;周恩强;董勇;胡维;孙勤
分类号 G06F11/30(2006.01)I;G06F11/14(2006.01)I 主分类号 G06F11/30(2006.01)I
代理机构 国防科技大学专利服务中心 43202 代理人 郭敏
主权项 一种基于在线学习的超级计算机结点故障主动容错方法,其特征在于包括以下步骤:第一步:构建超级计算机系统:构建具有一个服务结点和m个计算结点的超级计算机系统,计算结点的编号分别为c<sub>1</sub>,c<sub>2</sub>,…,c<sub>m</sub>,服务结点和m个计算结点间通过监控管理网络互连;在服务结点上部署监控系统与资源管理系统,监控系统负责监控各计算结点的运行情况,资源管理系统负责为计算任务分配计算资源;第二步:系统启动并进行参数初始化:2.1 服务结点启动,并进行参数初始化:2.1.1 令运行正常的计算结点集合NS和处于故障状态的计算结点集合FS为空集;2.1.2 从监控系统获取运行正常的计算结点,将运行正常的计算结点放到集合NS;2.1.3 从监控系统获取处于故障状态的计算结点,将处于故障状态的计算结点放到集合FS;2.1.4 设定主动容错时间间隔Δ;2.1.5 初始化故障预测器:Ψ=NULL;2.1.6 初始化迁移结点请求队列RQ为空,RQ用于接收计算结点发送过来的申请迁移结点的请求;2.1.7 为NS中的每个计算结点分配备份结点,将分配结果发送给NS中的计算结点;2.2 计算结点启动,相互独立并行地完成参数初始化,其中计算结点C<sub>i</sub>执行如下步骤,C<sub>i</sub>∈NS:2.2.1 设定即将故障的时间段长度δ,在故障预测过程中,若预测结果小于等于δ,表示计算结点即将故障;若预测结果大于δ,则表示计算结点的状态正常;2.2.2 设定计算结点状态数据队列的长度Len;2.2.3 创建计算结点状态数据队列Q,用于保存计算结点的历史状态数据,队列Q中每条记录的内容形式为((s<sub>1</sub>,s<sub>2</sub>,…,s<sub>n</sub>),t),表示计算结点在t时刻的状态为(s<sub>1</sub>,s<sub>2</sub>,…,s<sub>n</sub>),其中s<sub>i</sub>(1≤i≤n)为一个状态变量,n为状态变量的个数;2.2.4 从服务结点获取计算结点C<sub>i</sub>的备份结点,记备份结点的编号为C<sub>iB</sub>;2.2.5 设定主动容错时间间隔Δ;第三步:集中式在线故障行为学习:3.1 服务结点从监控系统获得m个计算结点的最新运行情况,对于新的故障结点,从它们的备份计算结点得到它们的历史状态数据,并对这些数据进行增量式的在线学习,获得新的故障预测器:3.1.1 检测集合FS中各计算结点的运行情况:令FS中已经正常运行的计算结点集合为AS,将AS中的结点从故障结点集FS中删除,然后将AS中的结点加入正常结点集NS中,即:FS=FS‑AS,NS=NS∪AS;3.1.2 检测集合NS中各计算结点的运行情况:令NS中已经处于故障状态的计算结点集合为BS,将BS中的结点从NS中删除,然后将BS中的结点加入故障结点集FS中,即:NS=NS‑BS,FS=FS∪BS;如果<img file="FDA0000911926610000021.GIF" wi="193" he="64" />转第四步;否则执行第3.1.3步;3.1.3 为BS中的每个故障结点分配一个备用结点,令BS对应的备用结点集合为CS,将BS与CS发送至NS中的所有计算结点;3.1.4 接收BS中各故障结点的备份结点发送过来的故障结点的历史状态数据,生成增量样本集TD;对接收到的历史状态记录((s<sub>1</sub>,s<sub>2</sub>,…,s<sub>n</sub>),t),其对应在TD中的样本为((s<sub>1</sub>,s<sub>2</sub>,…,s<sub>n</sub>),τ),其中(s<sub>1</sub>,s<sub>2</sub>,…,s<sub>n</sub>)为故障计算结点在t时刻的状态,τ为该计算结点在状态为(s<sub>1</sub>,s<sub>2</sub>,…,s<sub>n</sub>)的t时刻距离后续实际故障发生时刻的时间间隔;3.1.5 采用集中式在线学习方法对增量样本集TD中的样本数据进行学习,更新故障预测器:Ψ=Learn(TD,Ψ)其中函数Learn(TD,Ψ)表示在已有的学习结果Ψ的基础上,利用数据集TD对Ψ进行增量式在线学习,若函数Learn(TD,Ψ)中的Ψ满足Ψ=NULL,则表示直接对数据集TD进行学习,Learn函数是任意已有的增量式在线学习算法的具体实现;3.1.6 将更新后的预测器Ψ发送至各个计算结点;3.2 NS中的所有计算结点并行地从服务结点接收新的故障结点集及其对应的备用结点集,新的故障结点的备份结点将这些故障结点的历史状态数据发送给服务结点,并对历史状态数据进行更新与备份;然后从服务结点接收新的故障预测器Ψ;第四步:分布式故障预测与进程迁移:4.1 NS中的各计算结点并行地获得自身的运行状态信息,利用故障预测器进行故障预测和预测结果处理,计算结点C<sub>i</sub>执行如下步骤:4.1.1 获取本地结点C<sub>i</sub>的最新状态记录(S,t),其中S为结点C<sub>i</sub>的当前运行状态,内容用一个状态向量表示,即S=(s<sub>1</sub>,s<sub>2</sub>,…,s<sub>n</sub>),t为获取状态S的时间;4.1.2 将状态记录(S,t)保存在本地结点上:将当前状态记录(S,t)保存到本地结点C<sub>i</sub>的状态队列Q中,若保存的状态记录的数目超过队列长度Len,则在[0,Len‑1]区间内取一个随机数z,按进入队列Q的顺序删除第z个进入队列Q中的状态记录;4.1.3 令本地结点C<sub>i</sub>的备份结点为C<sub>iB</sub>,将状态数据队列Q备份到结点C<sub>iB</sub>上;4.1.4 利用故障预测器对本地结点C<sub>i</sub>的状态S进行故障预测,预测结果PR=Predict(Ψ,S),Predict(Ψ,S)函数是指利用故障预测器Ψ对状态S进行预测;如果预测结果PR>δ,则表明结点状态正常,转第五步;否则表明本地结点即将故障,执行第4.1.5步;4.1.5 如果C<sub>i</sub>上无计算任务,则转第五步;如果有计算任务在运行,则转第4.1.6步;4.1.6 计算结点C<sub>i</sub>向服务结点发送申请迁移结点的请求;4.1.7 从服务结点接收迁移结点的标识号C<sub>r</sub>;4.1.8 实施进程迁移,将在本地结点上运行的计算任务的应用进程迁移至结点C<sub>r</sub>上运行;;4.2 服务结点接收来自计算结点的申请迁移结点的请求,根据请求分配迁移结点,并将分配的迁移结点标识号发送给提交申请的计算结点:4.2.1 检测申请迁移结点的请求队列RQ,如果请求队列为空,则转第五步;如果请求队列不为空,则转第4.2.2步;4.2.2 从请求队列RQ中取出最先进入队列中的请求,若其为计算结点C<sub>i</sub>发送来请求,则为计算结点C<sub>i</sub>分配迁移结点C<sub>r</sub>;并将迁移结点C<sub>r</sub>的标识号发送给提出申请的计算结点C<sub>i</sub>,然后转4.2.1步;第五步:服务结点与计算结点均睡眠等待规定的主动容错时间间隔Δ,然后转第三步,继续新一轮的主动容错过程。
地址 410073 湖南省长沙市开福区德雅路109号