aws batch 理解batch中的任务调度策略

news2024/9/22 3:54:55

参考资料

  • https://docs.amazonaws.cn/en_us/batch/latest/userguide/job_queue_parameters.html#job_queue_scheduling_policy

  • https://docs.amazonaws.cn/en_us/batch/latest/userguide/scheduling-policies.html

  • https://catalog.us-east-1.prod.workshops.aws/workshops/c3d652f2-6de1-4014-9a1b-c1b3c8f08b8d/en-US/

我们可以为任务队列设定调度策略,调度策略决定了资源在不同用户和工作负载的分配方式。

队列默认使用FIFO调度策略,如果没有设置调度策略则之后无法修改。设置调度策略后可以调换但不能删除

FIFO调度策略

下图是单队列环境下任务调度的逻辑。

  • 调度程序从队列头部获取任务,尝试将任务放置在计算环境中
  • 提交作业的顺序就是执行顺序,头部任务按顺序后移

img

对于多队列来说,调度逻辑如下图

  • 评估周期循环从队列头部获取任务进行评估

  • 高优先级的队列首先被评估和调度(队列1的优先级为2,高于队列1)

  • 调度器接受的任务数量取决于账户的每秒可处理最大事务数(TPS)

    https://docs.amazonaws.cn/batch/latest/userguide/service_limits.html

img

然而,FIFO策略会导致不公平,后提交的任务始终需要在前面任务完成后,才能执行

https://catalog.us-east-1.prod.workshops.aws/workshops/c3d652f2-6de1-4014-9a1b-c1b3c8f08b8d/en-US/fifo/unfair

实际测试下FIFO调度策略的效果

  1. 创建max为56个vcpu的fargate计算环境

  2. 创建两个任务队列queue1(优先级为1)和queue2(优先级为2)

  3. 创建任务定义,这里使用busybox将任务停止60s,这里指定所需cpu为8,计算环境最多容纳7个任务

    https://docs.aws.amazon.com/cli/latest/reference/batch/register-job-definition.html

    需要注意:fargate类型的任务,vcpu和memory只能指定符合规范的值,否则可能会报错"message": "Error executing request, Exception : Fargate resource requirements (16.00 vCPU, 16384 MiB) not valid., RequestId: 45905a0c-23cd-4339-a15a-8dae5af79776"

  4. 向队列1提交任务

    for x in {1..10}; do 
    	aws batch submit-job --job-definition test-job:3 --job-name "test-job1-${x}" --job-queue first-fargate-queue  |jq '.jobName'
    done
    
  5. 向队列2提交任务

    for x in {1..10}; do 
    	aws batch submit-job --job-definition test-job:3 --job-name "test-job2-${x}" --job-queue second-fargate-queue  |jq '.jobName'
    done
    

    在这里插入图片描述

  6. 列出任务的状态

    // listqueue.sh
    queuename=$1	
    echo "### Queue: ${queuename}"
    for STATUS in RUNNABLE RUNNING SUCCEEDED FAILED;do
            aws batch list-jobs --job-queue=${queuename} --job-status=${STATUS} |jq --arg s "$STATUS" '.jobSummaryList[]| "["+$s+"] "+.jobName'
    done
    
    listBatchQueue first-fargate-queue
    listBatchQueue second-fargate-queue
    

调度效果

  • 对不同队列来说,优先级高的队列先调度,已经运行的任务不会被抢断

  • 对同一队列来说,先来的先调度

Fair Share调度策略

公平调度策略允许对任务进行更细粒度的调度控制

scheduler

调度策略可以设置的参数如下

在这里插入图片描述

share identifier

调度策略允许使用 share identifier 在不同用户或工作负载之间分配作业队列中的计算资源。Amazon Batch 根据所有最近使用的公平共享标识符的总权重为每个公平共享标识符分配一个共享。这定义了具有公平共享标识符的作业可使用的总资源量。

调度程序通过使用vcpu_used_over_time X overridden_ weight_factor公式跟踪每个公平共享标识符的使用情况,从share idenifier中选择使用率最低的作业。

{
    "name": "multiWorkloadSP",
    "fairsharePolicy": { 
      "computeReservation": 0,
      "shareDecaySeconds": 0,
      "shareDistribution": [{ 
            "shareIdentifier": "blueSP1"
        },{
            "shareIdentifier": "greenSP1"
      }]
   }
}

