BOINC 开发文档

冗余和错误


最后更新:2005年2月1日凌晨5:57(太平洋时间)


计算结果是对计算实例的抽象,可能还没有被完成。一般来说,BOINC 服务器会发送“计算结果”到客户端,客户端会完成计算然后向服务器回复。但计算结果仍有很多可能性:

BOINC 提供了一种冗余计算的形式,每次计算都在多个客户端上被执行,计算结果将进行比较,只有“一致”的计算结果才会被接受。有时候必须创建并发送新的计算结果。

BOINC 管理了大多数底层的细节;然而仍有两处必须由计算程序开发人员来决定:


在随后的例子中,项目创建了一个任务包,其相关属性分别是:
min_quorum = 2
target_nresults = 3
max_delay = 10

BOINC 会自动创建三个计算结果,分别在不同的时间被发送。在时间为 8 时,两个成功的计算结果已经返回,验证器被调用。它确认了结果的一致,因此任务包将被回收。在时间为 10 时,第三个计算结果返回;再次执行验证过程,这次是检查第三个计算结果是否可以得到积分。

time        0   1   2   3   4   5   6   7   8   9   10  11  12  13  14

            created                          validate; assimilate
WU          x                                x  x
                created sent            success
result 1        x       x---------------x
                created sent                success
result 2        x       x-------------------x
                created     sent                    success
result 3        x           x-----------------------x

在下一个例子中,第二个计算结果丢失了(也就是 BOINC 调度服务没有收到回复)。当第三个计算结果到达,一致性被确认,任务包被回收。在时间为 13 时,调度服务“放弃”了第二个计算结果(然后规范计算结果的输出文件就可以删除了,这本来是用来验证晚到达的计算结果的)。

time        0   1   2   3   4   5   6   7   8   9   10  11  12  13  14

            created                                  validate; assimilate
WU          x                                        x  x
                created sent            success
result 1        x       x---------------x
                created sent    lost                            giveup
result 2        x       x--------                               x
                created     sent                    success
result 3        x           x-----------------------x

在下一个例子中,第二个计算结果在时间为5的时候返回了一个错误。这样仍未完成的计算结果数目就是两个了;因为 target_nresults 是 3,BOINC 将创建另一个计算结果(第四个计算结果)。在时间为9的时候一致性被确认,这时第四个计算结果还没有返回。

time        0   1   2   3   4   5   6   7   8   9   10  11  12  13  14

            created                              validate; assimilate
WU          x                                    x  x
                created sent            success
result 1        x       x---------------x
                created sent    error
result 2        x       x-------x
                created     sent                success
result 3        x           x-------------------x
                                 created     sent           success
result 4                         x   x----------------------x

返回:BOINC 开发文档 / BOINC 中文站 / BOINC 开发技术概论
页面来源 / BOINC 官方站

本页内容由中国分布式计算总站组织翻译,原文出自 BOINC 官方开发文档。参与本页制作的人员有:Youth(翻译)、碧城仙(编辑)。本站所有内容版权为中国分布式计算总站所有。本站欢迎非赢利性网站在遵守中华人民共和国版权法的前提下摘录或引用本站内容,但是请注明原作者和原出处。