资源调度|学习笔记

简介: 快速学习资源调度

开发者学堂课程【分布式系统开发调度技术资源调度笔记与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/367/detail/4369


资源调度


内容介绍:

一、最大化集群资源利用率    

二、最小化任务的等待时间    

三、能支持资源的配额    

四、能支持任务抢占


一、最大化集群资源利用率    

资源调度的本质问题是当有一批任务排队时,如何将现有的资源,包括 CPU,memory,磁盘和网络等综合考虑之后分配给某一个 Job。对于这个问题:

1.最大化集群资源利用率,不能出现每个机器的繁忙程度不均衡的情况

2.最小化任务的等待时间,在集群环境下,通常是多个业务部门共享集群。不能出现某些业务部门的任务一直在运行,而另外其他业务部门的任务一直处于等待状态

3.能支持资源的配额,因为在共享集群,要保证各个业务部门之间的资源利用率是比较均衡的。

4.能支持任务抢占

以下以飞天伏羲在这几个方面是如何做到的。在飞天伏羲系统中,参与资源调度的角色有中控节点 FuxiMaster,以及驻留进程 Tubo,以及发起资源请求的AppMaster。


二、最小化任务的等待时间    

1.策略之优先级(Priority)

在在套系统当中,每一个提交上的作业,都会带上一个标签来表明这个作业的优先级,是一个整数值,每一个 Job 有一个 priority 值,值越小,表示优先级越高越靠前。

如下图,横轴是五个Job排好序,而纵轴代表它们的优先级,最左边优先级最低的Job 排在最前面。FuxiMaster 作为资源调度系统,当有了一个空闲资源之后,如何选择在 Job 之间进行调度,准则是优先满足优先级最高的 Job,若有空闲资源之后,依次满足次优先级最高的 Job,是一个递归的过程,按照优先级的顺序依次进行满足。

image.png

但在实际中会出现当一个系统处于运行状态时,有临时性的更高优先级的作业加入的情况,如下图中间插入了一个优先级相对第三的 Job,伏羲的做法是首先抢优先级最低的,即图中最靠右的 Job,抢它的资源会 cancel 正在运行 instance,将资源匀给高优先级插入的作业,如还未满足,继续抢倒数第二个优先级 Job 的作业,直到优先级更高的插入这个作业,它的资源全部满足,整个抢占也是递归的过程,在实现时如何做到高效是一个工程的细节。FuxiMaster 可以做到毫秒级别的完成调度。

image.png


三、能支持资源的配额    

策略之公平调度

如图,实际上是考虑优先级分组的概念,相同优先级的作业如何进行调度,按照启动时间或者提交时间来决定优先级,先到先得当有空闲资源的时候,先分给第一批优先级的作业,如果还有剩余资源,继续分给第二优先级的作业,直到最后资源被分配完。

image.png


四、能支持任务抢占

策略之配额(Quota)

由于是多个业务部门或者多个团队在共享一个物理集群。每个组可能对这个资源进行付费,不同付费的团队或业务部门如何保证资源是可用,所以每个组会分配一个quota,即资源配额。

如下图,横轴是不同的组,每个组的柱状图的高度不一样,意味着每个组能使用的最大资源不一样。

这样 FuxiMaster 在调度时,给这个组所有的 job 分配的资源总和不会超过这个组的配合高度,如图中的第四组的使用的规定可能白天没有计算任务,晚上是使用高峰,则在白天时,上面一段配合资源处于空闲状态。

作为资源调度系统,优化目标是要最大化集群的资源利用度,所以这段空闲资源如何充分的利用。

FuxiMaster 飞天系统在调度时会动态的进行Quota的调节,以实现削峰填谷最大化利用集群的物理资源,所以空闲资源,会按照一定的比例将它分发给其他比较紧张的组,第四组的空闲资源不按照其他三组的付费的比例分摊给一号,二号,三号组,一号,二号,三号组柱状图的顶峰会变大,意味着这片资源可以被一号,二号,三号利用起来,这就是削峰填谷的过程。

若第四组有任务时,资源是否会不够,确实是这样,如到了晚上第四组的资源请求量即底下蓝色的部分会变大,此时 FuxiMaster 接收到资源请求之后知道第四组请求变大,此时会让一号,二号,三号组取消一些作业,收回资源,归还给第四组,从而保证第四组的资源的使用情况,因为它花了更多的钱来买配合情况。

