一种基于内存缓存技术的多核系统容错方法转让专利

申请号 : CN201110093904.X

文献号 : CN102147755B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 易会战李春江黄春杨灿群赵克佳杜云飞彭林陈娟王锋左克

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

摘要 :

本发明公开了一种基于内存缓存技术的多核系统容错方法,目的是解决检查点过程中对I/O资源的突发性需求,减少检查点操作的时间。技术方案是部署并行计算机系统时为每个并行任务部署一个帮助线程,操作系统中的系统容错模块将计算线程的中间运行状态保存到内存,帮助线程将内存的中间运行状态保存到磁盘I/O系统。当应用程序出现错误情况下,帮助线程和统容错模块使用保存的中间运行状态恢复应用程序运行。本发明利用现有并行计算机丰富的CPU和内存资源,实现了计算和容错的并行,显著降低了系统级检查点的容错时间,提高了I/O磁盘系统的稳定性。

权利要求 :

1.一种基于内存缓存技术的多核系统容错方法,其特征在于基于内存缓存技术的多核系统容错方法分为两个阶段:第一阶段是应用程序运行期间对作业中间运行状态保存的阶段,称为检查点阶段,第二阶段是当应用程序出现错误情况下,使用保存的中间运行状态恢复应用程序运行的阶段,称为恢复阶段,第一阶段包括第一步至第四步,第二阶段包括第五步至第七步,具体步骤如下:第一步,部署并行计算机系统硬件和软件,方法是:

1.1部署多个计算节点、一个管理节点和一个磁盘I/O系统,计算节点完成计算功能,一个计算节点由多个处理器和一个共享的存储器构成,每个处理器包括偶数个处理器核;

管理节点完成系统管理功能;磁盘I/O系统保存应用程序和数据;

1.2通过网络完成连接:计算节点之间由高速计算网络连接,通过高速计算网络进行计算过程中的通信;计算节点、管理节点和磁盘I/O系统之间通过存储网络连接,通过存储网络向磁盘I/O系统传输程序、数据;计算节点、磁盘I/O系统和管理节点之间通过管理网络连接,管理节点通过管理网络提交作业,维护计算节点和I/O系统;

1.3软件部署:计算节点上安装有操作系统、作业管理系统、通信库和全局文件系统,操作系统内核模块中含系统容错模块;管理节点安装有作业管理系统和全局文件系统,磁盘I/O系统安装有全局文件系统;作业由计算节点上协作运行的多个并行任务组成,作业管理系统通过管理网络将并行任务提交给计算节点运行,并负责管理并行任务;计算节点上的每个并行任务除了包括一个计算线程以外,还包括一个用于支持容错的帮助线程,帮助线程在检查点阶段将缓存在内存的中间运行状态保存到磁盘I/O系统,在恢复阶段将中间运行状态从磁盘I/O系统读入到内存;

第二步,作业管理系统提交并行任务:

2.1管理节点的作业管理系统与计算节点的作业管理系统通信,请求在计算节点生成N个并行任务,计算节点的作业管理系统根据请求生成并行任务;在多个计算节点启动的并行任务通过通信库使用高速计算网络通信,通信库在并行任务启动时为该并行任务分配逻辑编号ID,ID的范围为0~N-1,其中N为并行任务数,N小于等于处理器核数的一半;

2.2并行任务的计算线程完成计算功能;

2.3计算节点上具有逻辑编号ID的并行任务的帮助线程建立与逻辑编号为ID+1和逻辑编号为ID-1的并行任务的帮助线程之间的连接,ID不包括0和N-1;逻辑编号为0的并行任务的帮助线程只与逻辑编号为1的并行任务的帮助线程建立连接,逻辑编号为N-1的并行任务的帮助线程只与逻辑编号为N-2的并行任务的帮助线程建立连接,这样建立了所有并行任务的帮助线程的一个排序,顺序就是逻辑编号的顺序;

2.4并行任务的帮助线程进入睡眠状态,准备从计算线程接收检查点保存请求;

