用于处理并行程序中的故障的弹性编程框架的制作方法

文档序号:10612689阅读:188来源:国知局
用于处理并行程序中的故障的弹性编程框架的制作方法
【专利摘要】用于支持计算机程序的弹性执行的信息处理系统、计算机可读贮存介质和方法。方法提供弹性贮存器,其中在故障的情况下能够访问在所述弹性贮存器中的信息。该方法周期性地对在所述弹性贮存器中的应用状态进行检查点处理。弹性执行器包括通过捕获故障而执行应用的软件。该方法使用所述弹性执行器执行至少一个应用。响应于所述弹性执行器检测到故障,从所述弹性贮存器中的检验点恢复应用状态信息到所述至少一个应用,所述弹性执行器用恢复的应用状态信息再继续所述至少一个应用的执行。
【专利说明】
用于处理并行程序中的故障的弹性编程框架
技术领域
[0001] 本公开总体上涉及容错计算,并且更具体地涉及用于处理在执行并行计算机程序 中的故障的弹性计算机编程框架的方法和系统。
【背景技术】
[0002] 在执行计算机程序中的故障构成严重的问题。该问题混合在多处理器环境中,其 中单个处理器的故障可能引起计算失败,需要其从头开始运行。
[0003] 近年来,已经介绍了诸如映射归约(map reduce) (Hadoop是公知的实现方式, http://hadoop.apache·org/)、Spark(https://spark.apache·org/)和Pregel(Maiewicz 等人的"Pregel:A System for Large-Scale Graph Processing",SIGM0D论文集2010年, http: //kowshik · github · io/JPregel/pregel_paper · pdf)的框架,这提供了对故障的一些 程度的弹性(resilience)。这些之前的方法的主要缺点在于它们仅适用于遵循某些常规模 式的应用。存在许多不符合映射归约或Pregel范例的应用。
[0004] MPI (http: //www.mcs · anl · gov/research/projects/mpi/)经常被用于程序并行 计算系统。然而,虽然MPI提供了消息传送支持,但是其没有提供成熟的编程环境。而是,其 被设计为结合诸如C、C++、For tran、Java等的现有编程语言而使用。
[0005] 因此,存在对帮助程序员编写弹性程序的更普遍的框架的需求。

【发明内容】

[0006] 根据本公开的一个实施例,用于支持计算机程序的弹性执行的方法包括以下步 骤:提供弹性贮存器,其中在故障的情况下能够访问在所述弹性贮存器中的信息;周期性地 对在所述弹性贮存器中的应用状态进行检查点处理;提供弹性执行器,该弹性执行器包括 通过捕获故障而执行应用的软件;使用所述弹性执行器执行至少一个应用;以及响应于所 述弹性执行器检测到故障,从所述弹性贮存器中的检验点恢复应用状态信息,所述弹性执 行器再继续所述至少一个应用的执行。
[0007] 根据本公开的另一实施例,能够支持计算机程序的弹性执行的信息处理系统,所 述信息处理系统包括:存储器;持久存储器,用于贮存数据和计算机指令;弹性贮存器,通信 地与所述存储器和所述持久存储器耦合,其中在所述信息处理系统中执行的应用的故障的 情况下,能够访问贮存在所述弹性贮存器中的信息;弹性执行器,通信地与所述存储器和所 述持久存储器耦合,用于通过捕获在应用的计算的执行中的故障来执行所述计算;处理器, 通信地与所述弹性执行器、所述弹性贮存器、所述存储器、所述持久存储器耦合,并且其中 所述处理器响应于执行计算机指令,进行包括以下步骤的操作:周期性地对在所述弹性贮 存器中的应用状态进行检查点处理;在所述计算的执行中捕捉到故障时用所述弹性执行器 执行应用的计算;基于所述弹性执行器检测到所述应用的计算的执行中的故障,从所述弹 性贮存器中的检查点恢复所述应用的应用状态信息;以及用所述弹性执行器利用恢复的应 用状态信息再继续所述应用的计算的执行。
[0008] 又根据本公开的另一实施例,计算机可读贮存介质包括计算机指令,其响应于由 处理器执行,使得处理器进行用于支持计算机程序的弹性执行的操作,所述操作包括:提供 弹性贮存器,其中在故障的情况下能够访问在所述弹性贮存器中的信息;周期性地对在所 述弹性贮存器中的应用状态进行检查点处理;提供弹性执行器,该弹性执行器包括通过捕 获故障而执行应用的软件;使用所述弹性执行器执行至少一个应用;以及响应于所述弹性 执行器检测到故障,从所述弹性贮存器中的检验点恢复应用状态信息到至少一个应用,所 述弹性执行器利用恢复的应用状态信息再继续所述至少一个应用的执行。
【附图说明】
[0009] 附图用于进一步说明各种实施例并且解释根据本公开的所有各种原理和优点,附 图中相似的参考标号在各个视图中指代相同的或功能上类似的元件,并且与下面的具体实 施方式一起被并入说明书并且形成说明书的部分,其中:
[0010] 图1是例示根据本公开的其中实现计算机编程框架的信息处理系统的示例的框 图;
[0011 ]图2是例示根据本公开的各种示例的弹性计算(ResilientComputation)接口的示 例的程序列表;
[0012] 图3是例示根据本公开的各种示例的弹性迭代计算 (Res i 1 i ent 11 erat i veComputat i on)的不例的程序列表;
[0013] 图4和5构成例示根据本公开的各种示例的可以通信地与应用耦合的弹性执行器 类别(Res i 1 ientExecutor class)的示例的程序列表。
【具体实施方式】
[0014] 根据本公开的各种实施例,公开了提供用于程序员编写弹性程序的新的计算机编 程框架的系统和方法。诸如捕获和处理故障的低级别细节由特定软件处理。这减轻软件程 序员并且尤其是现代并行计算应用的程序员的重大编程负担。
[0015] 本公开的各种实施例可适用于包含状态机的软件应用的计算机编程框架,其中该 状态机具有可以被周期性地保存为贮存的检查点(checkpoint)的状态。在故障的情况下, 应用可以从自之前的贮存的检查点恢复(restore)的应用状态信息重新开始。如果应用可 以被适当地恢复而不参考任何保存的状态(例如,应用已经在持久贮存器中比如在盘上贮 存了还原(recovery)所需的所有状态信息),甚至更容易使用本公开的实施例来处理程序 弹性。
[0016] 根据各种实施例,编程框架提供允许应用实现弹性的软件。其极大地简化了编写 弹性程序的任务。
[0017] 本公开的各种实施例向应用程序提供以下特征的一个或多个:
[0018] 1)使用检测故障的位置(place)的异常处理来执行应用程序的能力。术语"位置" 指可以用于应用的执行计算的至少一部分,比如进程(或在一些情况中,一个或多个线程)。 位置可以包括执行计算的实体。
[0019] 2)在应用中可靠地对数据结构进行检查点处理使得在故障的情况下该数据结构 将被保存的能力。
[0020] 3)隐藏在其上执行计算的实际物理位置的虚拟位置。程序参考虚拟位置而不是物 理位置。那样,如果物理位置故障,则计算可以继续参考没有故障的虚拟位置。虚拟位置被 映射到物理位置。虚拟的到物理位置的映射可以被更新以遮盖物理位置故障。
[0021] 仅为了说明的目的,在这里使用X10编程语言"X10语言规格版本2.5",SaraSWat等 人,http: //x 10 · sourceforge · net/documentation/languagespec/xl〇-latest · pdf,来描 述本公开的各种非限制性示例实施例。关于X10的额外的信息可从http: //xl〇-lang. org/ 获得。
[0022] 本公开的实施例也可以被实现用于其它编程语言和编程环境。
[0023] 如将在下面讨论的弹性计算(R e s i 1 i e n t C 〇 m p u t a t i ο η ) /弹性执行器 (ResilientExecutor)框架允许X10程序被编写使得程序员不需要担心低级别的故障处理。 用于诸如捕获和处理无效(dead)位置异常(其是当一位置故障时由Χ10运行时间系统产生 的一种类型的异常)的处理故障的低级别的细节由弹性执行器类别(以及使用诸如虚拟位 置映射(VirtualPlaceMap)和弹性映射(Res i 1 i entMap)的类别)处理。
[0024] 根据各种实施例,其可以应用于具有可以被周期性地进行检查点处理的状态的应 用。在故障的情况下,应用从最后的一致(consistent)检查点的点重新开始。如果应用可以 适当地恢复而不需要任何被检查点处理的状态(例如,应用已经在持久贮存器中比如在盘 上贮存了还原所需的所有状态),甚至更容易使用该框架来处理弹性。
[0025]本示例框架利用以下类别:
[0026] 弹性执行器(ResilientExecutor):实现框架的主要类别。作为示例见图4和5。 [0027] 弹性计算(ResilientComputation):指定应用可以使用来实现框架的专用方法的 接口。作为示例见图2。
[0028] 弹性迭代计算(ResilientlterativeComputation):指定迭代应用可以使用来实 现框架的专用方法的接口。作为示例见图3。
[0029]虚拟位置映射(VirtualPlaceMap):实现虚拟位置的类别,其隐藏由应用使用的实 际物理位置使得应用不需要直接应对位置故障。虚拟位置映射的示例将在下面参考图3讨 论。
[0030]弹性映射(ResilientMap):提供在位置故障的情况下可访问的弹性贮存。
[0031 ] 无序的位置组(PlaceGroupUnordered):该类别实现位置组,其中该位置组中的次 序可能不同于位置的物理次序。这用于管理虚拟位置。
[0032] 根据本示例,为使用该框架,应用可以实现弹性计算接口(普遍适用的)或弹性迭 代计算接口(用于迭代计算)。存在在本公开的精神和范围内的多种其它接口。根据本示例, 在图2中示出了弹性计算接口,包括其几种方法。根据本示例,在图3中示出了弹性迭代计算 接口,包括其几种方法。根据本示例,在图4和5中示出了弹性执行器类别及其几种方法。
[0033] 根据本示例,本公开的框架可以与将在下面更加详细描述的信息处理系统一起使 用。
[0034]应用程序被实现为实现弹性计算接口的类别的实例(comp)。如果替代地使用弹性 迭代计算接口或其它接口,过程将是类似的。
[0035 ] comp创建用于该应用程序的新的弹性执行器对象,re sExe c。
[0036]引用(call)resExec ·runResiliently()以弹性地调用(invoke)在comp中的运行 方法。
[0037] 在comp中的运行方法周期性地调用resExec. checkpoint以对计算的状态进行检 查点处理。
[0038] 如果resExec.runResiliently遇到(例如,检测并捕获)异常(特别地,无效位置异 常),其通过调用comp.restore弹性地将计算的状态恢复到之前的检查点。在计算的状态被 恢复到之前的检查点之后,resExec.runResiliently通过弹性地调用在comp中的运行方法 来继续计算。
[0039]用于使用该框架的上述方法的主启用器(enabler)是使用虚拟位置。在计算中虚 拟位置数量保持恒定,使得专用代码不需要由于位置故障而被修改。弹性执行器类别保持 虚拟位置映射并且用有效的(live)物理位置替代无效的物理位置以在计算中保持虚拟位 置数量一致。应用被编写为在虚拟位置上而不是物理位置上迭代。
[0040] 弹性执行器类别负责在位置故障经由异常处理被自动地检测和捕获、并且特别是 无效位置异常被适当地应对的环境之下运行应用程序。该类别维持虚拟位置映射以隐藏位 置故障可能已经产生、这使得必需用其它物理位置替换一个或多个物理位置的事实。该类 别还提供用于从故障还原的弹性环境。下面是弹性框架的四个特征的概要:
[0041] 1)提供代码以检测故障并且从故障还原。用户应用代码不需要担心在正常处理或 还原期间的低级别故障检测。异常处理被构造为提供用于正常执行、检查点处理和从故障 还原的弹性。
[0042] 2)提供支持以有效地对应用进行检查点处理。弹性映射类别是提供该支持的主要 特征。
[0043] 3)应用参考(refer to)虚拟位置而不是实际的物理位置。
[0044] 4)提供明确定义的接口的面向对象框架。弹性执行器可以被定制为处理不同类型 的故障和不同的故障处理需求。
[0045] 弹性框架的两个特征是:1)其处理故障/还原细节使得程序员不需要应对这些细 节,以及2)其支持对应用计算的有效的检查点处理。此弹性框架非常通用并且支持比诸如 Hadoop、Spark和Pregel的框架宽得多的范围的应用的有效处理。
[0046] 虚拟位置
[0047] 虚拟位置可以用于遮盖来自程序的位置故障。程序参考虚拟位置而不是在其上执 行计算的物理位置。虚拟位置可以在程序的执行期间保持恒定。基本的物理位置可能改变。 例如,如果虚拟位置VI被映射到物理位置pl并且pl故障,则VI可以被映射到另外的物理位 置P2。在pi的故障之前以及在pi的故障之后该程序都可以继续参考虚拟位置VI。那样,应用 程序员不需要编写特殊代码以应对在程序中的位置可能由于故障而改变的事实。
[0048]存在系统可以获得另一位置p2以替代故障的位置pl的多种方式。一个选择是具有 在计算的开始时运行的多个备用位置。每当位置故障时,故障的位置由备用的位置替代。该 方法引起备用位置的开销。此外,如果系统用完备用位置则会产生问题。
[0049]另一方法是在位置故障时启动新的位置以替代故障的位置。这避免了故障位置的 缺点。但是这在启动新的位置时可能有一些开销/延迟。
[0050] 虚拟位置由类别VirtualPlaceMap (虚拟位置映射)实现,该类别VirtualPlaceMap 包括应用程序可以调用以使用的以下方法:
[0052]
[0053] 弹性执行器实现方式
[0054] 根据各种实施例,弹性执行器类别使用以下方法弹性地运行程序。弹性执行器包 括通过捕获故障而执行应用的软件。弹性执行器还可以通过递归地捕获和处理发生的额外 的异常来处理至少一个异常。在下面将讨论如何可以使用X10编程语言来实现弹性执行器 类别。还可能使用其它编程语言实现本发明。注意,在下面的方法中,"计算"和"迭代计算" 是表示应用的对象。根据各种实施例,框架实现方式可以具有更多的对象以表示在本公开 的精神和范围内的额外类型的应用。
[0056
[0057]如果使用额外类型的计算,可能具有在本发明的精神和范围内的额外的运行方 法。
[0058] 如果运行方法遇到故障,它们试图(例如,调用还原方法)经由以下来弹性地恢复 计算的状态:
[0059]
[0060] 弹性地恢复(restoreResiliently)方法调用专用方法以恢复应用的计算的状态。 其可以从贮存在弹性贮存器中的检查点恢复应用状态信息。下面是用于恢复的代码。注意, "计算"和"迭代计算"是表示应用的对象。具体实施例可以具有更多的对象以表示在本公开 的精神和范围内的额外类型的应用。
[0061] J
[0062] 适当地捕获并处理异常是至关重要的。这通过以下方法实现,该方法的目标在于 识别无效位置异常。无效位置异常是当位置故障时产生的异常。将能够在本发明的精神和 范围内扩展该方法以同样处理其它类型的异常。
[0063]
[0064]
[0065] 当通过捕获和识别无效位置异常而检测到无效位置时,这些无效位置通过以下方 法处理。关键点在于应用程序正使用永远不会无效的虚拟位置参考位置。虚拟位置被映射 到物理位置。在物理位置无效之后,有效的物理位置被映射到之前对应于无效物理位置的 虚拟位置。
[0066]
[0067] 之前示出的弹性地恢复(restoreResiliently)方法引用resumeExecution()以在 故障已经被适当地处理之后继续应用程序的执行。下面是用于resumeExecution的代码:
[0068]
[0069] 注意,在本公开的精神和范围内,扩展恢复执行(resumeExecution)以处理除了 GENERAL(普通)和ITERATIVE(迭代)以外的其它类型的计算是简单明了的。
[0070] 本公开的主要方面是检查点处理。弹性执行器提供以下方法以用于由应用程序调 用的检查点处理。
[0071]

[0074] 根据使用X10实现方式的本示例,特殊位置、位置0被假设为从不故障。因此,本公 开的实施例可以安全地在位置〇对至少一些应用状态信息进行检查点处理。这是具有 checkpointAtPlaceOO方法的一个原因。如果系统不能假设存在从不故障的位置0,则应用 将不使用 checkpointAtPlaceO()方法。
[0075] 当采用新的检查点c 1时,本示例维持贮存在弹性贮存器中的之前的检查点C〇。那 样,如果在cl正被计算时产生故障,则系统将仍具有c〇以恢复状态到执行的应用。在cl已经 完成计算之后,删除c0是安全的。根据本示例,弹性执行器具有就在cl已经完成计算之后删 除旧的检查点c0的以下方法:
[0076]
[0078] 应用具有定义deleteAtPlaceO方法的选择,该deleteAtPlaceO方法立刻删除之 前的检查点。如果应用选择不这样做,则应用仍将继续弹性地并且正确地运行。唯一的缺点 可能是旧的检查点c〇将继续存在贮存在弹性贮存器中(而不是被立即删除),直到取下一个 检查点并且覆盖C0为止。
[0079] 应用使用弹性执行器类别的示例
[0080]参考图1到7,下面将讨论可以使用弹性执行器类别弹性地执行应用的信息处理系 统100的示例。仅为了说明的目的,而不是对本公开的任何限制,将由信息处理系统100执行 的示例应用是被实现为弹性迭代计算(Resilient IterativeComputat ion)的分子力学仿 真。
[0081 ]应用创建弹性执行器类别的实例:
[0082] resExec = new ResilientExecutor(this);
[0083] 该弹性执行器然后经由以下被调用:
[0084] resExec.iterateResiliently();
[0085] 应用实现弹性执行器实例使用之前所述的异常处理而弹性地执行的多个方法。这 些方法包括:
[0087]下面的代码对应用进行检查点处理并且由弹性执行器实例调用:
[0088]
[0089]
[0090] 注意,为了减少检查点开销,不是必需在每个迭代之后调用检查点。如果在每个迭 代之后调用检查点,则检查点处理开销可能是高的。优点是复原时间将是短的。如果较不频 繁地调用检查点处理(即,ITERATI0NS_PER_BACKUP是大于1的整数),这将减少检查点处理 开销。缺点是复原时间将更长。因此在检查点处理开销和复原时间存在折衷。频繁的检查点 与较不频繁的检查点相比增加了检查点处理开销但是减少了在故障之后的复原时间。
[0091] 应用实现以下由弹性执行器实例调用的专用检查点方法:
[0092]
[0093] 应用实现以下由弹性执行器实例调用以删除废弃的检查点的专用方法。应注意的 是,该方法是可选的。如果其没有实现,程序将继续正确地并弹性地操作。实现该方法的优 点在于减少了检查点消耗的空间开销。
[0094]
[0095] 在故障的情况下,以下专用方法由弹性执行器实例调用以从之前的检查点恢复计 算的状态:
[0096]
[0097] 虚拟位置也是该应用的关键元件。应用在计算中参考虚拟位置而不是物理位置。 这些虚拟位置不改变,即使一个或多个物理位置在计算的进行中无效。
[0098] 根据本示例,信息处理系统100(见图1)包括至少一个处理器102,该处理器102与 存储器104和持久非易失性存储器106可通信地耦合。持久存储器106可以贮存计算机指令 107、数据、配置参数和由处理器102使用的其它信息。贮存在持久存储器106中的所有这些 贮存的分量可以单独地或者以任意组合贮存在主存储器104和处理器缓存存储器102中。根 据本示例,信息处理系统100中的总线通信架构108促进可通信地耦合信息处理系统100的 各种元件。网络接口装置124与处理器102可通信地耦合并且提供通信接口以与一个或多个 外部网络126通信。
[0099]虽然图1是本发明的一个可能的实施例,但是许多其它实施例是可能的。本发明与 具有多个处理器的系统具有特别的相关性。因此,对本发明的之前的描述更为一般化并且 适用于比图1中所描述的多得多的种类的系统。
[0100] 指令107可以包括已经在上面更加详细地讨论的以下中的一个或多个:弹性执行 器类别130、弹性计算132、弹性迭代计算134、虚拟位置映射136、弹性映射138、无序的位置 组140、ResExec方法144以及其它应用方法142。
[0101] 在持久存储器106中,存在弹性映射贮存区域118。计算机贮存装置120与处理器 102可通信地耦合。计算机贮存装置120可以与计算机可读贮存介质122通信地耦合。计算机 可读贮存介质122可以贮存指令107的至少一部分。
[0102] 用户接口 110可通信地与处理器102耦合。用户接口 110包括用户输出接口 112和用 户输入接口 114。根据本示例,用户输出接口 112包括显示器、以及诸如一个或多个扬声器的 音频输出接口以及诸如视觉指示器、听觉指示器和触觉指示器的各种指示器。根据本示例, 用户输入接口 114包括键盘、鼠标或其它光标导航模块,比如触摸屏、触摸板、笔输入接口以 及用于输入诸如用户语音的听觉信号、可以由处理器102识别的数据和命令的麦克风。
[0103] 图2示出包括几种方法的示例弹性计算接口 132。运行的方法运行计算并且另外周 期性地创建应用计算的状态的检查点。如果在执行该应用的计算的一个或多个位置中存在 故障,则可以调用恢复方法以将应用计算的状态恢复到在弹性映射贮存器118中贮存的最 后的检查点。检查点数据结构可以保存在位置〇处。此外,在特定位置处的特定检查点数据 结构可以被检查点处理到弹性映射贮存器118。在应用计算的状态的新的检查点被保存到 弹性映射贮存器118之后,可选地,贮存在弹性映射贮存器118中的先前的检查点可以从弹 性贮存器删除。这通过从弹性映射贮存器118删除过时的和不必要的应用状态信息而优化 了空间使用。
[0104] 图3示出包括几种方法的示例弹性迭代计算接口 134。该步骤方法被用于将计算的 状态前进(advance)-个步骤。notFinished (未完成的)方法指示计算是否应该继续执行。 其通常在迭代计算的每个步骤之后由弹性框架调用。恢复方法在检测到故障之后将应用计 算的状态恢复到最后贮存的检查点。可以由弹性框架调用方法deleteAtPlace(在位置处删 除)以从弹性映射贮存器118删除之前贮存的检查点。该方法通过从弹性映射贮存器118删 除过时的和不必要的应用状态信息而优化了空间使用。
[0105] 参考图4和5,弹性执行器类别130包括可以由应用调用的几种方法。弹性计算创建 用于应用的计算的新的实例。弹性迭代计算创建用于该应用的迭代计算的新的实例。
[0106] RunResiliently(弹性地运行)方法调用专用运行方法以弹性地执行应用的一个 或多个计算。弹性地运行方法可以调用从贮存在弹性映射贮存器118中的之前的检查点恢 复应用状态信息的专用恢复方法。
[0107] 检查点方法将专用数据存在弹性映射存器118中。numberOfCheckpoints(检 查点数量)方法提供目前为止完成的检查点的总数。可以调用关键方法以计算将被用于检 查点操作的对象的关键值。这允许应用程序使用弹性映射接口来对数据进行检查点处理而 不需要手动计算关键值。getVirtualPlaceMap (得到虚拟位置映射)方法返回与应用的计算 对应的虚拟位置映射。该方法允许应用使用虚拟位置。
[0108] 根据本公开的弹性框架的各个方面
[0109] 1)使用弹性贮存用于检查点处理,以及有效和易于使用的检查点处理技术。
[0110] 2)使用虚拟位置遮盖无效位置。
[0111] 3)在执行期间捕获相关的异常并且处理故障的有效方式、在故障之后的恢复阶段 和在弹性框架中的异常-处理方法。
[0112] 4)面向对象的框架和API以使得该方法易于使用。
[0113]本公开已经以示例的方式例示了新颖的信息处理系统和新颖的方法,其为程序员 编写弹性程序提供新的计算机编程框架。诸如捕获和处理故障的低级别细节由特殊软件处 理。这减轻了软件程序员、尤其是现代并行计算应用的程序员的严重的编程负担。
[0114] 非限制性示例
[0115] 如本领域普通技术人员将理解的,本公开的方面可以实现为系统、方法或计算机 程序产品。相应地,本公开的方面可以采取完全硬件实施例、完全软件实施例(包括固件、常 驻软件、微代码等)或者组合了软件和硬件方面的实施例的形式,可以在这里将它们统称为 "电路"、"模块"或"系统"。
[0116] 本发明的多个实施例可以是系统、方法和/或计算机程序产品。计算机程序产品可 以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读 程序指令。
[0117] 计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形 设备。计算机可读存储介质例如可以是一一但不限于一一电存储设备、磁存储设备、光存储 设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的 更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存 储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式 压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上 存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算 机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通 过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输 的电信号。
[0118] 这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/ 处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外 部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关 计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计 算机可读程序指令,并转发所述计算机可读程序指令,以供存储在各个计算/处理设备中的 计算机可读存储介质中。
[0119] 用于执行本发明操作的计算机程序指令可以是汇编指令、指令集框架(ISA)指令、 机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的 任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言一诸如Java、 Smalltalk、C++等,以及常规的过程式编程语言一诸如"C"语言或类似的编程语言。计算机 可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独 立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机 或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包 括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利 用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令 的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可 编程逻辑阵列(PLA),所述电子电路可以执行计算机可读程序指令,从而实现本发明的各个 方面。
[0120] 这里参照根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图 和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图 和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0121] 这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据 处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据 处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功 能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指 令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的 计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中 规定的功能/动作的各个方面的指令。
[0122] 也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它 设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产 生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的 指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0123] 附图中的流程图和框图示出了根据本发明的多个实施例的系统、方法和计算机程 序产品的可能实现的体系框架、功能和操作。在这点上,流程图或框图中的每个方框可以代 表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用 于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也 可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执 行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或 流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动 作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0124] 虽然计算机可读贮存介质在示例实施例中被示出为单个介质,术语"计算机可读 贮存介质"应被取为包括贮存一个或多个指令集的单个介质或多个介质(例如,集中式的或 者分布式的数据库和/或相关联的缓存和服务器)。术语"计算机-可读贮存介质"应被认为 包括能够贮存或者编码指令集的任何非瞬时介质,该指令集用于由机器执行并且使得机器 进行公开主题的方法的任何一个或多个。
[0125] 术语"计算机-可读贮存介质"应相应地被认为包括但不限于:固态存储器一一诸 如存储卡或容纳一个或多个只读(非易失性)存储器的其它封装,随机存取存储器或其它可 重写(易失性)存储器,磁光或光介质一一诸如磁盘或磁带,或可以被用于贮存信息的其它 有形介质。相应地,本公开被认为包括如这里所列出的、在其中贮存这里的软件实现方式的 计算机-可读贮存介质的任何一个或多个,包括领域内认可的等效物以及后续媒介。
[0126] 尽管本说明书可能参考特定标准和协议描述实现在实施例中的组件和功能,但是 本公开不限于这样的标准和协议。每个标准表示现有技术的示例。这样的标准不时地被具 备基本上相同功能的更快速或者更有效的等效物所取代。
[0127] 对这里所述的示例的说明意图提供对各种实施例的结构的一般理解,并且它们不 意图作为可能使用在此描述的结构的设备和系统的所有元件和特征的完整描述。当回顾以 上描述时,许多其它实施例对本领域技术人员来说将是显而易见的。可以利用并且从其得 出其它实施例,使得可以在不脱离本公开的范围的情况下,做出结构上和逻辑上的替换和 改变。附图也仅是表示性的并且可能未按比例绘制。其某些部分可能被夸大,而其它部分可 能被缩小。相应地,说明书和附图将被认为是示意性的而不是限制性的含义。
[0128] 尽管已经在此例示和描述了特定实施例,应理解的是,计算以实现相同目的的任 何布置可以替换示出的特定实施例。这里的示例意图覆盖各种实施例的任何以及所有的适 应或变型。在此构思以上实施例的组合以及未在这里特别描述的其它实施例。
[0129] 应理解,提供摘要,理解为不意图用于解释或限制权利要求的范围或含义。此外, 在前述的【具体实施方式】中,各种特征在单个示例实施例中被分组在一起用于使本公开连贯 的目的。本公开的该方法不应被解释为反映了所要求的实施例需要比在每个权利要求中明 确记述的更多的特征的意图。而是,如下面的权利要求所反映的,发明的主题在于少于单个 公开的实施例的所有特征。因此以下的权利要求据此被并入【具体实施方式】中,每个权利要 求本身作为独立要求保护的主题。
[0130] 尽管仅示出了一个处理器102用于信息处理系统100,但是具有多个CPU或处理器 的信息处理系统也可以同样有效使用。本公开的各种实施例还可以并入接口,该接口的每 一个包括被用于从处理器102分担处理的单独的、完全编程的微处理器。包含在主存储器中 用于信息处理系统100的操作系统(未示出)可以是合适的多任务和/或多处理操作系统,诸 如但不限于Linux、UNIX、Windows和基于Windows服务器的操作系统中的任一个。本公开的 各种实施例能够使用任何其它合适的操作系统。本公开的各种实施例利用允许操作系统 (未示出)的组件的指令在位于信息处理系统内的任何处理器上执行的架构,比如面向对象 的框架机制。本公开的各种实施例能够适配为与包括当前的模拟和/或数字技术或经由未 来的网络机制的任何数据通信连接一起工作。
[0131]在此所使用的术语仅是为了描述特定实施例的目的,而不意图限制本发明。如这 里所使用的,单数形式"一"、"一个"和"该"意图也包括复数形式,除非上下文另外明确指 出。还将理解的是,当用在本说明书中时,术语"包括"和/或"包含"指定所述的特征、整体、 步骤、操作、元件和/或组件的存在,但是不排除一个或多个其它特征、整体、步骤、操作、元 件、组件和/或其组合的存在或增加。如这里所使用的,术语"另一个"被定义为至少第二个 或者更多。如这里所使用的,术语"包含"和"具有"被定义为包含(即,开放式语言)。如这里 所使用的,术语"耦合"被定义为"连接",尽管不一定直接地并且不一定是机械地。"可通信 地耦合"指组件的耦合使得这些组件能够例如通过有线、无线或其它通信介质相互通信。术 语"可通信地耦合的"或"可通信地耦合"包括但不限于传送一个元件可以通过其指导或者 控制另一个元件的电子控制信号。术语"被配置为"描述被适配、设置、布置、建造、组成、构 建、设计或具有这些特征的任何组合以执行给定功能的硬件、软件或硬件和软件的组合。术 语"适配为"描述能够或可能适应于、安排或者适合于执行给定功能的硬件、软件或硬件和 软件的组合。
[0132] 术语"控制器"、"计算机"、"处理器"、"服务器"、"客户端"、"计算机系统"、"计算系 统"、"个人计算系统"、"处理系统"或"信息处理系统"描述适配为实现这里的一个或多个实 施例的被适当地配置的处理系统的示例。任何适当地配置的处理系统类似地能够由这里的 实施例使用,例如但不限于个人计算机、膝上型个人计算机(膝上型PC)、平板计算机、智能 电话、移动电话、无线通信装置、个人数字助理、工作站等。处理系统可以包括一个或多个处 理系统或处理器。处理系统可以以集中式的方式实现在一个处理系统中或者以其中不同的 元件分布在几个互联的处理系统上的分布式方式实现。
[0133] 如这里所使用的,术语"位置"意图宽泛地描述可以用于应用的执行计算的至少一 部分,比如进程(或在一些情况中,至少一个线程)。如这里所使用的,术语"虚拟位置"意图 宽泛地描述由执行程序参考的位置,其中计算正在其上执行的实际物理位置被从使用虚拟 位置而不是实际物理位置的参考程序隐藏。虚拟位置被映射到物理位置。虚拟位置到物理 位置的映射可以被更新以遮盖物理位置故障。
[0134] 在下面的权利要求中的对应的结构、材料、动作和所有部件或步骤加功能元件的 等效物意图包括用于结合具体要求保护的其它要求的元件进行功能的任何结构、材料或动 作。为了说明和描述的目的,已经呈现了在此的描述,但是该描述不意图是穷举性的或者将 本发明限制到所公开的形式。在不脱离所呈现或要求的示例的范围的情况下,许多修改和 变化对本领域的普通技术人员来说将是显而易见的。选择并且描述所公开的实施例以便最 好地解释实施例的原理以及实际应用,并且使得本领域其它普通技术人员能够理解具有适 合于所构思的特定用途的各种修改的各种实施例。意图下面所附的权利要求覆盖在实施例 的范围内的任意以及所有这样的应用、修改和变化。
【主权项】
1. 一种用于支持计算机程序的弹性执行的方法,包括以下步骤: 提供弹性贮存器,其中在故障的情况下能够访问在所述弹性贮存器中的信息; 周期性地对在所述弹性贮存器中的应用状态进行检查点处理; 提供弹性执行器,该弹性执行器包括通过捕获故障而执行应用的软件; 使用所述弹性执行器执行至少一个应用;以及 响应于所述弹性执行器检测到故障,从所述弹性贮存器中的检查点恢复应用状态信 息,所述弹性执行器再继续所述至少一个应用的执行。2. 如权利要求1所述的方法,其中所述弹性执行器还包括: 接口,允许应用使用所述弹性执行器; 弹性运行方法,在检测并捕获位置故障作为异常时应用经由执行所述应用的所述接口 调用该弹性运行方法,所述位置故障包括在所述应用中的计算的位置处的故障;以及 复原方法,当所述弹性运行方法捕获到由故障的位置导致的异常时被调用,其中所述 复原方法从所述位置故障复原,从所述弹性贮存器中贮存的检查点将应用恢复到应用状态 信息,并且用从所述弹性贮存器中贮存的检查点恢复的应用状态信息再继续所述应用的执 行。3. 如权利要求1所述的方法,还包括: 提供允许程序明确地参考位置以与在所述位置的至少一个计算通信或者执行在所述 位置的至少一个计算的接口,其中每个位置是执行计算的实体; 提供虚拟位置抽象层,其定义虚拟位置与物理位置之间的映射; 提供允许应用通过参考被映射到物理位置Pi的虚拟位置P2而与在位置pi的至少一个 计算通信或者执行在位置Pi的至少一个计算的接口;以及 响应于物理位置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所述的装置,其中所述装置还包括: 用于提供允许程序明确地参考位置以与在所述位置的至少一个计算通信或者执行在 所述位置的至少一个计算的接口的模块,其中每个位置包括执行计算的实体; 用于提供虚拟位置抽象层的模块,该虚拟位置抽象层定义虚拟位置与物理位置之间的 映射; 用于提供允许应用通过参考被映射到物理位置Pi的虚拟位置P2而与在位置pi的至少 一个计算通信或者执行在位置Pi的至少一个计算的接口的模块;以及 用于响应于物理位置P3故障、其中虚拟位置p4映射到物理位置p3、更新所述映射使得 虚拟位置p4映射到物理位置p5的模块,其中p5是有效的。20. 如权利要求19所述的装置,其中位置是进程和至少一个线程的至少一个。
【文档编号】G06F9/46GK105975360SQ201610140638
【公开日】2016年9月28日
【申请日】2016年3月11日
【发明人】A.延加, J.J.米索普
【申请人】国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1