文档

ACK Eege集群Pro版的资源调度方式

更新时间:

ACK Edge集群Pro版的调度能力基于容器服务 Kubernetes 版,受边缘节点本身限制,ACK Edge集群Pro版支持部分调度功能,包括适用于批量计算任务的Gang scheduling、Capacity Scheduling、Kube Queue,以及适用于CPU、GPU等异构资源的共享GPU调度和GPU/CPU拓扑感知调度。

功能

描述

参考文档

Gang scheduling

All-or-Nothing作业要求所有的任务在同一时间被调度,如果只是部分任务启动的话,启动的任务将持续等待剩余的任务被调度。在极端情况下,所有作业都处于挂起状态,从而导致死锁。

为了解决这个问题,阿里云提供Gang Scheduling功能,保障所有相关联的进程能够同时启动,防止因部分进程的异常而导致整个关联进程组的阻塞的问题。

使用Gang scheduling

Capacity Scheduling

当集群中有多个用户时,通过Kubernetes原生的ResourceQuota方式进行固定资源分配,因为不同的用户使用资源的周期和方式不同,会造成集群的整体资源利用率较低。

ACK借鉴Yarn Capacity Scheduling的设计思路,基于Scheduling Framework的扩展机制,在调度侧通过引入弹性配额组,实现Capacity Scheduling功能,在确保用户资源分配的基础上,通过资源共享的方式来提升集群的整体资源利用率。

使用Capacity Scheduling

Kube Queue

调度器以Pod为单位进行调度。当集群中任务类型的工作负载数量多时,会导致Pod对调度器的运行速率影响较大,并且不同用户提交的作业之间存在相互影响。

任务队列ack-kube-queue旨在管理Kubernetes中的AI/ML工作负载和批处理工作负载。允许系统管理员使用自定义队列的作业队列管理,以提高队列的灵活性。结合Quota系统,ack-kube-queue自动优化了工作负载和资源配额管理,以便最大化利用集群资源。

使用任务队列ack-kube-queue

共享GUP调度

GPU共享调度可以降低使用GPU的经济成本,保障程序运行的稳定性。

ACK Edge集群Pro版支持以下GPU设备分配策略。

  • 单Pod单GPU卡共享和隔离,常用于支持模型推理场景。

  • 单Pod多GPU卡共享和隔离,常用于支持分布式模型训练代码的开发。

  • 按GPU卡的Binpack和Spread分配策略,常用于提升GPU卡利用率和GPU高可用的场景。

GPU/CPU拓扑感知调度

调度器基于节点异构资源的拓扑信息,如GPU卡之间的NVLink、PcleSwitch等通信方式、CPU的NUMA拓扑结构等,在集群维度进行最佳的调度选择,为工作负载提供更好的性能。

相关文档

了解容器服务 Kubernetes 版支持的所有调度功能,请参见ACK调度概述