第三步,系统容错模块保存计算线程的中间运行状态,过程如下:

3.1管理节点的作业管理系统通知计算节点作业管理系统开始检查点操作,计算节点作业管理系统向本地并行任务发送信号,启动检查点操作;

3.2并行任务收到检查点信号后,暂停计算线程的计算,系统容错模块清空通信库建立的通信通道中的数据,保留全部待发送和已接收但未处理的消息数据,关闭通信通道;

3.3系统容错模块检查内存是否具有足够的空间用于保存计算线程的中间运行状态,如果有足够空间,执行3.5;如果没有足够空间,执行3.4;

3.4计算线程进入睡眠状态,执行3.5;

3.5本地并行任务使用系统容错模块将计算线程的中间运行状态保存在内存,打开通信通道,唤醒帮助线程,恢复计算线程为运行状态;

3.6计算线程运行;

第四步,帮助线程保存计算线程的中间运行状态,过程如下:

4.1帮助线程睡眠等待;

4.2帮助线程被计算线程唤醒后检查内存,查找是否有尚未保存到磁盘I/O系统的计算线程的中间运行状态;如果没有计算线程的中间运行状态需要保存,执行4.1;如果有计算线程的中间运行状态需要保存,执行4.3;

4.3根据磁盘I/O系统稳定运行最大支持的客户节点数目M,M为正整数,计算节点的帮助线程依逻辑编号ID的排序,依照ID由小到大的顺序,依次将内存的计算线程的中间运行状态保存到磁盘I/O系统,每次最大并发保存的帮助线程数限制不超过M,M的值根据对磁盘I/O系统的测试获得;

4.4帮助线程唤醒等待检查点完成的计算线程,执行4.1;

第五步,建立并行任务结构,方法是:

5.1根据并行任务的计算线程的中间运行状态的保存位置,作业管理系统提取对应的作业运行参数,包括作业之前运行的并行任务总数TN、每个节点运行的并行任务数LN,然后分配TN/LN个计算节点,通知计算节点上的作业管理系统启动并行任务,TN和LN均为正整数;

5.2计算节点上的管理服务进程启动并行任务,并行任务包括两个线程,也就是计算线程和帮助线程,这里的计算线程只具有操作系统线程的内核状态部分,用户状态部分需要从以前保存的计算线程的中间运行状态恢复;

5.3计算线程进入睡眠状态,等待帮助线程唤醒;

5.4采用步骤2.3所述的方法,帮助线程根据并行任务的逻辑ID构成一个排序;

第六步,帮助线程将内存的中间运行状态进行恢复,方法是:

6.1根据磁盘I/O系统稳定运行最大支持的客户节点数目M,计算节点的帮助线程依逻辑编号ID的排序,依照ID由小到大的顺序,依次将磁盘I/O系统中计算线程的中间运行状态读入到内存,每次最大并发读取的帮助线程数限制不超过M;

6.2帮助线程通知系统容错模块恢复运行状态,帮助线程转入睡眠状态;

第七步,系统容错模块将计算线程进行恢复,方法是:

7.1系统容错模块恢复计算线程的处理器状态、寄存器信息、内存信息,然后打开通信库的通信通道;

7.2系统容错模块将计算线程转移到执行状态,继续计算线程的执行。

2.如权利要求1所述的一种基于内存缓存技术的多核系统容错方法,其特征在于计算节点的作业管理系统生成并行任务时,每个计算节点上最大生成的并行任务的数目是计算节点上处理器核数的一半,且每个计算节点要保留内存资源的一半用于检查点操作。

说明书 :

一种基于内存缓存技术的多核系统容错方法

