资源调度|学习笔记

简介: 快速学习资源调度

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

课程地址: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

相关文章
|
11月前
|
存储 弹性计算 调度
云计算,何为云,又何以计算?
本文由笠泱撰写,是“拥抱云计算”系列的第一篇章,旨在分享云计算的概念及其诞生背景,重点介绍了阿里云飞天操作系统。文章从虚拟化技术的起源讲起,探讨了其如何演变为云计算的基础,并详细解释了云计算的关键特性:按需使用、按量付费和弹性。文中还分类介绍了云计算的主要服务模式(IaaS、PaaS、SaaS等)及部署方式(公共云、私有云、混合云),并分析了亚马逊AWS和阿里云在云计算领域的领导地位。最后,文章通过对比OpenStack与阿里云飞天架构,深入浅出地解析了阿里云飞天系统如何调度算力,帮助读者理解云计算的实际运作机制。阅读本文大约需要30分钟,内容详实,值得一读。
2187 5
云计算,何为云,又何以计算?
|
7月前
|
设计模式 算法 搜索推荐
【设计模式】【行为型模式】策略模式(Strategy)
一、入门 什么是策略模式? 策略模式是一种行为设计模式,允许在运行时选择算法或行为。它将算法封装在独立的类中,使得它们可以互换,而不影响客户端代码。 为什么需要策略模式? 策略模式的主要目的是解决算法
144 14
|
消息中间件 数据采集 SQL
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(一)
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(一)
|
关系型数据库 C# 数据库
.NET 8.0 开源在线考试系统(支持移动端)
【10月更文挑战第27天】以下是适用于 .NET 8.0 的开源在线考试系统(支持移动端)的简介: 1. **基于 .NET Core**:跨平台,支持多种数据库,前后端分离,适用于多操作系统。 2. **结合 Blazor**:使用 C# 开发 Web 应用,支持响应式设计,优化移动端体验。 3. **基于 .NET MAUI**:跨平台移动应用开发,一套代码多平台运行,提高开发效率。 开发时需关注界面设计、安全性与稳定性。
361 4
|
SQL 缓存 关系型数据库
Mysql跨库操作
Mysql跨库操作
473 0
|
Dubbo 网络协议 Cloud Native
如何用一个端口同时暴露 HTTP1/2、gRPC、Dubbo 协议?
如何用一个端口同时暴露 HTTP1/2、gRPC、Dubbo 协议?
15403 65
如何用一个端口同时暴露 HTTP1/2、gRPC、Dubbo 协议?
|
Python
SyntaxError :invalid syntax错误解决办法
SyntaxError :invalid syntax错误解决办法
4514 1
|
存储 安全 测试技术
如何评估 API 的质量
本文详细介绍了评估API质量的关键指标,包括功能性(功能完整性与准确性)、可靠性(稳定性和错误处理)、性能(响应时间和吞吐量)、易用性(文档质量和接口设计)及安全性(身份验证和数据加密),并提供了具体评估方法与测试建议,帮助开发者全面衡量API质量。通过这些评估,可以确保选择到高质量的API,为软件项目奠定坚实基础。
504 5
|
人工智能 API 开发者
插件开发最佳实践:以必应(Bing)搜索插件开发为例
插件是Botnow中增强Bot功能的关键工具,可通过添加各类插件如新闻阅读、效率工具等,扩展Bot的知识与技能。本文以开发“必应搜索”插件为例,详细介绍从登录控制台开始,经过创建插件、定义接口、设置认证信息直至在Bot中实际运用插件的全过程。遵循最佳实践,开发者能构建高质量插件,显著提升Bot的服务能力。
362 0
|
监控 Shell 测试技术
一篇文章讲明白MonkeyAPP压力稳定性测试
一篇文章讲明白MonkeyAPP压力稳定性测试
1150 1