第四组买Quota时,是否存在不公平性,因为买了很多的资源,但实际白天不使用时,实际上给了1号,2号,3号组,所以在做 Quota 调节时,会将黄色可以共享资源定价会便宜,蓝色最低保障的资源售价会更贵,通过这种策略,来平衡不同的组之间的 Quota 购买情况,而一号,二号,三号在使用资源之后,也会对其进行计费,是所使用的资源×时间,如果出现一号,二号,三号,抢占了第四组的配额,也无碍,因为在使用过程中会产生账单。

这就是资源调度系统在做配额管理时要考虑的规则的平衡性。

image.png

相关文章
|
5月前
|
数据采集 存储 前端开发
QingHub企业级应用作业编排
QingHub作业编排中心是一个通过插件化方式,提供数据从采集,转化,计算,存储为一体的全流程数据处理方案,他一方面为前端应用提供数据源,同时也为前端应用与数据源头的通信搭建起桥梁,实现数据的双向沟通,适合任何业务应用数据采集,数据库数据采集,网站数据抓取,物联网设备数据采集,其中预置的HTTP协议,TCP协议,MQTT协议,OPC协议,Modbus协议等可以快速的实现物联设备数据的采集,以及上下行数据数据通信。预置的大量数据库数据的同步采集组件,可以快速实现数据融合汇聚。
|
资源调度 Kubernetes Cloud Native
资源调度的最佳实践|学习笔记
快速学习资源调度的最佳实践
620 0
资源调度的最佳实践|学习笔记
|
资源调度 分布式计算 安全
伏羲—阿里云分布式调度系统
在12月12日的云栖社区在线培训上,“飞天”分布式系统核心开发人员陶阳宇分享了《伏羲-阿里云分布式调度系统》。他主要从伏羲系统架构、任务调度、资源调度、容错机制、规模挑战、安全与性能隔离方面介绍了伏羲分布式系统架构和设计理念。
21938 0
|
3月前
|
弹性计算 运维 Kubernetes
实践篇:灵活调度,高效编排,容器化管理云上应用
【7月更文第8天】阿里云容器服务Kubernetes版(ACK)作为业界领先的容器管理和编排服务,凭借其强大的技术实力和丰富的云服务生态,为企业级用户提供了一系列卓越的优势,助力现代化应用的快速构建、部署与运维。
78 1
|
4月前
|
分布式计算 资源调度 监控
分布式资源管理和调度架构
分布式资源管理和调度架构
|
5月前
|
Kubernetes Cloud Native 持续交付
探索云原生架构的未来:如何优化资源管理和服务部署
【5月更文挑战第6天】 随着云计算的快速发展,云原生技术已成为企业数字化转型的关键驱动力。此篇文章深入探讨了云原生架构的核心组件及其在资源管理和服务部署方面的优化策略。通过分析容器化、微服务及自动化管理的实践案例,本文旨在为读者提供一套系统的方法论,以利用云原生技术实现更高效、灵活且可靠的IT基础设施。
99 2
|
11月前
|
资源调度 分布式计算 Kubernetes
Koordinator 支持 K8s 与 YARN 混部,小红书在离线混部实践分享
Koordinator 支持 K8s 与 YARN 混部,小红书在离线混部实践分享
|
人工智能 资源调度 Kubernetes
Koordinator 异构资源/任务调度实践
Koordinator 异构资源/任务调度实践
15284 10
|
5月前
|
消息中间件 Kubernetes Serverless
Serverless Kubernetes 开发实践:异构资源,按需使用
Kubernetes 作为当今云原生业界标准,具备良好的生态以及跨云厂商能力。Kubernetes 很好的抽象了 IaaS 资源交付标准,使得云资源交付变的越来越简单,与此同时用户期望更多的聚焦于业务自身,做到面向应用交付,Serverless 理念也因此而生。 那么如何通过原生 k8s 提供Serverless 能力?如何实现GPU等异构资源按需使用?这里给大家介绍一下我们在Serverless Kubernetes 开发实践:异构资源,按需使用。
224 0
Serverless Kubernetes 开发实践:异构资源,按需使用
|
Kubernetes Cloud Native 应用服务中间件
Koordinator 最佳实践系列:精细化 CPU 编排
Koordinator 最佳实践系列:精细化 CPU 编排
下一篇
无影云桌面