透明应用检查点将如何影响开发者?

日期: 2016-12-21 作者:Fred Churchville翻译:杨华军 来源:TechTarget中国 英文

长时间运行的程序面临着大量导致失效的风险。尤其是如果是依赖多台计算机的大规模程序的话就更加容易,任何一台计算机都有可能在任何时间崩溃。为了对抗这些失败的后果,计算机专家一直在致力于一种名为应用检查点的技术。 检车点的目标是保存应用状态以便能够马上返回,即便应用重启或者崩溃。

不过尽管这个想法看似足够简单,但是应用检查点有很多潜在影响导致在现实场景下实现起来比较棘手。 本问答录为上下两部分文章的上篇,聚焦于与东北大学(波士顿)计算机与信息科学学院教授Gene Cooperman的对话。他是在全球最大的超级计算机之一Stampede执行透明检查点的团队主要成员之一。在这次对话中,Cooperman谈……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

长时间运行的程序面临着大量导致失效的风险。尤其是如果是依赖多台计算机的大规模程序的话就更加容易,任何一台计算机都有可能在任何时间崩溃。为了对抗这些失败的后果,计算机专家一直在致力于一种名为应用检查点的技术。

检车点的目标是保存应用状态以便能够马上返回,即便应用重启或者崩溃。不过尽管这个想法看似足够简单,但是应用检查点有很多潜在影响导致在现实场景下实现起来比较棘手。

本问答录为上下两部分文章的上篇,聚焦于与东北大学(波士顿)计算机与信息科学学院教授Gene Cooperman的对话。他是在全球最大的超级计算机之一Stampede执行透明检查点的团队主要成员之一。在这次对话中,Cooperman谈到了检查点面临的一些最大挑战,检查点透明化和应用于数据日益多样化的潜在影响。在下篇中,他讨论了这技术的潜在安全效应。

应用检查点的最大挑战是什么?

Gene Cooperman:如果程序很大很复杂,要想找出代码状态所有不同的部分是非常耗时的,而且很难很容易出错。每次程序更新时,你都要回去找出哪个系统或者状态应该保存起来。所以,我们的做法就是透明检查点:我们基本上从外部将程序的一切都复制起来,所以程序员就不需要在代码中找出哪些地方有状态相关的东西。我们不管要不要都把所有东西复制起来。所以,基本上,最简单的理解可以这么看,就是可以看作有个程序驻留在计算机的内存,在RAM里面,我们只是把内存的每一个字节都复制下来,全部存到磁盘上。这样就变成了检查点镜像文件。

在大型的超级计算机上这一点会变得更加困难。在过去,做计算机网络的人往往会使用类似以太网那样的东西。上面要跑一个叫做PCP(端口控制协议)的协议,这个东西相对简单:只是个单通道;你把信息按照升序发送出去就行了。但在超计算机上就不能这么干了……它们需要更快的网络,所以他们使用类似直接写信息进其他计算机内存这样的技巧。

那么,现在事情就没那么简单了,你不能说“停止这两台计算机之间的会话,但是要记住它们谈到了哪里。”我们已经开发了一些技术来处理这一透明性问题,手段是在非常靠近操作系统的底层来做。一开始,我们在传统的多核结构,一般相当于16台计算机的设备上测试,结果不错。但作为这一实验的一部分,我们希望测试尽可能大规模的计算机集群,因为当你试图扩充规模时会遇到新的不同的现象,问题开始变得困难许多。

应用检查点的透明性方面为什么重要?

Cooperman:检查点还有一个类型叫做应用相关检查点。(传统上)需要保存什么、不需要保存什么是编写程序的人的责任。在今天,他们仍然进行以应用相关的方式进行检查点检查,也就意味着编写新程序的每个人都得写一个新的检查点例程。

如果我们能证明这种技术有用而且工作的很高的话,那么当大家在未来编写大型程序时,他们只用写程序就可以了。而且通过利用我们的检查点程序他们自动就可以从检查点受益——他们不需要自己编写特殊的检查点例程。所以,这就是让大家从应用相关办法切换到只用我们的透明办法的好处。

这可以延伸到所有的移动计算上面吗?

Cooperman:是的。目前我们主要支持Linux。我们在物联网上面也做了一些事情。这些都是非常小的设备,它们使用最常见的操作系统大概就是Linux了。我们也证明了在那上面也是可以工作的。

我们最近有篇被采用的论文展示了在Raspberry Pi上也可以有检查点。现在这个程序就要小得多了,因为那针对的是一个嵌入式系统。在这个体制下这一点是非常重要的,因为嵌入式设备也许要监控东西,所以在很长一段时间内它都不能及时停下来供检查点检查的。而通过证明它可以在0.2秒钟做完间检查点准备,我们证明了它在这种体制下是很实用的。

你认为所有东西我们都可以做检查点吗?

Cooperman:如果开发替代性技术的人想跟我们紧密合作的话,那么我们绝对可以做一切东西的检查点。但这与透明化检查点是背道而驰的。透明化检查点说我们可以坐在外面就可以搞定,不管他们怎么改变里面。所以我在想可能我们不得不在这两种极端的未来之间做出一些妥协。比方说这些新的硬件技术的开发者之间必须进行一些协作,我们做的工作也是这样。但希望我们对它们的硬件只需要提出很小的改动要求,让它们代价很小,同时让我们做检查点很容易。那么,如果我们能进行这样的协作的话,回答是肯定的。

透明检查点应用到Stampede上

为了看看透明坚持带你在超级计算机上面工作的有效性,波士顿东北大学的一致团队得到了允许,可以在超级计算机Stampede上面使用这项技术。团队成员展示了透明检查点技术如何可以在补习生速度或性能的情况下,有效地在大规模计算环境下实现。

“我们得到许可,可以使用整整1/3的超级计算机资源。而且可以在11分钟内保存38T的内容,”东北大学计算机与信息科学学员的Gene Cooperman教授说:“我们能够做到这个部分是因为他们有一套集群文件系统,这套系统时并行使用磁盘的,所以可以加速运行。这样你一次不是写一个磁盘,而是同时写很多个磁盘。”

不过尽管这种做法提供了巨大的机会,但也带来了若干独特挑战。问题之一是Stampede采用了一种新型的网络:InifiniBand UD。Cooperman的团队过去是在InfiniBand RC上进行测试的。而UD,或者叫不可靠数据报协议允许两台计算机之间的消息在某一台意外丢失的情况下重新发送。这意味着Cooperman必须扩展他们对计算机之间会话进行检查点保存的方法,以便使得UD和RC型的通信都可以支持。

“因为我们希望以透明模式工作,所以我们不应该假定两台计算机在处理会话方面有任何的特殊之处,” Cooperman说:“在一个程序上,它们可能会以特定次序发送信息。但是我们不应该有任何那方面的假设,因为我们是在透明的模式下进行的,因此,它应该对任何这类的程序都应该有效,而不管他们采用的内部协议或者内部算法是什么。”

相关推荐