例如下图中,blue和green两个标识符,默认权重为1,因此平分计算资源,两个标识符的任务交错调度

img

weight factor

权重因子决定 batch 分配share identifier的可用资源的数量。

weight factor 是一个介于0和1000之间的数字,默认值为1,值越低分配的运行时反而会越多

priority

提交任务时,可以选择任务的优先级,优先级的任务不需要等待前面的任务完成,能够插队调度

img

Compute reservation

计算资源的预留 (0% -> 99%)比例为 (computeReservation/100)^ActiveFairShares,其中ActiveFairShares为公平标识符的数量

例如下图所示,设定预留比率为50,存在2个标识符,因此最终计算资源的比例为25%。即使当前没有blue任务,仍旧有一个计算资源留存,不参与green任务的调度,反之亦然。

img

Decay factor

https://catalog.us-east-1.prod.workshops.aws/workshops/c3d652f2-6de1-4014-9a1b-c1b3c8f08b8d/en-US/fair/decay

衰减因子决定了调度器用来计算公平标识符计算资源使用时间的范围,设置为0表示只考虑当前使用率

之前提到调度器会选择当前使用率较低的标识符任务,设定较大的衰减因子,使得之前运行过的标识符任务,在之后的一段时间获得较少的执行时间

调度效果

  • 对于同一identifier的任务,共享identifier的计算资源

  • 对于不同identifier,按照权重在identifier之间分配计算资源,调度取决于过去的计算资源使用情况

  • 优先级高的任务先调度

  • 资源预留能够为每个标识符留存资源避免其他标识符的任务调度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/383508.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python实战】快看:”又中奖了,中大奖了“周围的小伙伴都惊呆了~你还不麻溜滴~(代码版彩票小游戏上线啦)

导语 哈喽!北鼻们,晚上好。 夕阳🌇的第一缕阳光送给小可爱们~每天都要加油鸭! 所有文章完整的素材源码都在👇👇 粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。 彩票是一个恒古不…

206页16万字城市运行“一网统管”体系建设项目需求报告

本资料来源网络,知识分享,仅供个人学习,请勿商用。完整资料领取见文末,部分资料内容: 第 一 章 应用场景示例 一.1 一卡通人员管理针对企业厂区、办公楼等场所人员出入频繁、安保问题多样化、管理环节复杂等现状&#…

文科生比不过理科生,转码IT互联网将成趋势?

今天看到“文科生转码或成趋势”的话题,觉得还是非常有意思哈,所以来聊聊看~ 值得一提的是,虽然现在高中考试改制后,已不再区分文理科生(理化生史地政6选3),但是大学本科及研究生以上&#xff…

最小基因变化

基因序列可以表示为一条由 8 个字符组成的字符串,其中每个字符都是 A、C、G 和 T 之一。 假设我们需要调查从基因序列 start 变为 end 所发生的基因变化。一次基因变化就意味着这个基因序列中的一个字符发生了变化。 例如,"AACCGGTT" -->…

设计模式-工作线程 创建多少线程池合适

1、定义 让有限的工作线程(Worker Thread)来轮流异步处理无限多的任务。也可以将其归类为分工模式,它的典型实现就是线程池,也体现了经典设计模式中的享元模式(重用对象)。 例如,海底捞的服务员(线程),轮流…

“数字档案室测评”相关参考依据梳理

数字档案室建设无疑比数字档案馆建设应用范围更为广泛,涉及的单位类型和专业领域也更多。这一点从国家档案局的机构设置上也可以看出端倪: 国家档案局两个内设业务指导司中,档案馆(室)业务指导司主要针对档案馆和机关档案室,而经济…

【Linux】磁盘结构、文件系统、软硬链接、动静态库链接

文章目录1、磁盘结构1.1 磁盘的物理结构1.2 磁盘的存储结构1.3 磁盘的逻辑结构2、文件系统2.1 4KB加载到内存2.2 文件系统结构3、软硬链接3.1 软链接3.2 硬链接4、动静态库4.1 什么是库?4.2 静态库和静态库链接4.3 动态库和动态库链接4.4 动静态库的加载下面了解到&…

python GUI图形化编程-----wxpython

一、python gui(图形化)模块介绍: Tkinter :是python最简单的图形化模块,总共只有14种组建 Pyqt :是python最复杂也是使用最广泛的图形化 Wx :是python当中居中的一个图形化,学习结构很清晰 Pywin :是pyth…

Qt界面美化之自定义qss样式表

原生的QT界面不好看,有时候需要根据美工的设计图修改样式。如果使用QML的话搞界面是快,但是QML有点儿吃内存,有时简单的功能还是用传统c的widget方便些。好在有qss,传统界面也可以美化的。QSS称为Qt Style Sheets也就是Qt样式表&a…

项目设计模式和规范

1、责任链模式 自己的理解:避免发生方与接收方解耦 优点:①降低发送方与接收方的耦合 ②简化他们对象 ③方便扩展新增 处理者 缺点:①不方便排错 ②性能问题,且使用不当容易搞出死循环 应用场景:拦截器 Interceptor和过滤器 filter:符合模式的进行拦截或者过滤到,然…

华为云服务器安全注意事项

使用华为云服务器搭建集群的时候不能像我们平时使用虚拟机克隆那样随意(我指的是后期使用),要留意安全问题,防止被病毒攻击 注意事项: 1.root用户和创建的普通用户密码要设置复杂一些,不能123456或者00000…

腾讯云服务器租用报价表新鲜出炉(轻量和CVM价格)

腾讯云服务器分为轻量应用服务器和云服务器CVM,CVM为专业级云服务器,适用于企业级如科学计算、集群应用、高容灾等使用场景;轻量应用服务器适用于个人博客简单的Web应用或测试环境使用。 腾讯云服务器租用价格表2023新版报价出炉&#xff0c…

页面状态码的含义

使用互联网产品或服务的过程中,会遇到网页报错的情况, 比如404、505等,具体这些数字有什么含义呢?本文基本涵盖了99%的报错情况,可供大家查询使用。 状态码的定义 状态码一般是由3位数字和原因短语组成的&#xff08…

10 种顶流聚类算法 Python 实现(附完整代码)

聚类或聚类分析是无监督学习问题。它通常被用作数据分析技术,用于发现数据中的有趣模式,例如基于其行为的客户群。 有许多聚类算法可供选择,对于所有情况,没有单一的最佳聚类算法。相反,最好探索一系列聚类算法以及每…

MWC 2023 | 美格智能合资公司联懂格智重磅发布多款5G+AIoT系列通信产品

2月27日下午,美格智能与联想懂的通信携手设立的合资公司——广州联懂格智技术有限公司亮相西班牙巴塞罗那世界移动通信MWC大会,并发布多款5GAIoT系列通信产品。▲联想集团副总裁、联想懂的通信CEO王帅博士(右三)美格智能CEO杜国彬…

【C++】C++11 新特性

目录 1.列表初始化 1.1. C98中使用{}初始化的问题 1.2. 内置类型的列表初始化 1.3. 自定义类型的列表初始化 2. 变量类型推导 2.1. 为什么需要类型推导 2.2. decltype类型推导 2.2.1 为什么需要decltype 2.2.2. decltype 3. 对默认成员的控制(default、delete) 3.1. …

第四阶段15-关于权限,处理解析JWT时的异常,跨域请求,关于Spring Security的认证流程

处理解析JWT时的异常 由于解析JWT是在过滤器中执行的,而过滤器是整个服务器端中最早接收到所有请求的组件,此时,控制器等其它组件尚未运行,则不可以使用此前的“全局异常处理器”来处理解析JWT时的异常(全局异常处理器…

华为机试题:HJ97 记负均正(python)

文章目录(1)题目描述(2)Python3实现(3)知识点详解1、input():获取控制台(任意形式)的输入。输出均为字符串类型。1.1、input() 与 list(input()) 的区别、及其相互转换方…

MySQL表的增删查改(进阶)

所有操作:主要讲了数据库的约束,表之间的关系,新增,聚合查询,联合查询等内容。是一篇博客所有操作的记录。 844d186 风夏/mysql_learning - Gitee.com数据库约束1.1 约束条件not null -指定某个列不能储存null值。un…

17、二维图形绘制

目录 (一)plot绘图指令 (1)plot(x,y) (2)plot(y)。 (3)plot(z)。 (4)plot(A)。 (5)plot(x,A)。 (6)plo…