本文主要介绍不同特性的任务调度,包括All-Or-Nothing类型任务的Gang Scheduling、通过弹性配额提高集群整体资源利用率的Capacity Scheduling。
Gang Scheduling
Gang Scheduling是在并发系统中将多个相关联的进程调度到不同处理器上同时运行的策略,其最主要的原则是保证所有相关联的进程能够同时启动,防止部分进程的异常,导致整个关联进程组的阻塞。例如,您提交一个批量Job,这个批量Job包含多个任务,多个任务会同时调度成功或都不能调度成功。这种All-or-Nothing调度场景,就被称作Gang Scheduling。关于如何使用Gang Scheduling,请参见Gang scheduling。
Capacity Scheduling
通过Kubernetes原生的ResourceQuota方式进行固定资源分配,集群的整体资源利用率不高。阿里云借鉴Yarn Capacity Scheduling的设计思路,基于Scheduling Framework的扩展机制,在调度侧通过引入弹性配额实现了Capacity Scheduling功能,在确保资源分配的基础上通过资源共享的方式来提升集群的整体资源利用率。本文介绍如何使用弹性配额组实现Capacity Scheduling。关于如何使用Capacity Scheduling,请参见Capacity Scheduling。