一种基于Redis时间和权重关联的分布式优先级队列方法

技术背景:

深度学习平台(或存在异步任务调度的平台),存在不同的操作用户,用户存在不同的部门,调度的硬件服务器资源,按照不同的资源类型,操作系统,GPU卡的型号区分成不同的资源组,CPU资源,或者调试任务和训练任务区分,例如操作用户A,操作用户B,属于不同的部门,均具有对于资源组1080ti资源组的访问权限,且资源1080ti下只有1台1080ti的8卡的GPU服务器,用户A提交训练任务A-1需要8张卡,提交训练任务A-2需要4张卡,用户B提交训练任务B-1要4张卡,提交任务B-2需要1张卡,需要满足的功能业务需求点:

  1. 不同资源的排队任务的情况查看
  2. 对于用户的针对的资源的访问的Priority有管理员进行设置,Priority(1)~Priority(k)
  3. 根据用户的对于资源的等级可以优先抢占资源
  4. 对于同等优先级的任务和对于同一个用户提交的任务按照时间顺序进行排队等待
  5. 管理员可以根据任务的情况和状态删除排队中的任务
  6. 管理员或具备管理员权限的用户可以调整任务的位置,比如,调整到队列的头部,调整到队列的指定位置,调整到队列的尾部

以时间和用户对于资源的角色权重,完成对于资源组下的有限的资源的合理调度,并根据训练任务的和硬件资源组的特色提升硬件资源的利用率。

固有的深度学习的任务的调度策略为使用RabbitMQ,不同版本的RabbitMQ调用任务没有任务优先级策略,且无法满足灵活调整排队任务的如上功能特色需求和更高的性能需求,故基于Redis的zset的内存数据和zset本身的数据结构特色(根据Score自动排队)和数据持久化策略来实现高性能分布式任务调度队列的方法的方案来解决此深度学习平台的应用场景或存在类似场景的需求。也可产品上自行封装实现类似功能的zset的数据结构和数据持久化管理策略

核心创新点:

  1. 通过用户的权重和时间戳管理生成任务的综合Score,原理简单方便理解
  2. 以zset的特殊的高性能数据库结构,实现调度任务的自动高性能的排队
  3. 结合Redis内存数据库和磁盘持久化队列,解决分布式调度队列的高性能和灵活性依旧数据的可靠性的平衡
  4. 以任务的关键要素Score,以简单调整队列任务的Score完成高效的调整任务的位置的方法
  5. 基于Redis的内存数据库形式,可以进行分布式调度,且性能更加优秀

同时需要解决的调用约定,同样Priority根据对于资源的请求时间来排队,如下的方案步骤:
1.以资源的分组的创建资源自身的队列(Redis的zset)
2.用户A的训练任务1卡A-1和用户B的训练任务2卡B-1创建训练任务
3.信令服务接收创建命令,根据用户的信息获取用户的Priority信息和获取系统的ticker时间,根据策略公式生成训练任务的Score,把任务放入任务队列,基于如下计算公式:Score = 权重因子*Priority  + 时间戳(系统的32位ticker时间),例如权重因子:100000000000
4.消费进程或消费线程直接从队列Redis的zset取优先级Score最高的消息进行处理
5.Redis实例进行定时持久化到本地磁盘,以处理任务消息的异常发生时的持久化动作
6.系统管理员可以直接修改权重因子直接调整任务在队列中的位置
7.调整任务在排队中的任务的位置情况,按照如下策略计算Score,同一个任务可以反复调整
1)调整到头部,Score  = 队列头部任务Score  +  1
2)调整到尾部,Score  = 队列尾部任务Score  -  1
3)调整到中间位置,Score  =  (目标位置的前一个任务Score + 目前位置的后一个任务Score) / 2
8.消费进程根据运行中的任务的情况和调度任务的情况设定任务的回馈信息,如:排队中,硬件资源不足,调度中。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins入门级安装部署

前言 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。通常,项目中常用Jenkins作为编译打包项目的工具&#xff0…

Maven项目转为SpringBoot项目

