CN105975360A - 用于处理并行程序中的故障的弹性编程框架 - Google Patents
用于处理并行程序中的故障的弹性编程框架 Download PDFInfo
- Publication number
- CN105975360A CN105975360A CN201610140638.4A CN201610140638A CN105975360A CN 105975360 A CN105975360 A CN 105975360A CN 201610140638 A CN201610140638 A CN 201610140638A CN 105975360 A CN105975360 A CN 105975360A
- Authority
- CN
- China
- Prior art keywords
- application
- elastic
- executor
- fault
- checkpoint
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1451—Management of the data involved in backup or backup restore by selection of backup contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/463—Program control block organisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Retry When Errors Occur (AREA)
Abstract
用于支持计算机程序的弹性执行的信息处理系统、计算机可读贮存介质和方法。方法提供弹性贮存器,其中在故障的情况下能够访问在所述弹性贮存器中的信息。该方法周期性地对在所述弹性贮存器中的应用状态进行检查点处理。弹性执行器包括通过捕获故障而执行应用的软件。该方法使用所述弹性执行器执行至少一个应用。响应于所述弹性执行器检测到故障,从所述弹性贮存器中的检验点恢复应用状态信息到所述至少一个应用,所述弹性执行器用恢复的应用状态信息再继续所述至少一个应用的执行。
Description
技术领域
本公开总体上涉及容错计算,并且更具体地涉及用于处理在执行并行计算机程序中的故障的弹性计算机编程框架的方法和系统。
背景技术
在执行计算机程序中的故障构成严重的问题。该问题混合在多处理器环境中,其中单个处理器的故障可能引起计算失败,需要其从头开始运行。
近年来,已经介绍了诸如映射归约(map reduce)(Hadoop是公知的实现方式,http://hadoop.apache.org/)、Spark(https://spark.apache.org/)和Pregel(Malewicz等人的“Pregel:A System for Large-Scale Graph Processing”,SIGMOD论文集2010年,http://kowshik.github.io/JPregel/pregel_paper.pdf)的框架,这提供了对故障的一些程度的弹性(resilience)。这些之前的方法的主要缺点在于它们仅适用于遵循某些常规模式的应用。存在许多不符合映射归约或Pregel范例的应用。
MPI(http://www.mcs.anl.gov/research/projects/mpi/)经常被用于程序并行计算系统。然而,虽然MPI提供了消息传送支持,但是其没有提供成熟的编程环境。而是,其被设计为结合诸如C、C++、Fortran、Java等的现有编程语言而使用。
因此,存在对帮助程序员编写弹性程序的更普遍的框架的需求。
发明内容
根据本公开的一个实施例,用于支持计算机程序的弹性执行的方法包括以下步骤:提供弹性贮存器,其中在故障的情况下能够访问在所述弹性贮存器中的信息;周期性地对在所述弹性贮存器中的应用状态进行检查点处理;提供弹性执行器,该弹性执行器包括通过捕获故障而执行应用的软件;使用所述弹性执行器执行至少一个应用;以及响应于所述弹性执行器检测到故障,从所述弹性贮存器中的检验点恢复应用状态信息,所述弹性执行器再继续所述至少一个应用的执行。
根据本公开的另一实施例,能够支持计算机程序的弹性执行的信息处理系统,所述信息处理系统包括:存储器;持久存储器,用于贮存数据和计算机指令;弹性贮存器,通信地与所述存储器和所述持久存储器耦合,其中在所述信息处理系统中执行的应用的故障的情况下,能够访问贮存在所述弹性贮存器中的信息;弹性执行器,通信地与所述存储器和所述持久存储器耦合,用于通过捕获在应用的计算的执行中的故障来执行所述计算;处理器,通信地与所述弹性执行器、所述弹性贮存器、所述存储器、所述持久存储器耦合,并且其中所述处理器响应于执行计算机指令,进行包括以下步骤的操作:周期性地对在所述弹性贮存器中的应用状态进行检查点处理;在所述计算的执行中捕捉到故障时用所述弹性执行器执行应用的计算;基于所述弹性执行器检测到所述应用的计算的执行中的故障,从所述弹性贮存器中的检查点恢复所述应用的应用状态信息;以及用所述弹性执行器利用恢复的应用状态信息再继续所述应用的计算的执行。
又根据本公开的另一实施例,计算机可读贮存介质包括计算机指令,其响应于由处理器执行,使得处理器进行用于支持计算机程序的弹性执行的操作,所述操作包括:提供弹性贮存器,其中在故障的情况下能够访问在所述弹性贮存器中的信息;周期性地对在所述弹性贮存器中的应用状态进行检查点处理;提供弹性执行器,该弹性执行器包括通过捕获故障而执行应用的软件;使用所述弹性执行器执行至少一个应用;以及响应于所述弹性执行器检测到故障,从所述弹性贮存器中的检验点恢复应用状态信息到至少一个应用,所述弹性执行器利用恢复的应用状态信息再继续所述至少一个应用的执行。
附图说明
附图用于进一步说明各种实施例并且解释根据本公开的所有各种原理和优点,附图中相似的参考标号在各个视图中指代相同的或功能上类似的元件,并且与下面的具体实施方式一起被并入说明书并且形成说明书的部分,其中:
图1是例示根据本公开的其中实现计算机编程框架的信息处理系统的示例的框图;
图2是例示根据本公开的各种示例的弹性计算(ResilientComputation)接口的示例的程序列表;
图3是例示根据本公开的各种示例的弹性迭代计算(ResilientIterativeComputation)的示例的程序列表;
图4和5构成例示根据本公开的各种示例的可以通信地与应用耦合的弹性执行器类别(ResilientExecutor class)的示例的程序列表。
具体实施方式
根据本公开的各种实施例,公开了提供用于程序员编写弹性程序的新的计算机编程框架的系统和方法。诸如捕获和处理故障的低级别细节由特定软件处理。这减轻软件程序员并且尤其是现代并行计算应用的程序员的重大编程负担。
本公开的各种实施例可适用于包含状态机的软件应用的计算机编程框架,其中该状态机具有可以被周期性地保存为贮存的检查点(checkpoint)的状态。在故障的情况下,应用可以从自之前的贮存的检查点恢复(restore)的应用状态信息重新开始。如果应用可以被适当地恢复而不参考任何保存的状态(例如,应用已经在持久贮存器中比如在盘上贮存了还原(recovery)所需的所有状态信息),甚至更容易使用本公开的实施例来处理程序弹性。
根据各种实施例,编程框架提供允许应用实现弹性的软件。其极大地简化了编写弹性程序的任务。
本公开的各种实施例向应用程序提供以下特征的一个或多个:
1)使用检测故障的位置(place)的异常处理来执行应用程序的能力。术语“位置”指可以用于应用的执行计算的至少一部分,比如进程(或在一些情况中,一个或多个线程)。位置可以包括执行计算的实体。
2)在应用中可靠地对数据结构进行检查点处理使得在故障的情况下该数据结构将被保存的能力。
3)隐藏在其上执行计算的实际物理位置的虚拟位置。程序参考虚拟位置而不是物理位置。那样,如果物理位置故障,则计算可以继续参考没有故障的虚拟位置。虚拟位置被映射到物理位置。虚拟的到物理位置的映射可以被更新以遮盖物理位置故障。
仅为了说明的目的,在这里使用X10编程语言“X10语言规格版本2.5”,Saraswat等人,http://x10.sourceforge.net/documentation/languagespec/x10-latest.pdf,来描述本公开的各种非限制性示例实施例。关于X10的额外的信息可从http://x10-lang.org/获得。
本公开的实施例也可以被实现用于其它编程语言和编程环境。
如将在下面讨论的弹性计算(ResilientComputation)/弹性执行器(ResilientExecutor)框架允许X10程序被编写使得程序员不需要担心低级别的故障处理。用于诸如捕获和处理无效(dead)位置异常(其是当一位置故障时由X10运行时间系统产生的一种类型的异常)的处理故障的低级别的细节由弹性执行器类别(以及使用诸如虚拟位置映射(VirtualPlaceMap)和弹性映射(ResilientMap)的类别)处理。
根据各种实施例,其可以应用于具有可以被周期性地进行检查点处理的状态的应用。在故障的情况下,应用从最后的一致(consistent)检查点的点重新开始。如果应用可以适当地恢复而不需要任何被检查点处理的状态(例如,应用已经在持久贮存器中比如在盘上贮存了还原所需的所有状态),甚至更容易使用该框架来处理弹性。
本示例框架利用以下类别:
弹性执行器(ResilientExecutor):实现框架的主要类别。作为示例见图4和5。
弹性计算(ResilientComputation):指定应用可以使用来实现框架的专用方法的接口。作为示例见图2。
弹性迭代计算(ResilientIterativeComputation):指定迭代应用可以使用来实现框架的专用方法的接口。作为示例见图3。
虚拟位置映射(VirtualPlaceMap):实现虚拟位置的类别,其隐藏由应用使用的实际物理位置使得应用不需要直接应对位置故障。虚拟位置映射的示例将在下面参考图3讨论。
弹性映射(ResilientMap):提供在位置故障的情况下可访问的弹性贮存。
无序的位置组(PlaceGroupUnordered):该类别实现位置组,其中该位置组中的次序可能不同于位置的物理次序。这用于管理虚拟位置。
根据本示例,为使用该框架,应用可以实现弹性计算接口(普遍适用的)或弹性迭代计算接口(用于迭代计算)。存在在本公开的精神和范围内的多种其它接口。根据本示例,在图2中示出了弹性计算接口,包括其几种方法。根据本示例,在图3中示出了弹性迭代计算接口,包括其几种方法。根据本示例,在图4和5中示出了弹性执行器类别及其几种方法。
根据本示例,本公开的框架可以与将在下面更加详细描述的信息处理系统一起使用。
应用程序被实现为实现弹性计算接口的类别的实例(comp)。如果替代地使用弹性迭代计算接口或其它接口,过程将是类似的。
comp创建用于该应用程序的新的弹性执行器对象,resExec。
引用(call)resExec.runResiliently()以弹性地调用(invoke)在comp中的运行方法。
在comp中的运行方法周期性地调用resExec.checkpoint以对计算的状态进行检查点处理。
如果resExec.runResiliently遇到(例如,检测并捕获)异常(特别地,无效位置异常),其通过调用comp.restore弹性地将计算的状态恢复到之前的检查点。在计算的状态被恢复到之前的检查点之后,resExec.runResiliently通过弹性地调用在comp中的运行方法来继续计算。
用于使用该框架的上述方法的主启用器(enabler)是使用虚拟位置。在计算中虚拟位置数量保持恒定,使得专用代码不需要由于位置故障而被修改。弹性执行器类别保持虚拟位置映射并且用有效的(live)物理位置替代无效的物理位置以在计算中保持虚拟位置数量一致。应用被编写为在虚拟位置上而不是物理位置上迭代。
弹性执行器类别负责在位置故障经由异常处理被自动地检测和捕获、并且特别是无效位置异常被适当地应对的环境之下运行应用程序。该类别维持虚拟位置映射以隐藏位置故障可能已经产生、这使得必需用其它物理位置替换一个或多个物理位置的事实。该类别还提供用于从故障还原的弹性环境。下面是弹性框架的四个特征的概要:
1)提供代码以检测故障并且从故障还原。用户应用代码不需要担心在正常处理或还原期间的低级别故障检测。异常处理被构造为提供用于正常执行、检查点处理和从故障还原的弹性。
2)提供支持以有效地对应用进行检查点处理。弹性映射类别是提供该支持的主要特征。
3)应用参考(refer to)虚拟位置而不是实际的物理位置。
4)提供明确定义的接口的面向对象框架。弹性执行器可以被定制为处理不同类型的故障和不同的故障处理需求。
弹性框架的两个特征是:1)其处理故障/还原细节使得程序员不需要应对这些细节,以及2)其支持对应用计算的有效的检查点处理。此弹性框架非常通用并且支持比诸如Hadoop、Spark和Pregel的框架宽得多的范围的应用的有效处理。
虚拟位置
虚拟位置可以用于遮盖来自程序的位置故障。程序参考虚拟位置而不是在其上执行计算的物理位置。虚拟位置可以在程序的执行期间保持恒定。基本的物理位置可能改变。例如,如果虚拟位置v1被映射到物理位置p1并且p1故障,则v1可以被映射到另外的物理位置p2。在p1的故障之前以及在p1的故障之后该程序都可以继续参考虚拟位置v1。那样,应用程序员不需要编写特殊代码以应对在程序中的位置可能由于故障而改变的事实。
存在系统可以获得另一位置p2以替代故障的位置p1的多种方式。一个选择是具有在计算的开始时运行的多个备用位置。每当位置故障时,故障的位置由备用的位置替代。该方法引起备用位置的开销。此外,如果系统用完备用位置则会产生问题。
另一方法是在位置故障时启动新的位置以替代故障的位置。这避免了故障位置的缺点。但是这在启动新的位置时可能有一些开销/延迟。
虚拟位置由类别VirtualPlaceMap(虚拟位置映射)实现,该类别VirtualPlaceMap包括应用程序可以调用以使用的以下方法:
弹性执行器实现方式
根据各种实施例,弹性执行器类别使用以下方法弹性地运行程序。弹性执行器包括通过捕获故障而执行应用的软件。弹性执行器还可以通过递归地捕获和处理发生的额外的异常来处理至少一个异常。在下面将讨论如何可以使用X10编程语言来实现弹性执行器类别。还可能使用其它编程语言实现本发明。注意,在下面的方法中,“计算”和“迭代计算”是表示应用的对象。根据各种实施例,框架实现方式可以具有更多的对象以表示在本公开的精神和范围内的额外类型的应用。
如果使用额外类型的计算,可能具有在本发明的精神和范围内的额外的运行方法。
如果运行方法遇到故障,它们试图(例如,调用还原方法)经由以下来弹性地恢复计算的状态:
弹性地恢复(restoreResiliently)方法调用专用方法以恢复应用的计算的状态。其可以从贮存在弹性贮存器中的检查点恢复应用状态信息。下面是用于恢复的代码。注意,“计算”和“迭代计算”是表示应用的对象。具体实施例可以具有更多的对象以表示在本公开的精神和范围内的额外类型的应用。
适当地捕获并处理异常是至关重要的。这通过以下方法实现,该方法的目标在于识别无效位置异常。无效位置异常是当位置故障时产生的异常。将能够在本发明的精神和范围内扩展该方法以同样处理其它类型的异常。
当通过捕获和识别无效位置异常而检测到无效位置时,这些无效位置通过以下方法处理。关键点在于应用程序正使用永远不会无效的虚拟位置参考位置。虚拟位置被映射到物理位置。在物理位置无效之后,有效的物理位置被映射到之前对应于无效物理位置的虚拟位置。
之前示出的弹性地恢复(restoreResiliently)方法引用resumeExecution()以在故障已经被适当地处理之后继续应用程序的执行。下面是用于resumeExecution的代码:
注意,在本公开的精神和范围内,扩展恢复执行(resumeExecution)以处理除了GENERAL(普通)和ITERATIVE(迭代)以外的其它类型的计算是简单明了的。
本公开的主要方面是检查点处理。弹性执行器提供以下方法以用于由应用程序调用的检查点处理。
根据使用X10实现方式的本示例,特殊位置、位置0被假设为从不故障。因此,本公开的实施例可以安全地在位置0对至少一些应用状态信息进行检查点处理。这是具有checkpointAtPlace0()方法的一个原因。如果系统不能假设存在从不故障的位置0,则应用将不使用checkpointAtPlace0()方法。
当采用新的检查点c1时,本示例维持贮存在弹性贮存器中的之前的检查点c0。那样,如果在c1正被计算时产生故障,则系统将仍具有c0以恢复状态到执行的应用。在c1已经完成计算之后,删除c0是安全的。根据本示例,弹性执行器具有就在c1已经完成计算之后删除旧的检查点c0的以下方法:
应用具有定义deleteAtPlace()方法的选择,该deleteAtPlace()方法立刻删除之前的检查点。如果应用选择不这样做,则应用仍将继续弹性地并且正确地运行。唯一的缺点可能是旧的检查点c0将继续存在贮存在弹性贮存器中(而不是被立即删除),直到取下一个检查点并且覆盖c0为止。
应用使用弹性执行器类别的示例
参考图1到7,下面将讨论可以使用弹性执行器类别弹性地执行应用的信息处理系统100的示例。仅为了说明的目的,而不是对本公开的任何限制,将由信息处理系统100执行的示例应用是被实现为弹性迭代计算(ResilientIterativeComputation)的分子力学仿真。
应用创建弹性执行器类别的实例:
resExec=new ResilientExecutor(this);
该弹性执行器然后经由以下被调用:
resExec.iterateResiliently();
应用实现弹性执行器实例使用之前所述的异常处理而弹性地执行的多个方法。这些方法包括:
下面的代码对应用进行检查点处理并且由弹性执行器实例调用:
注意,为了减少检查点开销,不是必需在每个迭代之后调用检查点。如果在每个迭代之后调用检查点,则检查点处理开销可能是高的。优点是复原时间将是短的。如果较不频繁地调用检查点处理(即,ITERATIONS_PER_BACKUP是大于1的整数),这将减少检查点处理开销。缺点是复原时间将更长。因此在检查点处理开销和复原时间存在折衷。频繁的检查点与较不频繁的检查点相比增加了检查点处理开销但是减少了在故障之后的复原时间。
应用实现以下由弹性执行器实例调用的专用检查点方法:
应用实现以下由弹性执行器实例调用以删除废弃的检查点的专用方法。应注意的是,该方法是可选的。如果其没有实现,程序将继续正确地并弹性地操作。实现该方法的优点在于减少了检查点消耗的空间开销。
在故障的情况下,以下专用方法由弹性执行器实例调用以从之前的检查点恢复计算的状态:
虚拟位置也是该应用的关键元件。应用在计算中参考虚拟位置而不是物理位置。这些虚拟位置不改变,即使一个或多个物理位置在计算的进行中无效。
根据本示例,信息处理系统100(见图1)包括至少一个处理器102,该处理器102与存储器104和持久非易失性存储器106可通信地耦合。持久存储器106可以贮存计算机指令107、数据、配置参数和由处理器102使用的其它信息。贮存在持久存储器106中的所有这些贮存的分量可以单独地或者以任意组合贮存在主存储器104和处理器缓存存储器102中。根据本示例,信息处理系统100中的总线通信架构108促进可通信地耦合信息处理系统100的各种元件。网络接口装置124与处理器102可通信地耦合并且提供通信接口以与一个或多个外部网络126通信。
虽然图1是本发明的一个可能的实施例,但是许多其它实施例是可能的。本发明与具有多个处理器的系统具有特别的相关性。因此,对本发明的之前的描述更为一般化并且适用于比图1中所描述的多得多的种类的系统。
指令107可以包括已经在上面更加详细地讨论的以下中的一个或多个:弹性执行器类别130、弹性计算132、弹性迭代计算134、虚拟位置映射136、弹性映射138、无序的位置组140、ResExec方法144以及其它应用方法142。
在持久存储器106中,存在弹性映射贮存区域118。计算机贮存装置120与处理器102可通信地耦合。计算机贮存装置120可以与计算机可读贮存介质122通信地耦合。计算机可读贮存介质122可以贮存指令107的至少一部分。
用户接口110可通信地与处理器102耦合。用户接口110包括用户输出接口112和用户输入接口114。根据本示例,用户输出接口112包括显示器、以及诸如一个或多个扬声器的音频输出接口以及诸如视觉指示器、听觉指示器和触觉指示器的各种指示器。根据本示例,用户输入接口114包括键盘、鼠标或其它光标导航模块,比如触摸屏、触摸板、笔输入接口以及用于输入诸如用户语音的听觉信号、可以由处理器102识别的数据和命令的麦克风。
图2示出包括几种方法的示例弹性计算接口132。运行的方法运行计算并且另外周期性地创建应用计算的状态的检查点。如果在执行该应用的计算的一个或多个位置中存在故障,则可以调用恢复方法以将应用计算的状态恢复到在弹性映射贮存器118中贮存的最后的检查点。检查点数据结构可以保存在位置0处。此外,在特定位置处的特定检查点数据结构可以被检查点处理到弹性映射贮存器118。在应用计算的状态的新的检查点被保存到弹性映射贮存器118之后,可选地,贮存在弹性映射贮存器118中的先前的检查点可以从弹性贮存器删除。这通过从弹性映射贮存器118删除过时的和不必要的应用状态信息而优化了空间使用。
图3示出包括几种方法的示例弹性迭代计算接口134。该步骤方法被用于将计算的状态前进(advance)一个步骤。notFinished(未完成的)方法指示计算是否应该继续执行。其通常在迭代计算的每个步骤之后由弹性框架调用。恢复方法在检测到故障之后将应用计算的状态恢复到最后贮存的检查点。可以由弹性框架调用方法deleteAtPlace(在位置处删除)以从弹性映射贮存器118删除之前贮存的检查点。该方法通过从弹性映射贮存器118删除过时的和不必要的应用状态信息而优化了空间使用。
参考图4和5,弹性执行器类别130包括可以由应用调用的几种方法。弹性计算创建用于应用的计算的新的实例。弹性迭代计算创建用于该应用的迭代计算的新的实例。
RunResiliently(弹性地运行)方法调用专用运行方法以弹性地执行应用的一个或多个计算。弹性地运行方法可以调用从贮存在弹性映射贮存器118中的之前的检查点恢复应用状态信息的专用恢复方法。
检查点方法将专用数据贮存在弹性映射贮存器118中。numberOfCheckpoints(检查点数量)方法提供目前为止完成的检查点的总数。可以调用关键方法以计算将被用于检查点操作的对象的关键值。这允许应用程序使用弹性映射接口来对数据进行检查点处理而不需要手动计算关键值。getVirtualPlaceMap(得到虚拟位置映射)方法返回与应用的计算对应的虚拟位置映射。该方法允许应用使用虚拟位置。
根据本公开的弹性框架的各个方面
1)使用弹性贮存用于检查点处理,以及有效和易于使用的检查点处理技术。
2)使用虚拟位置遮盖无效位置。
3)在执行期间捕获相关的异常并且处理故障的有效方式、在故障之后的恢复阶段和在弹性框架中的异常-处理方法。
4)面向对象的框架和API以使得该方法易于使用。
本公开已经以示例的方式例示了新颖的信息处理系统和新颖的方法,其为程序员编写弹性程序提供新的计算机编程框架。诸如捕获和处理故障的低级别细节由特殊软件处理。这减轻了软件程序员、尤其是现代并行计算应用的程序员的严重的编程负担。
非限制性示例
如本领域普通技术人员将理解的,本公开的方面可以实现为系统、方法或计算机程序产品。相应地,本公开的方面可以采取完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或者组合了软件和硬件方面的实施例的形式,可以在这里将它们统称为“电路”、“模块”或“系统”。
本发明的多个实施例可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发所述计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集框架(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Java、Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),所述电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图示出了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系框架、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
虽然计算机可读贮存介质在示例实施例中被示出为单个介质,术语“计算机可读贮存介质”应被取为包括贮存一个或多个指令集的单个介质或多个介质(例如,集中式的或者分布式的数据库和/或相关联的缓存和服务器)。术语“计算机-可读贮存介质”应被认为包括能够贮存或者编码指令集的任何非瞬时介质,该指令集用于由机器执行并且使得机器进行公开主题的方法的任何一个或多个。
术语“计算机-可读贮存介质”应相应地被认为包括但不限于:固态存储器——诸如存储卡或容纳一个或多个只读(非易失性)存储器的其它封装,随机存取存储器或其它可重写(易失性)存储器,磁光或光介质——诸如磁盘或磁带,或可以被用于贮存信息的其它有形介质。相应地,本公开被认为包括如这里所列出的、在其中贮存这里的软件实现方式的计算机-可读贮存介质的任何一个或多个,包括领域内认可的等效物以及后续媒介。
尽管本说明书可能参考特定标准和协议描述实现在实施例中的组件和功能,但是本公开不限于这样的标准和协议。每个标准表示现有技术的示例。这样的标准不时地被具备基本上相同功能的更快速或者更有效的等效物所取代。
对这里所述的示例的说明意图提供对各种实施例的结构的一般理解,并且它们不意图作为可能使用在此描述的结构的设备和系统的所有元件和特征的完整描述。当回顾以上描述时,许多其它实施例对本领域技术人员来说将是显而易见的。可以利用并且从其得出其它实施例,使得可以在不脱离本公开的范围的情况下,做出结构上和逻辑上的替换和改变。附图也仅是表示性的并且可能未按比例绘制。其某些部分可能被夸大,而其它部分可能被缩小。相应地,说明书和附图将被认为是示意性的而不是限制性的含义。
尽管已经在此例示和描述了特定实施例,应理解的是,计算以实现相同目的的任何布置可以替换示出的特定实施例。这里的示例意图覆盖各种实施例的任何以及所有的适应或变型。在此构思以上实施例的组合以及未在这里特别描述的其它实施例。
应理解,提供摘要,理解为不意图用于解释或限制权利要求的范围或含义。此外,在前述的具体实施方式中,各种特征在单个示例实施例中被分组在一起用于使本公开连贯的目的。本公开的该方法不应被解释为反映了所要求的实施例需要比在每个权利要求中明确记述的更多的特征的意图。而是,如下面的权利要求所反映的,发明的主题在于少于单个公开的实施例的所有特征。因此以下的权利要求据此被并入具体实施方式中,每个权利要求本身作为独立要求保护的主题。
尽管仅示出了一个处理器102用于信息处理系统100,但是具有多个CPU或处理器的信息处理系统也可以同样有效使用。本公开的各种实施例还可以并入接口,该接口的每一个包括被用于从处理器102分担处理的单独的、完全编程的微处理器。包含在主存储器中用于信息处理系统100的操作系统(未示出)可以是合适的多任务和/或多处理操作系统,诸如但不限于Linux、UNIX、Windows和基于Windows服务器的操作系统中的任一个。本公开的各种实施例能够使用任何其它合适的操作系统。本公开的各种实施例利用允许操作系统(未示出)的组件的指令在位于信息处理系统内的任何处理器上执行的架构,比如面向对象的框架机制。本公开的各种实施例能够适配为与包括当前的模拟和/或数字技术或经由未来的网络机制的任何数据通信连接一起工作。
在此所使用的术语仅是为了描述特定实施例的目的,而不意图限制本发明。如这里所使用的,单数形式“一”、“一个”和“该”意图也包括复数形式,除非上下文另外明确指出。还将理解的是,当用在本说明书中时,术语“包括”和/或“包含”指定所述的特征、整体、步骤、操作、元件和/或组件的存在,但是不排除一个或多个其它特征、整体、步骤、操作、元件、组件和/或其组合的存在或增加。如这里所使用的,术语“另一个”被定义为至少第二个或者更多。如这里所使用的,术语“包含”和“具有”被定义为包含(即,开放式语言)。如这里所使用的,术语“耦合”被定义为“连接”,尽管不一定直接地并且不一定是机械地。“可通信地耦合”指组件的耦合使得这些组件能够例如通过有线、无线或其它通信介质相互通信。术语“可通信地耦合的”或“可通信地耦合”包括但不限于传送一个元件可以通过其指导或者控制另一个元件的电子控制信号。术语“被配置为”描述被适配、设置、布置、建造、组成、构建、设计或具有这些特征的任何组合以执行给定功能的硬件、软件或硬件和软件的组合。术语“适配为”描述能够或可能适应于、安排或者适合于执行给定功能的硬件、软件或硬件和软件的组合。
术语“控制器”、“计算机”、“处理器”、“服务器”、“客户端”、“计算机系统”、“计算系统”、“个人计算系统”、“处理系统”或“信息处理系统”描述适配为实现这里的一个或多个实施例的被适当地配置的处理系统的示例。任何适当地配置的处理系统类似地能够由这里的实施例使用,例如但不限于个人计算机、膝上型个人计算机(膝上型PC)、平板计算机、智能电话、移动电话、无线通信装置、个人数字助理、工作站等。处理系统可以包括一个或多个处理系统或处理器。处理系统可以以集中式的方式实现在一个处理系统中或者以其中不同的元件分布在几个互联的处理系统上的分布式方式实现。
如这里所使用的,术语“位置”意图宽泛地描述可以用于应用的执行计算的至少一部分,比如进程(或在一些情况中,至少一个线程)。如这里所使用的,术语“虚拟位置”意图宽泛地描述由执行程序参考的位置,其中计算正在其上执行的实际物理位置被从使用虚拟位置而不是实际物理位置的参考程序隐藏。虚拟位置被映射到物理位置。虚拟位置到物理位置的映射可以被更新以遮盖物理位置故障。
在下面的权利要求中的对应的结构、材料、动作和所有部件或步骤加功能元件的等效物意图包括用于结合具体要求保护的其它要求的元件进行功能的任何结构、材料或动作。为了说明和描述的目的,已经呈现了在此的描述,但是该描述不意图是穷举性的或者将本发明限制到所公开的形式。在不脱离所呈现或要求的示例的范围的情况下,许多修改和变化对本领域的普通技术人员来说将是显而易见的。选择并且描述所公开的实施例以便最好地解释实施例的原理以及实际应用,并且使得本领域其它普通技术人员能够理解具有适合于所构思的特定用途的各种修改的各种实施例。意图下面所附的权利要求覆盖在实施例的范围内的任意以及所有这样的应用、修改和变化。
Claims (20)
1.一种用于支持计算机程序的弹性执行的方法,包括以下步骤:
提供弹性贮存器,其中在故障的情况下能够访问在所述弹性贮存器中的信息;
周期性地对在所述弹性贮存器中的应用状态进行检查点处理;
提供弹性执行器,该弹性执行器包括通过捕获故障而执行应用的软件;
使用所述弹性执行器执行至少一个应用;以及
响应于所述弹性执行器检测到故障,从所述弹性贮存器中的检查点恢复应用状态信息,所述弹性执行器再继续所述至少一个应用的执行。
2.如权利要求1所述的方法,其中所述弹性执行器还包括:
接口,允许应用使用所述弹性执行器;
弹性运行方法,在检测并捕获位置故障作为异常时应用经由执行所述应用的所述接口调用该弹性运行方法,所述位置故障包括在所述应用中的计算的位置处的故障;以及
复原方法,当所述弹性运行方法捕获到由故障的位置导致的异常时被调用,其中所述复原方法从所述位置故障复原,从所述弹性贮存器中贮存的检查点将应用恢复到应用状态信息,并且用从所述弹性贮存器中贮存的检查点恢复的应用状态信息再继续所述应用的执行。
3.如权利要求1所述的方法,还包括:
提供允许程序明确地参考位置以与在所述位置的至少一个计算通信或者执行在所述位置的至少一个计算的接口,其中每个位置是执行计算的实体;
提供虚拟位置抽象层,其定义虚拟位置与物理位置之间的映射;
提供允许应用通过参考被映射到物理位置p1的虚拟位置p2而与在位置p1的至少一个计算通信或者执行在位置p1的至少一个计算的接口;以及
响应于物理位置p3故障,其中虚拟位置p4映射到物理位置p3,更新所述映射使得虚拟位置p4映射到物理位置p5,其中p5是有效的。
4.如权利要求3所述的方法,其中位置是进程以及至少一个线程中的至少一个。
5.如权利要求1所述的方法,其中所述弹性执行器包括在捕获异常时运行应用的运行方法。
6.如权利要求1所述的方法,其中响应于捕获至少一个异常,所述弹性执行器处理所述至少一个异常,从之前的检查点恢复所述应用的计算,并且再继续所述计算的执行。
7.如权利要求1所述的方法,其中所述弹性执行器调用专用代码以从之前的检查点恢复所述应用的计算。
8.如权利要求1所述的方法,其中所述弹性执行器包括用于弹性地执行迭代计算的方法。
9.如权利要求1所述的方法,其中所述弹性执行器通过调用用于执行所述应用的计算的迭代的专用方法和用于确定所述计算是否已经完成的专用方法的至少一个来处理迭代计算。
10.如权利要求1所述的方法,其中所述弹性执行器通过递归地捕获和处理发生的另外的异常来处理至少一个异常。
11.如权利要求1所述的方法,其中所述弹性执行器引用专用方法以在多个位置对数据进行检查点处理。
12.如权利要求1所述的方法,其中所述弹性执行器被作为对象提供给应用。
13.如权利要求12所述的方法,其中所述应用调用在所述对象上的方法以弹性地运行所述应用。
14.如权利要求12所述的方法,其中所述应用程序调用在所述对象上的方法以弹性地对所述应用进行检查点处理。
15.一种能够支持计算机程序的弹性执行的信息处理系统,所述信息处理系统包括:
存储器;
持久存储器,用于贮存数据和计算机指令;
弹性贮存器,通信地与所述存储器和所述持久存储器耦合,其中响应于检测到在所述信息处理系统中执行的应用的故障,能够访问贮存在所述弹性贮存器中的应用状态信息;
弹性执行器,通信地与所述存储器和所述持久存储器耦合,用于通过捕获在应用的计算的执行中的故障来执行所述计算;
处理器,通信地与所述弹性执行器、所述弹性贮存器、所述存储器、所述持久存储器耦合,并且其中所述处理器响应于执行计算机指令,进行包括以下步骤的操作:
周期性地对在所述弹性贮存器中的应用状态进行检查点处理;
在所述计算的执行中捕捉到故障时用所述弹性执行器执行应用的计算;
基于所述弹性执行器检测到所述应用的计算的执行中的故障,从所述弹性贮存器中的检查点恢复所述应用的应用状态信息;以及
用所述弹性执行器利用恢复的应用状态信息再继续所述应用的计算的执行。
16.如权利要求15所述的信息处理系统,其中所述弹性执行器包括:
接口,允许应用使用所述弹性执行器;
弹性运行方法,在检测并捕获位置故障作为异常时应用经由执行所述应用的所述接口调用该弹性运行方法;以及
复原方法,当所述弹性运行方法捕获到由故障的位置导致的异常时被调用,其中所述复原方法从所述位置故障复原,将应用恢复到之前的检查点,并且从恢复的检查点再继续所述应用的执行。
17.一种用于支持计算机程序的弹性执行的装置,所述装置包括:
用于提供弹性贮存器的模块,其中在故障的情况下能够访问在所述弹性贮存器中的信息;
用于周期性地对在所述弹性贮存器中的应用状态进行检查点处理的模块;
用于提供弹性执行器的模块,该弹性执行器包括通过捕获故障而执行应用的软件;
用于使用所述弹性执行器执行至少一个应用的模块;以及
用于响应于所述弹性执行器检测到故障、从贮存在所述弹性贮存器中的检查点将应用状态信息恢复到所述至少一个应用、所述弹性执行器用恢复的应用状态信息再继续所述至少一个应用的执行的模块。
18.如权利要求17所述的装置,其中所述弹性执行器包括:
接口,允许应用使用所述弹性执行器;
弹性运行方法,在检测并捕获位置故障作为异常时应用经由执行所述应用的所述接口调用该弹性运行方法;以及
复原方法,当所述弹性运行方法捕获到由故障的位置导致的异常时被调用,其中所述复原方法从所述位置故障复原,将应用恢复到之前的检查点,并且从恢复的检查点再继续所述应用的执行。
19.如权利要求17所述的装置,其中所述装置还包括:
用于提供允许程序明确地参考位置以与在所述位置的至少一个计算通信或者执行在所述位置的至少一个计算的接口的模块,其中每个位置包括执行计算的实体;
用于提供虚拟位置抽象层的模块,该虚拟位置抽象层定义虚拟位置与物理位置之间的映射;
用于提供允许应用通过参考被映射到物理位置p1的虚拟位置p2而与在位置p1的至少一个计算通信或者执行在位置p1的至少一个计算的接口的模块;以及
用于响应于物理位置p3故障、其中虚拟位置p4映射到物理位置p3、更新所述映射使得虚拟位置p4映射到物理位置p5的模块,其中p5是有效的。
20.如权利要求19所述的装置,其中位置是进程和至少一个线程的至少一个。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/657,132 | 2015-03-13 | ||
US14/657,132 US9652336B2 (en) | 2015-03-13 | 2015-03-13 | Resilient programming frameworks for handling failures in parallel programs |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105975360A true CN105975360A (zh) | 2016-09-28 |
CN105975360B CN105975360B (zh) | 2019-04-26 |
Family
ID=56886597
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610140638.4A Active CN105975360B (zh) | 2015-03-13 | 2016-03-11 | 用于处理并行程序中的故障的弹性编程框架 |
Country Status (2)
Country | Link |
---|---|
US (6) | US9652336B2 (zh) |
CN (1) | CN105975360B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108388748A (zh) * | 2018-03-12 | 2018-08-10 | 北京理工大学 | 一种爆轰数值仿真串行程序中断续算方法 |
CN108459922A (zh) * | 2018-03-12 | 2018-08-28 | 北京理工大学 | 一种爆轰数值仿真并行程序中断续算方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10489203B2 (en) * | 2015-04-03 | 2019-11-26 | Oracle International Corporation | System and method for using an in-memory data grid to improve performance of a process defined by a process execution language in a SOA middleware environment |
CN109792617B (zh) * | 2016-07-13 | 2021-02-23 | 华为技术有限公司 | 用于部署在平台上的应用程序的应用程序弹性系统及其方法 |
US11323379B2 (en) | 2018-10-05 | 2022-05-03 | International Business Machines Corporation | Adaptive monitoring of computing systems |
CN111049677B (zh) * | 2019-11-27 | 2021-11-23 | 网络通信与安全紫金山实验室 | 拟态交换机异构执行体的清洗恢复方法和装置 |
US20230236875A1 (en) * | 2022-01-26 | 2023-07-27 | Microsoft Technology Licensing, Llc | Protocol exception handling external to deterministic code |
KR20230131017A (ko) * | 2022-03-04 | 2023-09-12 | 삼성전자주식회사 | 가속기에 대해 온-디멘드 체크포인트를 수행하는 전자 장치 및 그 동작 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6718486B1 (en) * | 2000-01-26 | 2004-04-06 | David E. Lovejoy | Fault monitor for restarting failed instances of the fault monitor |
CN101377750A (zh) * | 2007-09-21 | 2009-03-04 | 中国科学院计算技术研究所 | 一种用于机群容错的系统和方法 |
US20090079686A1 (en) * | 2007-09-21 | 2009-03-26 | Herz William S | Output restoration with input selection |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3919274B2 (ja) | 1996-12-26 | 2007-05-23 | 株式会社東芝 | 状態記録再現機能を有する計算機システム及び状態記録再現プログラムを記録したコンピュータ読み取り可能な記録媒体 |
US6157922A (en) | 1997-10-24 | 2000-12-05 | Trilogy Development Group, Inc. | Method and apparatus for transparent backtracking |
US6266781B1 (en) * | 1998-07-20 | 2001-07-24 | Academia Sinica | Method and apparatus for providing failure detection and recovery with predetermined replication style for distributed applications in a network |
US7165186B1 (en) | 2003-10-07 | 2007-01-16 | Sun Microsystems, Inc. | Selective checkpointing mechanism for application components |
US7774590B2 (en) | 2006-03-23 | 2010-08-10 | Intel Corporation | Resiliently retaining state information of a many-core processor |
WO2008092162A2 (en) * | 2007-01-26 | 2008-07-31 | The Trustees Of Columbia University In The City Of New York | Systems, methods, and media for recovering an application from a fault or attack |
US7937695B2 (en) * | 2007-04-27 | 2011-05-03 | International Business Machines Corporation | Reducing number of exception checks |
US7895474B2 (en) | 2007-05-03 | 2011-02-22 | International Business Machines Corporation | Recovery and restart of a batch application |
US7924613B1 (en) | 2008-08-05 | 2011-04-12 | Anobit Technologies Ltd. | Data storage in analog memory cells with protection against programming interruption |
US8745442B1 (en) * | 2011-04-28 | 2014-06-03 | Open Invention Network, Llc | System and method for hybrid kernel- and user-space checkpointing |
US8041994B2 (en) | 2009-01-09 | 2011-10-18 | Alcatel Lucent | Asynchronous checkpointing with audits in high availability networks |
US20110047413A1 (en) | 2009-08-20 | 2011-02-24 | Mcgill Robert E | Methods and devices for detecting service failures and maintaining computing services using a resilient intelligent client computer |
US8943510B2 (en) | 2010-12-17 | 2015-01-27 | Microsoft Corporation | Mutual-exclusion algorithms resilient to transient memory faults |
US9135405B2 (en) * | 2011-05-26 | 2015-09-15 | Carnegie Mellon University | Automated exploit generation |
US10007734B2 (en) | 2011-11-01 | 2018-06-26 | Microsoft Technology Licensing, Llc | Real time document presentation data synchronization through generic service |
US8909987B2 (en) | 2012-04-27 | 2014-12-09 | Hewlett-Packard Development Company, L. P. | Recovery segments |
US9535804B2 (en) | 2012-05-21 | 2017-01-03 | Cray Inc. | Resiliency to memory failures in computer systems |
US20140059552A1 (en) | 2012-08-24 | 2014-02-27 | International Business Machines Corporation | Transparent efficiency for in-memory execution of map reduce job sequences |
US9635088B2 (en) | 2012-11-26 | 2017-04-25 | Accenture Global Services Limited | Method and system for managing user state for applications deployed on platform as a service (PaaS) clouds |
US9600365B2 (en) | 2013-04-16 | 2017-03-21 | Microsoft Technology Licensing, Llc | Local erasure codes for data storage |
CN103853634B (zh) | 2014-02-26 | 2017-02-01 | 北京优炫软件股份有限公司 | 一种容灾备份系统及方法 |
-
2015
- 2015-03-13 US US14/657,132 patent/US9652336B2/en active Active
- 2015-06-25 US US14/749,835 patent/US9652337B2/en active Active
-
2016
- 2016-03-11 CN CN201610140638.4A patent/CN105975360B/zh active Active
-
2017
- 2017-04-07 US US15/481,888 patent/US10296424B2/en active Active
- 2017-04-07 US US15/481,932 patent/US10275323B2/en active Active
-
2019
- 2019-04-18 US US16/387,793 patent/US10831616B2/en active Active
- 2019-04-23 US US16/391,704 patent/US10831617B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6718486B1 (en) * | 2000-01-26 | 2004-04-06 | David E. Lovejoy | Fault monitor for restarting failed instances of the fault monitor |
CN101377750A (zh) * | 2007-09-21 | 2009-03-04 | 中国科学院计算技术研究所 | 一种用于机群容错的系统和方法 |
US20090079686A1 (en) * | 2007-09-21 | 2009-03-26 | Herz William S | Output restoration with input selection |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108388748A (zh) * | 2018-03-12 | 2018-08-10 | 北京理工大学 | 一种爆轰数值仿真串行程序中断续算方法 |
CN108459922A (zh) * | 2018-03-12 | 2018-08-28 | 北京理工大学 | 一种爆轰数值仿真并行程序中断续算方法 |
Also Published As
Publication number | Publication date |
---|---|
US9652336B2 (en) | 2017-05-16 |
US20170212812A1 (en) | 2017-07-27 |
US10831616B2 (en) | 2020-11-10 |
US10296424B2 (en) | 2019-05-21 |
CN105975360B (zh) | 2019-04-26 |
US10275323B2 (en) | 2019-04-30 |
US20170212808A1 (en) | 2017-07-27 |
US9652337B2 (en) | 2017-05-16 |
US20190243730A1 (en) | 2019-08-08 |
US20160266982A1 (en) | 2016-09-15 |
US20160266983A1 (en) | 2016-09-15 |
US10831617B2 (en) | 2020-11-10 |
US20190251001A1 (en) | 2019-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105975360A (zh) | 用于处理并行程序中的故障的弹性编程框架 | |
US20190278671A1 (en) | Point-in-time copy restore | |
CN107122289B (zh) | 系统回归测试的方法、装置及系统 | |
US20170344433A1 (en) | Apparatus and method for data migration | |
CN104216793B (zh) | 应用程序备份、恢复的方法及设备 | |
US10346161B2 (en) | Automatic detection of potential merge errors | |
US10901863B2 (en) | Unified data layer backup system | |
US8145944B2 (en) | Business process error handling through process instance backup and recovery | |
US9274719B2 (en) | Snapshot management in hierarchical storage infrastructure | |
US9760449B2 (en) | Restoring a point-in-time copy | |
CN104346206B (zh) | 一种已卸载软件恢复安装的方法和系统 | |
CN108369503A (zh) | 对外部场可更换单元(fru)过程的自动系统响应 | |
CN105339925B (zh) | 用于被动监控虚拟服务器的方法和系统 | |
US12045173B2 (en) | Stale data recovery using virtual storage metadata | |
US10691349B2 (en) | Mitigating data loss | |
US9760450B2 (en) | Restoring a clone point-in-time copy | |
CN110058963B (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
CN104133742A (zh) | 一种数据保护的方法及装置 | |
CN104571943A (zh) | 控制非易失性数据存储子系统的方法和系统 | |
CN116680055A (zh) | 一种异步任务处理方法、装置、计算机设备及存储介质 | |
US20160364463A1 (en) | Ordering records for timed meta-data generation in a blocked record environment | |
GB2537038A (en) | Resilient programming frameworks for handling failures in parallel programs | |
CN111580953A (zh) | 调度仿真场景的制作方法及装置、存储介质及电子设备 | |
CN117083604A (zh) | 在保持记录不变性的同时记录对记录的改变 | |
CN110008114A (zh) | 配置信息维护方法、装置、设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |