![]() |
BOINC 开发文档BOINC 项目任务分发 |
主机在向项目服务器请求任务时应该在对调度服务的远端过程调用请求消息中包含如下内容:
<work_req_seconds>X</work_req_seconds>
给定主机的典型用途(也就是关机或暂停 BOINC 的时间和运行 BOINC 的时候的比例),这将会请求调度服务返回足够主机处理器计算 X 秒钟的任务。
BOINC 的任务分发策略会在让主机尽可能忙碌的同时,尽量减少如下问题的影响(有时候这两方面是矛盾的):
主机由于自身的问题不断地返回错误的计算结果。
恶意的用户试图为同一个任务包返回多个计算结果以获取不应得的积分,或者试图将错误的计算结果伪装成正确的结果。
任务分发受如下规则的约束:
计算结果仅发送给有可用的计算程序版本的主机平台。如果计算程序的 min_version 字段非零,那这个版本必须至少是这个值。
如果主机的磁盘或内存达不到要求,计算结果不会发送。
如果预计的完成时间(根据主机的处理器速度和使用参数)超过了任务包的完成时间限制,计算结果不会发送。
如果项目设定了 one result per user per workunit(每用户每任务只能有一个计算结果)的标志,而且同一个任务包已经发送了一个计算结果给同一用户的某台主机,那计算结果不会发送。
如果项目设定了每台主机 daily result quota(每日的计算结果限额),而且这台主机已经被发送了那么多的计算结果,那计算结果不会发送。
项目可以设定 number of results sent per RPC(每一次远端过程调用中允许发送的计算结果数目限制)。
如果项目启用了 homogeneous redundancy(同类冗余),而且同一个任务包的一个计算结果已经发送给了另一种不同的主机类型,那计算结果不会发送。
一般来说,BOINC 调度服务响应任务请求时会从数据库中枚举还未发送的计算结果,根据上面的标准进行过滤,发送给主机,直到请求中的时间 X 被满足。
对于那些输入文件非常大的项目,每个输入文件都可以用于多个任务包,BOINC 提供了另外一种任务分发策略,即局部调度(locality scheduling)。
本页内容由中国分布式计算总站组织翻译,原文出自 BOINC 官方开发文档。参与本页制作的人员有:Youth(翻译)、碧城仙(编辑)。本站所有内容版权为中国分布式计算总站所有。本站欢迎非赢利性网站在遵守中华人民共和国版权法的前提下摘录或引用本站内容,但是请注明原作者和原出处。