Maven项目转为SpringBoot项目 前言创建一个maven项目前的软件的一些通用设置Maven仓库的设置其他的设置字符编码编译器注解支持 创建的Maven项目修改为Spring Boot项目修改pom.xml文件修改启动类-Main新建WAR包所需的类 添加核心配置文件 测试的控制器最后整个项目的目录结构![…

Ragnar-lothbrok 靶机

Ragnar-lothbrok 信息搜集 存活检测 详细扫描 后台网页扫描 网站信息搜集 secret “秘密”网页 将密文保存到 password.txt 此页面使用了 wordpress CMS 疑似用户 ragnar wpscan 也爆破出了用户 ragnar wpscan --url http://10.4.7.155/wordpress/ --enumerate u 密码获…

Linux 开机启动一条PHP命令

当你开机的时候要自动的启动一条PHP命令场景:比如webman 你需要手动启动项目进程 你可以这样操作 流程: 1、准备好你要执行的命令 2、将命令写入一个服务文件 3、开机自启这个服务 实例: 1、比如这个命令 /usr/local/php/bin/php /ho…

Angular-04:指令

① 内置指令1.1 *ngIf 结构指令1.2 [hidden] 属性指令1.3. *ngFor 结构指令1.4 *ngSwitch 结构指令 ② 自定义指令用法 指令是angular操作dom的途径,分为属性指令和结构指令。属性指令:修改元素的外观或行为。使用 [ ] 包裹。结构指令:增加、…

【路径规划】A*算法 Java实现

A*(A-Star)算法是一种广泛使用的寻路算法,尤其在计算机科学和人工智能领域。 算法思想 通过评估函数来引导搜索过程,从而找到从起始点到目标点的最短路径。评估函数通常包括两部分:一部分是已经走过的实际距离&#x…

漏洞复现-Apache Druid 任意文件读取 _(CVE-2021-36749)

Apache Druid 任意文件读取 _(CVE-2021-36749) 漏洞信息 Apache Druid Version 0.22以下版本中存在安全漏洞CVE-2021-36749文件读取漏洞 描述 ​ 由于用户指定 HTTP InputSource 没有做出限制,可以通过将文件 URL 传递给 HTTP InputSourc…

网络扫描与网络监听

前言:前文给大家介绍了网络安全相关方面的基础知识体系,以及什么是黑客,本篇文章笔者就给大家带来“黑客攻击五部曲”中的网络扫描和网络监听 目录 黑客攻击五部曲 网络扫描 按扫描策略分类 按照扫描方式分类 被动式策略 系统用户扫描 …

16 用于NOMA IoT网络上行链路安全速率最大化的HAP和UAV协作框架

文章目录 摘要相关模型仿真实验仿真结果 摘要 优化无人机到HAP的信道分配、用户功率和无人机三维位置来研究上行安全传输解决非凸问题,采用K-means聚类算法,将成对的用户划分成不同的组,每个簇可以有相应的无人机服务,然后将构造…

RocksDB基本架构与原理详解

Rocksdb Flink提供基于流的有状态计算,除了提供实时数据流的处理能力,还需要将计算产生的状态存储起来。 为了满足状态存取需求,提供了memory、flie system、rocksdb三种类型的状态存储机制。 memory存取高效单空间有限,且可用…

前端JS for循环内异步接口变成同步提交(JavaScript for循环异步变同步)

遇见的问题: 导入Excel文件的时候,将每行数据整合成一个数组,循环数组插入每一条数据,插入数据后要判断是否插入成功,如果没插入成功的话,停止循环,不再插入后面的数据。甚至插入数据后&#xf…

elementui时间日期组件右边自定义图标

效果 改为 首先是将左边的清除图标关闭 然后是将右边的图标设置为display:none,设置宽度,左右内边距 最后是 mounted() {/*思路:通过document文档,选中日期时间选择器元素,然后创建一个i标签,并指定其类…

SOLIDWORKS® 2024 新功能 - SIMULATION

1、增强型轴承接头 • 通过指定压缩、拉伸和弯曲的刚度,轻松创建自定义轴承接头。 • 通过向非线性和大型位移算例添加自定义条件,提高模拟精度。 优点 使用功能强大的接口,更轻松、更准确地设置模拟过程,并加快模拟速度。 2、…

【计数DP】CF1794D

Problem - D - Codeforces 题意 思路 解法大方向对了&#xff0c;但是还是不会做&#xff0c;原因是组合数不知道怎么求 首先需要注意到一些东西&#xff1a; 1.底数一定是质数 2.质数个数 < n 一定无解 3.哪些质数作为底数是不确定的 4.n < 2022 那么我们其实可…

CentOS 7设置固定IP地址

当我们安装了一个虚拟机或者装了一个系统的时候&#xff0c;经常会遇到需要设置固定ip的情况&#xff0c;本文就以Centos 7为例&#xff0c;讲述如何修改固定IP地址。 1、用ifconfig命令查看使用的网卡 如上图所示&#xff0c;我们就会看到我们目前使用的网卡名称 2、编辑网卡…

“数聚瑞安·创新未来”中国·瑞安第四届创新创业大赛圆满举办!

10月26日&#xff0c;“数聚瑞安 创新未来”中国瑞安第四届创新创业大赛决赛在瑞安东新科创园举行。本次大赛旨在挖掘优质的创新创业项目激活本地创新创业氛围&#xff0c;激发创新创业活力&#xff0c;数字科创赛道吸引了来自全国20多个省市自治区的50多个城市的100多家企业和…

Linux系统下的文件系统、各文件系统下目录结构及作用

要利用任何Linux系统,你需要对Linux的文件和目录(也称文件夹)了解。 Linux shell命令行中,文件和目录不是直观看见。需要使用:cd、ls、pwd等shell命令在目录之间切换。 Linux文件被收集到目录中,目录形成一个层级或树状结构: 一个目录可能包含其他目录,这些目录被称为子…

TCP通信实战案例-即时通信

即时通信是什么含义&#xff0c;要实现怎么样的设计&#xff1f; 即时通信&#xff0c;是指一个客户端的消息发出去&#xff0c;其他客户端可以接收到。 即时通信需要进行端口转发的设计思想。 服务端需要把在线的Socket管道存储起来。 一旦收到一个消息要推送给其他管道。…

CentOS 7.9.2009 数据盘挂载

一、linux版本&#xff1a; lsb_release -a 二、操作步骤 2.1&#xff0c;查看磁盘挂载情况&#xff0c;确认sdb是需挂载的硬盘 ## 查看磁盘挂载情况&#xff0c;确认sdb是需挂载的硬盘 lsblk 2.2&#xff0c;对硬盘sdb进行分区 ## 对硬盘sdb进行分区 fdisk /dev/sdb# 命令…

JVM进阶(2)

一)方法区: java虚拟机中有一个方法区&#xff0c;该区域被所有的java线程都是共享&#xff0c;虚拟机一启动&#xff0c;运行时数据区就被开辟好了&#xff0c;官网上说了方法区可以不压缩还可以不进行GC&#xff0c;JAVA虚拟机就相当于是接口&#xff0c;具体的HotSpot就是虚…
最新文章