[0001] 技术领域:本发明涉及并行计算机领域的容错方法,尤其指一种多核系统上基于内存缓存技术的容错方法。
[0002] 背景技术:当前通过提高频率来提高芯片性能的半导体技术发展思路很难持续下去,在单个芯片上多个处理器核(多核)来提供更高的系统吞吐率方法已经成为摩尔定律继续适用的主要方式。为了使得并行计算机系统性能持续提高,当前的并行计算机系统使用了大量的多核处理器和大容量存储器,例如IBM BlueGene/L系统包括了几十万个CPU核。采用这样大量CPU核和大容量存储器的系统经常面临着系统单点故障和全系统故障,系统无故障运行的时间可能只有几个小时。并行计算机系统的可靠性没有明显的提高,甚至随着系统规模的增大,可靠性降低。为了将应用扩展到几十万并发度的水平,需要容错技术保证在单点或者全系统故障情况下应用能够持续运行。
[0003] 检查点技术是当前并行计算机采用的主要容错技术,应用程序的状态被定期保存到稳定存储设备上,当系统出现故障时,应用可以从检查点映像中恢复执行。系统级检查点是经常被采用的方法之一。
[0004] 如图1是当前多核系统上采用传统系统级检查点方法的软硬件部署。并行计算机系统由多个计算节点、一个管理节点和一个磁盘I/O系统构成。计算节点完成计算功能,一个计算节点由多个处理器和一个共享的存储器构成,每个处理器包括多个(一般为偶数个)处理器核。管理节点完成系统管理功能。磁盘I/O系统是当前计算机系统主流的存储设备,具有数据非易失性,用于保存应用程序和数据。
[0005] 计算节点之间由高速计算网络连接,通过高速计算网络进行计算过程中的通信。计算节点、管理节点和磁盘I/O系统之间通过存储网络连接,通过存储网络向磁盘I/O系统传输程序、数据。计算节点、磁盘I/O系统和管理节点之间通过管理网络连接,管理节点通过管理网络提交作业,维护计算节点和I/O系统。
[0006] 计算节点上安装有操作系统、作业管理系统、通信库和全局文件系统,管理节点安装有作业管理系统和全局文件系统,磁盘I/O系统安装有全局文件系统。应用进程映像的保存需要计算节点上的操作系统内核模块的支持,这个内核模块称为系统容错模块。当前并行计算机都提供作业管理系统,用于完成由管理节点到计算节点上作业的提交和管理。作业一般是由计算节点上协作运行的多个并行任务组成,作业管理系统通过管理网络将并行任务提交给计算节点运行,并负责管理并行任务。计算节点运行多个并行任务,一个并行任务至少包括一个计算线程,计算线程完成计算功能。多个计算节点的并行任务通过通信库利用高速计算网络通信完成作业运行,通信库为每个节点上的并行任务分配了逻辑编号ID。所有的并行任务通过全局文件系统接口和存储网络完成到磁盘I/O系统的数据存取。
[0007] 系统级检查点方法是通过作业管理系统发起检查点过程,计算线程进入等待状态,通过系统容错模块清空通信库建立的通信通道,保存全部待发送和已接收但未处理的消息数据,达到全局一致的状态,关闭通信通道,将整个应用执行的中间运行状态保存到磁盘I/O系统,然后计算线程恢复运行。当应用程序出现运行故障时,读取保存在磁盘I/O系统的中间运行状态,从最近的中间运行状态恢复应用进程执行。这种方法保存了整个应用进程的物理内存映像,不需要对应用程序作任何修改,对用户透明,使用方便。
[0008] 但是系统级检查点方法数据存储的开销较高,当前并行计算机一次内存映像保存就达到TB到PB的量级,而全局文件系统的带宽仅仅为几个GB到几十个GB,单位GB内存的带宽很低。例如2010年6月TOP500中性能排名最高的系统Cray Jaguar的单位GB内存的带宽只有0.8MB/s,曾经排名最高的IBM Roadrunner的单位GB内存的带宽只有2MB/s,因此检查点过程中面临的I/O瓶颈严重。在这样大规模的系统上,一次全系统检查点时间可能需要几十分钟,这对于几个小时进行一次检查点操作的应用是很大的时间开销。并且多个系统结点同时产生大量I/O,在I/O网络中产生竞争冲突。多个映像文件写入同一个I/O系统产生拥塞,文件系统将不堪重负,降低了系统的可靠性。
[0009] 如何基于当前并行计算机的多核发展趋缓和可靠性亟待提高的需求,提供新的多核系统容错方法是本领域技术人员极为关注的技术问题。发明内容:
[0010] 本发明要解决的技术问题是提出一种多核系统上基于内存缓存的检查点容错方法,解决检查点过程中对I/O资源的突发性需求,减少检查点操作的时间。
[0011] 本发明分为两个阶段:第一阶段是为了支持容错,应用程序运行期间对作业中间运行状态保存的阶段,称为检查点阶段;第二阶段是当应用程序出现错误情况下,使用保存的中间运行状态恢复应用程序运行的阶段,称为恢复阶段。具体步骤如下:
[0012] 第一阶段即检查点阶段,应用程序运行期间对作业中间运行状态进行保存,方法如下:
[0013] 第一步,部署并行计算机系统硬件和软件。本发明采用的并行计算机硬件和传统系统级检查点方法采用的系统相同,区别在于软件的部署。部署方法是:
[0014] 1.1部署多个计算节点、一个管理节点和一个磁盘I/O系统。
[0015] 计算节点完成计算功能,一个计算节点由多个处理器和一个共享的存储器构成,每个处理器包括偶数个处理器核。管理节点完成系统管理功能。磁盘I/O系统是当前计算机系统主流的存储设备,具有数据非易失性,用于保存应用程序和数据。
[0016] 1.2通过网络完成连接。
[0017] 计算节点之间由高速计算网络连接,通过高速计算网络进行计算过程中的通信。计算节点、管理节点和磁盘I/O系统之间通过存储网络连接,通过存储网络向磁盘I/O系统传输程序、数据。计算节点、磁盘I/O系统和管理节点之间通过管理网络连接,管理节点通过管理网络提交作业,维护计算节点和I/O系统。
[0018] 1.3软件部署,方法是:
[0019] 计算节点上安装有操作系统、作业管理系统、通信库和全局文件系统,管理节点安装有作业管理系统和全局文件系统,磁盘I/O系统安装有全局文件系统。作业由计算节点上协作运行的多个并行任务组成,作业管理系统通过管理网络将并行任务提交给计算节点运行,并负责管理并行任务。与传统系统级检查点不同,计算节点上的每个并行任务除了包括一个计算线程以外,还包括一个用于支持容错的帮助线程,帮助线程在检查点阶段将缓存在内存的中间运行状态保存到磁盘I/O系统,在恢复阶段将中间运行状态从磁盘I/O系统读入到内存。与传统系统级检查点方法不同,系统容错模块首先将计算线程的中间运行状态保存到内存,然后由帮助线程将内存的中间运行状态保存到磁盘I/O系统。因为内存的速度比磁盘I/O系统的速度高很多,中间运行状态到内存的保存过程速度很快,而帮助线程将内存的中间运行状态保存到磁盘I/O系统的过程则可以和计算线程的计算并行进行,不影响计算时间,因此采用本发明可极大地减少容错的时间。
[0020] 第二步,作业管理系统提交并行任务,方法是:
[0021] 2.1管理节点的作业管理系统与计算节点的作业管理系统通信,请求在计算节点生成N个并行任务,计算节点的作业管理系统根据请求生成并行任务。
[0022] 因为每个并行任务(即2个线程)要占用两个处理器核,所以每个计算节点上最大生成的并行任务的数目是计算节点上处理器核数的一半。同时为了保证完成检查点功能,每个计算节点要保留足够的内存资源用于完成检查点操作,需保留内存资源的一半用于检查点操作。在多个计算节点启动的并行任务通过通信库使用高速计算网络通信,通信库在并行任务启动时为该并行任务分配了逻辑编号ID,ID的范围为0~N-1,其中N为并行任务数,N小于等于处理器核数的一半。
[0023] 2.2并行任务的计算线程完成应用指定的计算功能。
[0024] 2.3计算节点上具有逻辑编号ID(不包括逻辑编号0和逻辑编号N-1)的并行任务的帮助线程建立与逻辑编号为ID+1和逻辑编号为ID-1的并行任务的帮助线程之间的连接,逻辑编号为0的并行任务的帮助线程只与逻辑编号为1的并行任务的帮助线程建立连接,逻辑编号为N-1的并行任务的帮助线程只与逻辑编号为N-2的并行任务的帮助线程建立连接,这样建立了所有并行任务的帮助线程的一个排序,顺序就是逻辑编号的顺序。
[0025] 2.4并行任务的帮助线程进入睡眠状态,准备从计算线程接收检查点保存请求。
[0026] 第三步,系统容错模块保存计算线程的中间运行状态,过程如下:
[0027] 3.1管理节点的作业管理系统通知计算节点作业管理系统开始检查点操作,计算节点作业管理系统向本地并行任务发送信号,启动检查点操作;
[0028] 3.2并行任务收到检查点信号后,暂停计算线程的计算,系统容错模块清空通信库建立的通信通道中的数据,保留全部待发送和已接收但未处理的消息数据,关闭通信通道;
[0029] 3.3系统容错模块检查内存是否具有足够的空间用于保存计算线程的中间运行状态,如果有足够空间,执行3.5;如果没有足够空间,执行3.4。
[0030] 3.4计算线程进入睡眠状态,执行3.5。
[0031] 3.5本地并行任务使用系统容错模块将计算线程的中间运行状态保存在内存,打开通信通道,唤醒帮助线程,恢复计算线程为运行状态。
[0032] 3.6计算线程运行;
[0033] 第四步,帮助线程保存计算线程的中间运行状态,过程如下:
[0034] 4.1帮助线程睡眠等待;
[0035] 4.2帮助线程被计算线程唤醒后检查内存,查找是否有尚未保存到磁盘I/O系统的计算线程的中间运行状态。如果没有计算线程的中间运行状态需要保存,执行4.1;如果有计算线程的中间运行状态需要保存,执行4.3;
[0036] 4.3根据磁盘I/O系统稳定运行最大支持的客户节点数目M,M为正整数,计算节点的帮助线程依逻辑编号ID的排序,依照ID由小到大的顺序,依次将内存的计算线程的中间运行状态保存到磁盘I/O系统,每次最大并发保存的帮助线程数限制不超过M。这里M的值可以根据对磁盘I/O系统的测试获得。
[0037] 如果I/O系统支持的写带宽为WB,计算节点的数目为N,每个节点需要保存的中间运行状态平均大小为C,经过C×N/WB时间后完成N个节点的中间运行状态输出。
[0038] 4.4帮助线程唤醒等待检查点完成的计算线程,执行4.1。
[0039] 本发明第二阶段恢复过程的技术方案如下:
[0040] 并行任务恢复运行的过程是检查点执行过程的逆过程,任务恢复运行的步骤为:
[0041] 第五步,建立并行任务结构,方法是:
[0042] 5.1根据并行任务的计算线程的中间运行状态的保存位置,作业管理系统提取对应的作业运行参数,包括作业之前运行的并行任务总数TN、每个节点运行的并行任务数LN,然后分配TN/LN个计算节点,通知计算节点上的作业管理系统启动并行任务,TN和LN均为正整数;
[0043] 5.2计算节点上的管理服务进程启动并行任务,并行任务包括两个线程,也就是计算线程和帮助线程,这里的计算线程只具有操作系统线程两部分(内核状态和用户状态)中的内核状态部分,用户状态部分尚需要从以前保存的计算线程的中间运行状态恢复;
[0044] 5.3计算线程进入睡眠状态,等待帮助线程唤醒;
[0045] 5.4采用步骤2.3所述的方法,帮助线程根据并行任务的逻辑ID构成一个排序;
[0046] 第六步,帮助线程将内存的中间运行状态进行恢复,方法是:
[0047] 6.1根据磁盘I/O系统稳定运行最大支持的客户节点数目M,计算节点的帮助线程依逻辑编号ID的排序,依照ID由小到大的顺序,依次将磁盘I/O系统中计算线程的中间运行状态读入到内存,每次最大并发读取的帮助线程数限制不超过M。
[0048] 如果I/O系统支持的读带宽为RB,计算节点的数目为N,每个节点需要读取的中间运行状态平均大小为C,经过C×N/RB时间后完成N个节点的中间运行状态读入。
[0049] 6.2帮助线程通知系统容错模块恢复运行状态,帮助线程转入睡眠状态。
[0050] 第七步,系统容错模块将计算线程进行恢复,方法是:
[0051] 7.1系统容错模块恢复计算线程的处理器状态、寄存器信息、内存信息。完成本地信息恢复后,系统容错模块打开通信库的通信通道。
[0052] 7.2系统容错模块将计算线程转移到执行状态,继续计算线程的执行。
[0053] 本发明给出了一种多核系统上基于内存缓存的检查点容错方法。当前并行系统的CPU和内存资源丰富,而I/O带宽受限,本发明提出的方法使用这些CPU和内存来缓存中间运行状态,使用帮助线程将中间运行状态保存到磁盘I/O系统。帮助线程的保存和计算线程的计算是并发进行的。帮助线程的磁盘I/O可以有效的调度,解决了中间运行状态保存过程中全部计算节点同时申请磁盘I/O资源的突发性需求,帮助线程的保存和计算线程的计算并发提高了容错性能。与现有高性能计算机容错方法相比,本发明充分利用了现有并行计算机丰富的CPU和内存资源,实现了计算和容错的并行。采用本发明可以达到以下技术效果:
[0054] 1、本发明第三步利用内存缓存将计算线程的中间运行状态首先保存到内存,然后计算线程继续执行,计算线程的中间运行状态由帮助线程保存到磁盘I/O系统,与计算线程的计算并行执行。因为内存速度较I/O系统的速度要高很多,计算线程的中间运行状态到内存的保存对程序执行时间的影响很小,而到磁盘I/O的保存和计算线程的计算并行执行,所以显著降低了系统级检查点的容错时间。
[0055] 2、本发明第四步和第六步将计算线程的中间运行状态在内存和I/O磁盘系统映像的读/写过程中,依据磁盘I/O系统稳定运行最大支持的客户节点数目M来进行,这种方式避免了全部计算节点同时请求磁盘I/O系统,减少了磁盘I/O系统的访问冲突,改善了读/写时间的同时,提高了I/O磁盘系统的稳定性。附图说明:
[0056] 图1是传统系统级检查点并行计算机系统结构图;
[0057] 图2是本发明第一步部署的并行计算机系统结构图;
[0058] 图3是本发明第三步系统容错模块和第四步帮助线程保存计算线程的中间运行状态的流程图;
[0059] 图4是本发明第六步帮助线程和第七步系统容错模块恢复计算线程运行的流程图;
[0060] 图5是采用本发明减少了容错时间的示意图。具体实施方式:
[0061] 图1是传统系统级检查点并行计算机系统结构图。
[0062] 图2是本发明第一步部署的并行计算机系统结构图。与传统系统级检查点不同,计算节点上的每个并行任务除了包括一个计算线程以外,还包括一个用于支持容错的帮助线程,帮助线程在检查点阶段将缓存在内存的中间运行状态保存到磁盘I/O系统,在恢复阶段将中间运行状态从磁盘I/O系统读入到内存。与传统系统级检查点方法不同,计算节点上的系统容错模块首先将计算线程的中间运行状态保存到内存,然后由帮助线程将内存的中间运行状态保存到磁盘I/O系统。因为内存的速度比磁盘I/O系统的速度高很多,中间运行状态到内存的保存过程速度很快,而帮助线程将内存的中间运行状态保存到磁盘I/O系统的过程则可以和计算线程的计算并行进行,不影响计算时间,因此本发明极大减少了容错的时间。
[0063] 图3是本发明本发明第三步系统容错模块和第四步帮助线程保存计算线程的中间运行状态的流程图。系统容错模块保存计算线程的中间运行状态的过程如下:
[0064] 第三步,系统容错模块保存计算线程的中间运行状态,过程如下:
[0065] 3.1管理节点的作业管理系统通知计算节点作业管理系统开始检查点操作,计算节点作业管理系统向本地并行任务发送信号,启动检查点操作;
[0066] 3.2并行任务收到检查点信号后,暂停计算线程的计算,系统容错模块清空通信库建立的通信通道中的数据,保留全部待发送和已接收但未处理的消息数据,关闭通信通道;
[0067] 3.3系统容错模块检查内存是否具有足够的空间用于保存计算线程的中间运行状态,如果有足够空间,执行3.5;如果没有足够空间,执行3.4;
[0068] 3.4计算线程进入睡眠状态,执行3.5;
[0069] 3.5本地并行任务使用系统容错模块将计算线程的中间运行状态保存在内存,打开通信通道,唤醒帮助线程,恢复计算线程为运行状态;
[0070] 3.6计算线程运行;
[0071] 第四步,帮助线程保存计算线程的中间运行状态,过程如下:
[0072] 4.1帮助线程睡眠等待;
[0073] 4.2帮助线程被计算线程唤醒后检查内存,查找是否有尚未保存到磁盘I/O系统的计算线程的中间运行状态;如果没有计算线程的中间运行状态需要保存,执行4.1;如果有计算线程的中间运行状态需要保存,执行4.3;
[0074] 4.3根据磁盘I/O系统稳定运行最大支持的客户节点数目M,M为正整数,计算节点的帮助线程依逻辑编号ID的排序,依照ID由小到大的顺序,依次将内存的计算线程的中间运行状态保存到磁盘I/O系统,每次最大并发保存的帮助线程数限制不超过M,M的值根据对磁盘I/O系统的测试获得;
[0075] 4.4帮助线程唤醒等待检查点完成的计算线程,执行4.1。
[0076] 图4是本发明第六步帮助线程和第七步系统容错模块恢复计算线程运行的流程图。
[0077] 第六步,帮助线程将内存的中间运行状态进行恢复,方法是:
[0078] 6.1根据磁盘I/O系统稳定运行最大支持的客户节点数目M,计算节点的帮助线程依逻辑编号ID的排序,依照ID由小到大的顺序,依次将磁盘I/O系统中计算线程的中间运行状态读入到内存,每次最大并发读取的帮助线程数限制不超过M;
[0079] 6.2帮助线程通知系统容错模块恢复运行状态,帮助线程转入睡眠状态;
[0080] 第七步,系统容错模块将计算线程进行恢复,方法是:
[0081] 7.1系统容错模块恢复计算线程的处理器状态、寄存器信息、内存信息,然后打开通信库的通信通道;
[0082] 7.2系统容错模块将计算线程转移到执行状态,继续计算线程的执行。
[0083] 图5是采用本发明减少了容错时间的示意图。以Linux/x86双核系统为运行环境,系统的物理内存2GB,I/O带宽400MB/s,单位GB内存的带宽200MB/s。使用一个存储空间需求为800MB(满足不超过存储空间一半的要求)的应用程序,用于分析本发明的有效性。测试以下3种情况程序的执行时间:没有容错支持(NOCR)、使用本发明(RAMFS)和使用传统的容错方法(DISK)。本发明和传统容错方法在程序运行期间都完成了同样次数的检查点操作,这里实际完成了7次检查点。图5给出了该情况下程序的执行时间,所有时间相对于NOCR情况进行了归一化。从图中可以看出,没有容错支持的情况下执行时间最短,使用本发明的情况RAMFS,因为容错导致的时间延长不到1%,而使用传统的容错方法DISK,检查点导致时间延长超过4%。由此可以看出采用本发明显著减小了容错时间。