领导级超级计算机批量调度的经验与实践
在超级计算机的使用中,作业调度是一个至关重要的环节,它直接影响着计算机资源的利用率和用户作业的执行效率。本文将详细介绍当前Cobalt调度算法的相关内容,包括算法描述、资源分配、作业队列划分以及与用户行为的交互等方面。
1. 当前Cobalt调度算法描述
Cobalt调度算法并不构建基于时间的调度表,也不运行“公平份额”算法。相反,它会定期应用一个调度“效用函数”,为队列中的每个作业计算优先级增量。作业按照优先级排序,然后选择资源集(其中一些资源可能当时正在使用)来运行优先级最高的作业。之后,Cobalt会开始“排空”这些资源,为作业腾出空间,并在可能的情况下进行回填作业。
这种排空操作虽然会影响资源利用率,但有助于运行大规模的“能力规模”作业。2008年该设施开始生产运营时,利用率约为70%。随着时间的推移,调度算法不断改进,用户教育和计算算法优化以及政策调整等措施,使得利用率提高到了约90%。
资源选择和分配基于网络拓扑、资源使用情况的启发式方法以及各种资源的可用时间。在Blue Gene/P平台上,需要使用静态分区方案,即使用特定站点预定义的分区。而在Blue Gene/Q平台上,可以使用动态的即时分区构建方案,也可以使用更传统的静态分区方案。ALCF选择了分层静态分区方案,利用系统布线的一些特点。例如,由于Blue Gene独特的环形设计,节点分区具有自然的规则分层结构。一个32K节点分区由两个16K节点分区组成,每个16K节点分区又由两个8K节点分区组成,依此类推。这意味着一旦启动一个小作业(如1K节点作业),它不仅会占用这些节点,还会阻塞它所属的所有更大的分区。因此,Cobalt会优先选择那些能最小化额外更大分
超级会员免费看
订阅专栏 解锁全文
2119

被折叠的 条评论
为什么被折叠?



