CN114489942B - 一种面向应用集群的队列任务调度方法及系统 - Google Patents
一种面向应用集群的队列任务调度方法及系统 Download PDFInfo
- Publication number
- CN114489942B CN114489942B CN202210062739.XA CN202210062739A CN114489942B CN 114489942 B CN114489942 B CN 114489942B CN 202210062739 A CN202210062739 A CN 202210062739A CN 114489942 B CN114489942 B CN 114489942B
- Authority
- CN
- China
- Prior art keywords
- task
- queue
- score
- tasks
- cluster
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 238000012549 training Methods 0.000 claims abstract description 48
- 238000012544 monitoring process Methods 0.000 claims description 29
- 238000004590 computer program Methods 0.000 claims description 20
- 230000001186 cumulative effect Effects 0.000 claims description 12
- 239000000725 suspension Substances 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 5
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 230000008859 change Effects 0.000 abstract description 5
- 238000007726 management method Methods 0.000 abstract description 5
- 238000013468 resource allocation Methods 0.000 abstract description 5
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种面向应用集群的队列任务调度方法及系统,将线上和线下任务并存在Kubernetes集群中,基于打分策略对线下任务进行打分,并对线下任务进行优先级排定,保证优先级高的训练任务有着更少的等待时间的同时,考虑多方面因素来调整任务执行队列,对任务的动态变化进行实时监控,调整线上和线下任务的资源分配,保证线上任务的服务质量,同时可以根据不同维度手动暂停线下一个或者一批训练任务,和手动开启暂停的一个和一批训练任务,可应对突发事件或者特殊时期,提高了任务的分配效率,便于资源的管理和控制,解决了现有技术中,资源分配率低,服务质量低的问题。
Description
技术领域
本发明属于集群任务调度技术领域,涉及一种面向应用集群的队列任务调度方法及系统。
背景技术
本发明采用Kubernetes和容器化技术搭建集群,Kubernetes已经成为云原生应用编排、管理的事实标准,越来越多的应用选择向Kubernetes迁移。人工智能和机器学习领域天然的包含大量的计算密集型任务,开发者非常愿意基于Kubernetes构建AI平台,充分利用Kubernetes提供的资源管理、应用编排、运维监控能力。目前Kubernetes在构建AI平台方面的使用也是越来越广泛。但是目前Kubernetes还有以下缺陷:①对于所有的在线任务都会存在繁忙期和平淡期,在初始给任务分配内存时,如果按照峰值分配就会造成很大的资源浪费,如果按照低估分配,则可能造成峰值时服务质量下降和内存溢出的情况,这个会极大影响用户的体验,是任何一个集群不能接受的。
采用在线任务和线下任务共存的机制来最大化资源利用率。但是同样有着以下问题:对于线上任务不按照峰值分配资源,怎么保证处于峰值时的服务质量。②训练任务的优先级问题。目前训练任务的执行只能通过按时间顺序或者优先级更高的更高概率先执行,考虑维度过于单一。③暂停任务问题。目前Kubernetes在新的1.21版本中开始支持job暂停,但是目前也没有发布正式版本,而且只能通过任务名对任务进行暂停和启动。不能通过其他维度和批量实现job的暂停和恢复。
发明内容
本发明的目的在于解决现有技术中的问题,提供一种面向应用集群的队列任务调度方法及系统。
为达到上述目的,本发明采用以下技术方案予以实现:
一种面向应用集群的队列任务调度方法,包括以下步骤:
S1:对创建的线下任务对象进行打分,计算当前任务得分,将计算结果保存至数据库中;
S2:查询Kubernetes集群中的job资源等待队列是否为null,如果是,执行S3;如果不是,执行S4;
S3:提交任务到Kubernetes集群中,并按得到的任务分数插入到运行队列中,任务开始运行,同时实时监控集群中队列任务的动态变化,并基于动态变化进行实时调整;
S4:获取job资源等待队列中任务的最大得分,并与当前的任务分数进行比较,如果大于当前任务得分,执行S5;如果小于当前任务得分,执行S6;
S5:修改当前任务暂停状态为True,并将当前任务插入至暂停队列中;
S6:计算当前运行队列中,分数小于当前任务的所有任务所占资源的总和,判断得出的资源总和是否满足当前任务,如果不满足,执行S5;如果满足,执行S7;
S7:修改当前任务的暂停状态为false,修改运行队列中任务的暂停状态为True;
将运行队列中修改后的任务插入到暂停队列中,将修改后的当前任务插入到Kubernetes集群中的运行队列中。
本发明的进一步改进在于:
所述S1中还包括以下步骤:
将创建的线下任务对象进行反序列化为JSON字符串对象,并存储至Redis数据库中,计算当前任务得分,计算结果也存储至Redis数据库中。
所述S1中计算当前任务得分的方法包括以下步骤:
依次计算优先级维度得分、累计暂停次数维度分数、累计暂停时间维度分数和训练任务完成度维度分数;
将四个维度的分值进行权重汇总,获得总得分。
所述优先级维度得分基于公式(1)计算:
y1=x*10 (1)
其中,x表示优先级;10表示优先级每一级的分数,优先级的等级分为1-10,优先级分数总值为10-100;
所述累计暂停次数维度分数基于公式(2)计算得到:
其中,x表示暂停次数;
所述累计暂停时间维度分数基于公式(3)得到:
其中,x表示该任务累计暂停时间,单位为分钟;
所述训练任务完成度维度分数基于公式(4)-(5)得到:
y4=t3*100 (5)
其中x1表示训练任务累计执行时间,x2表示总预估执行时间,x3表示累计执行epoch次数;x4表示总的epoch次数;
所述将四个维度的分值进行权重汇总基于公式(6)计算得到:
y=w1*y1+w2*y2+w3*y3+w4*y4 (6)
其中,w1表示优先级维度的权重;w2表示累计暂停次数维度权重;w3表示累计暂停时间维度权重;w4表示训练任务完成度维度权重。
所述实时监控集群中队列任务的动态变化,并基于动态变化进行实时调整,包括以下步骤:
制定线上服务的等待队列和响应时间对应的最大阈值,
监听Kubernetes集群中在线任务的等待队列和响应时间,是否达到阈值:
如果没有达到阈值,则继续监听;
如果达到阈值,根据任务所在节点的资源,判断影响服务质量的原因是否是因为节点资源不足:
如果是由于节点资源不足,对训练任务进行暂停处理;
如果不是由于节点资源不足,增加服务的副本数量,提高并发。
所述影响服务质量的原因是因为节点资源不足,对训练任务进行暂停处理,包括以下步骤:
查找该节点上线上服务占用的资源利用率和线下服务占用的资源利用率;
将线上服务占用的资源利用率和线下服务占用的资源利用率对比,判断是否是节点过高:
如果是,增加服务的副本数量,提高并发;
如果不是,驱逐节点对应的pod,并定时监听该节点的资源利用率,将监听获取的资源利用率和预先设定的阈值比较,判断线上任务的高峰期是否已经通过:
如果通过,去掉该节点的峰值label;
如果没通过,监听该节点的资源利用率。
所述实时监控集群中队列任务的动态变化,并基于动态变化进行实时调整还包括基于创建的线下任务对象的得分,能够手动暂停线下训练任务,和手动开启暂停的训练任务。
一种面向应用集群的队列任务调度系统,包括任务创建打分模块、资源等待队列判断模块、集群任务运行及监控模块、任务得分对比模块、第一任务状态调整模块、任务资源判断模块和第二任务状态调整模块;
任务创建打分模块,用于对创建的线下任务对象进行打分,计算当前任务得分,将计算结果保存至数据库中;
资源等待队列判断模块,用于查询Kubernetes集群中的job资源等待队列是否为null,如果是,执行S3;如果不是,执行S4;
集群任务运行及监控模块,用于提交任务到Kubernetes集群中,并按得到的任务分数插入到运行队列中,任务开始运行,同时实时监控集群中队列任务的动态变化,并基于动态变化进行实时调整;
任务得分对比模块,用于获取job资源等待队列中任务的最大得分,并与当前的任务分数进行比较,如果大于当前任务得分,执行S5;如果小于当前任务得分,执行S6;
第一任务状态调整模块,用于修改当前任务暂停状态为True,并将当前任务插入至暂停队列中;
任务资源判断模块,用于计算当前运行队列中,分数小于当前任务的所有任务所占资源的总和,判断得出的资源总和是否满足当前任务,如果不满足,执行S5;如果满足,执行S7;
第二任务状态调整模块,用于修改当前任务的暂停状态为false,修改运行队列中任务的暂停状态为True;将运行队列中修改后的任务插入到暂停队列中,将修改后的当前任务插入到Kubernetes集群中的运行队列中。
一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-7任一项所述方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-7任一项所述方法的步骤。
与现有技术相比,本发明具有以下有益效果:
本发明公开了一种面向应用集群的队列任务调度方法,将线上和线下任务并存在Kubernetes集群中,基于打分策略对线下任务进行打分,可以对任务进行优先排定,并对任务的动态变化进行实时监控,调整线上和线下任务的资源分配,保证线上任务的服务质量,减少优先级高的任务的等待时间,提高了任务的分配效率,便于资源的管理和控制。
进一步的,本发明的对任务对象从四个维度进行打分,可以根据不同维度的分数对任务进行批量暂停或恢复,便于应对突发事件或特殊时间段任务调配的需求,任务的动态调节更灵活,提高了资源的管理和分配效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实提交创建任务的流程图;
图2为本发明的线上任务实时监控调节流程图;
图3为本发明的打分策略流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本发明实施例的描述中,需要说明的是,若出现术语“上”、“下”、“水平”、“内”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
此外,若出现术语“水平”,并不表示要求部件绝对水平,而是可以稍微倾斜。如“水平”仅仅是指其方向相对“竖直”而言更加水平,并不是表示该结构一定要完全水平,而是可以稍微倾斜。
在本发明实施例的描述中,还需要说明的是,除非另有明确的规定和限定,若出现术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
下面结合附图对本发明做进一步详细描述:
本发明实施例使用于线上任务和线下训练任务并存的AI训练平台的Kubernetes集群中。目的在于:
第一,在一个线下任务和线上任务并存的集群中,在提高系统资源利用率的同时,通过监控来动态调整线上任务和线下任务的资源分配,保证在线上任务繁忙时,通过减少线下任务的资源使用,提高线上任务的资源分配,来保证线上任务的服务质量。
第二,在保证优先级高的训练任务有着更少的等待时间的同时,考虑多方面因素来调整任务执行队列,使得任务的执行有更好的服务质量。同时可以根据不同维度手动暂停线下一个或者一批训练任务,和手动开启暂停的一个和一批训练任务,可应对突发事件或者特殊时期。
参见图1,本发明实施例公开了一种面向应用集群的队列任务调度方法,包括以下步骤:
创建线下任务,制定线下任务的打分策略,对线下任务对象进行打分,根据分数对线下任务进行优先级排定,并提交到集群中,任务初始为暂停状态;
监控集群节点资源信息,实时监控集群中队列任务的动态变化,并基于动态变化进行实时调整,保证线上任务的服务质量,保证优先级高的任务,等待资源的时间更小,同时可以手动暂停线下训练任务和手动开启暂停的训练任务,
同时,记录集群中正在运行的训练任务,线上资源暂停的任务,优先级暂停的任务,手动暂停的任务;
集群中所有线下训练任务的对象和JSON字符串之间的相互转化,并在Redis中记录所有未结束的训练任务的JSON字符串。
本发明实施例中,集群节点资源信息监控包括以下步骤:
获取集群的所有节点;
获取所有节点的CPU使用率,内存使用率,网络延迟;
设置保证集群中线上任务服务质量的集群资源使用最大阈值;
设置保证集群中线上任务服务质量的集群资源使用最小阈值;
判断当前集群的负载是否达到,保证线上任务服务质量的最大阈值;
判断当前集群的负载是否小于对线上任务服务质量没有影响的最小阈值;
本发明实施例中,实时监控集群中队列任务的动态变化,并基于动态变化进行实时调整的步骤包括:
制定线上服务的等待队列和响应时间对应的最大阈值。
监听线上服务的等待队列和响应时间是否达到阈值。
当线上服务的达到等待队列和响应时间达到阈值时,根据任务所在节点的资源,判断影响服务质量的原因。如果是资源问题,则进行暂停训练任务处理。如果不是资源问题,则增加服务的副本数量,提高并发。
本发明实施例中,对线下任务进行暂停处理的过程包括:
查找服务所在的节点。
查找对应节点的紧缺资源。
根据紧缺资源和节点中现在训练任务的分数进行暂停处理。将暂停的job放入到,因线上任务服务质量下降而暂停的Redis任务队列中。
监听节点资源利用率,当资源利用率下降到指定阈值时,按分数启动暂停队列中的job。
本发明实施例中,对任务优先级进行排定的步骤包括:
判断集群中是否有分数小于当前任务的正在运行的训练任务。如果有则取消当前任务的暂停状态,否则进入到暂停队列中。
判断集群分数小于当前任务的所有任务的资源综合是否满足当前任务。如果满足则按顺序暂停job,直到系统资源满足条件。
本发明实施例中,手动暂停线下训练任务和手动开启暂停的训练任务包括以下步骤:
查找所有正在运行的训练任务。
根据任务名暂停训练任务。
根据分数,暂停所有分数小的训练任务。
手动启动所有手动暂停的任务。
参见图1,本发明实施例公开了一种在Kubernetes集群中提交训练线下任务的实施例:
步骤101:创建任务对象。创建成功后,执行步骤102。
步骤102:将任务对象进行反序列化为JSON字符串对象存储到Redis数据库中,执行步骤103。
步骤103:根据任务分数计算策略,计算当前任务得分,并保存至Redis数据库中。完成之后执行步骤104。
步骤104:查询Kubernetes集群中的job资源等待队列是否为null。如果队列为空,执行步骤105。如果队列不为空,则执行步骤107。
步骤105:提交任务到Kubernetes集群中。提交成功后执行步骤106。
步骤106:将任务按分数顺序插入到运行队列中。
步骤107:获取暂停队列(等待队列)中任务的最大得分,并于当前任务的分数进行比较。如果大于等于当前任务得分,执行步骤110。如果小于当前任务得分,则执行步骤108。
步骤108:计算出当前运行队列中,分数小于当前任务的所有任务所占资源的总和。然后执行步骤109
步骤109:判断步骤108计算出的资源总和是否满足当前任务,如果不满足,执行步骤110。如果满足,执行步骤112。
步骤110:修改当前任务暂停状态为T rue,然后执行步骤111。
步骤111:将当前任务按分数顺序插入到暂停队列中。
步骤112:修改当前任务的暂停状态为false,执行步骤113。
步骤113:按分数顺序,修改运行队列中任务的暂停状态为True,直到满足当前任务要求。同时将任务插入到暂停队列。然后执行步骤114。
步骤114:将当前任务插入到运行队列中,任务开始执行。
本发明实施例采用定时监控集群中的等待队列是否为空,如果等待队列为空,则修改暂停队列中分数最大的任务暂停状态为false,直到暂停队列也为空。这样可以保证,只要有任务没有执行,就一定会在排队中,避免暂停后不会重新开始的情况。
参加图2,本发明实施例还公开了实时监控集群中队列任务的动态变化,并基于动态变化进行实时调整的实施例:
步骤201:监听集群中在线任务的等待队列和响应时间
步骤202:判断是否有服务的数据达到了服务质量下降的阈值,如果有,执行步骤203,没有则执行201持续监听。
步骤203:查找任务所在的所有节点和节点的资源信息,包括CPU利用率,内存利用率,网络负载。得到数据后执行步骤204。
步骤204:通过各个节点的资源利用率,判断服务质量下降的原始是不是因为节点资源不足,如果不是,执行步骤205,如果是执行步骤206。
步骤205:更新线上服务配置,增加该任务的副本数,提高该任务的并发。
步骤206:查找该节点上线上服务占用的资源利用率和线下服务占用的资源利用率。然后执行步骤207
步骤207:通过线上任务资源占用率和线下任务资源占用率对比,判断是否是节点负载过高为题,如果是,执行步骤205,否则执行步骤208。
步骤208:查找节点的紧缺资源,按照资源紧缺程度和任务得分来获取任务和任务对应的pod。执行步骤209
步骤209:给该节点打上峰值标签,使得其他的pod,不能调度到该节点,减少资源使用冲突。执行步骤210
步骤210:驱逐节点对应的pod。执行步骤211
步骤211:定时监听该节点的资源利用率。
步骤212:根据步骤211获取的资源利用率和规定的阈值比较,判断线上任务的高峰期是否已经通过,如果通过,执行步骤213,否则执行步骤211。
步骤213:去掉该节点的峰值label。
本发明实施例可以通过分数进行批量暂停任务。查找出运行队列中,所有分数小于指定分数的队列,然后修改所有任务的暂停状态为true。同时将所有任务,添加到手动暂停队列中。也可以通过用户名暂停指定任务。
本发明实施例支持对手动暂停的任务查询,可以查询出所有的手动暂停的任务。手动暂停的任务,只能手动开启。
可以通过分数,和任务名开启所有手动暂停的任务。
参见图3,本发明实施例公开了一种训练任务打分策略的具体实施例:
本发明根据任务的优先级,累计暂停次数,累计暂停时间,训练任务完成度四个维度对训练任务进行打分;
步骤301:根据公式(1)计算优先级维度分数。输入x为优先级,优先级的等级为1-10,优先级分数总值为10-100。保证优先级高的任务,有着更高的得分。
y1=x*10 (1)
步骤302:根据公式(2)计算累计暂停次数维度分数,输入x为暂停次数。保证随着暂停次数的增加,分数增长的同时,实现分数增长的速率快速增加。因为平均每次暂停都会浪费半个epoch的执行时间。
步骤303:根据公式(3)计算累计暂停时间维度分数。输入x为该任务累计暂停时间,单位为分钟。保证随着累计时间的增长,任务可以获取更高的分数。
步骤304:根据公式(4)和(5)计算训练任务完成度维度分数。输入t为任务完成度,该公式保证越接近完成的任务得到的分数越高,不会被暂停。其中公式(5)的输入t通过公式(4)计算得到,公式(4)的输入分别是,x1:训练任务累计执行时间,x2:总预估执行时间,通过tqdm工具可以得到每一个epoch的计算时间乘以此次训练设置的总的epoch得到,x3:累计执行epoch次数,x4:总的epoch次数。
y4=t3*100 (5)
步骤305:通过公式(6)对四个维度的分值进行权重累加汇总得到最终结果。输入y1:优先级,y2:暂停次数,y3:暂停时间,y4:训练任务完成度;在本申请中各个维度的权重分别为:w1:0.3,w20.2,w3:0.25,w4:0.25。
y=w1*y1+w2*y2+w3*y3+w4*y4 (6)
本发明实施例中公开的打分策略,可应用于不同队列中任务的打分。
一种面向应用集群的队列任务调度系统,包括:
任务创建打分模块,用于对创建的线下任务对象进行打分,计算当前任务得分,将计算结果保存至数据库中;
资源等待队列判断模块,用于查询Kubernetes集群中的job资源等待队列是否为null,如果是,执行S3;如果不是,执行S4;
集群任务运行及监控模块,用于提交任务到Kubernetes集群中,并按得到的任务分数插入到运行队列中,任务开始运行,同时实时监控集群中队列任务的动态变化,并基于动态变化进行实时调整;
任务得分对比模块,用于获取job资源等待队列中任务的最大得分,并与当前的任务分数进行比较,如果大于当前任务得分,执行S5;如果小于当前任务得分,执行S6;
第一任务状态调整模块,用于修改当前任务暂停状态为True,并将当前任务插入至暂停队列中;
任务资源判断模块,用于计算当前运行队列中,分数小于当前任务的所有任务所占资源的总和,判断得出的资源总和是否满足当前任务,如果不满足,执行S5;如果满足,执行S7;
第二任务状态调整模块,用于修改当前任务的暂停状态为false,修改运行队列中任务的暂停状态为True;将运行队列中修改后的任务插入到暂停队列中,将修改后的当前任务插入到Kubernetes集群中的运行队列中。
本发明一实施例提供的终端设备的示意图。该实施例的终端设备包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序。所述处理器执行所述计算机程序时实现上述各个方法实施例中的步骤。或者,所述处理器执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。
所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。
所述终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器、存储器。
所述处理器可以是中央处理单元(CentralProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现成可编程门阵列(Field-ProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述终端设备的各种功能。
所述终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种面向应用集群的队列任务调度方法,其特征在于,包括以下步骤:
S1:对创建的线下任务对象进行打分,计算当前任务得分,将计算结果保存至数据库中;
S2:查询Kubernetes集群中的job资源等待队列是否为null,如果是,执行S3;如果不是,执行S4;
S3:提交任务到Kubernetes集群中,并按得到的任务分数插入到运行队列中,任务开始运行,同时实时监控集群中队列任务的动态变化,并基于动态变化进行实时调整;
S4:获取job资源等待队列中任务的最大得分,并与当前的任务分数进行比较,如果大于当前任务得分,执行S5;如果小于当前任务得分,执行S6;
S5:修改当前任务暂停状态为True,并将当前任务插入至暂停队列中;
S6:计算当前运行队列中,分数小于当前任务的所有任务所占资源的总和,判断得出的资源总和是否满足当前任务,如果不满足,执行S5;如果满足,执行S7;
S7:修改当前任务的暂停状态为false,修改运行队列中任务的暂停状态为True;
将运行队列中修改后的任务插入到暂停队列中,将修改后的当前任务插入到Kubernetes集群中的运行队列中。
2.根据权利要求1所述的一种面向应用集群的队列任务调度方法,其特征在于,所述S1中还包括以下步骤:
将创建的线下任务对象进行反序列化为JSON字符串对象,并存储至Redis数据库中,计算当前任务得分,计算结果也存储至Redis数据库中。
3.根据权利要求1所述的一种面向应用集群的队列任务调度方法,其特征在于,所述S1中计算当前任务得分的方法包括以下步骤:
依次计算优先级维度得分、累计暂停次数维度分数、累计暂停时间维度分数和训练任务完成度维度分数;
将四个维度的分值进行权重汇总,获得总得分。
4.根据权利要求3所述的一种面向应用集群的队列任务调度方法,其特征在于,所述优先级维度得分基于公式(1)计算:
y1=x*10 (1)
其中,x表示优先级;10表示优先级每一级的分数,优先级的等级分为1-10,优先级分数总值为10-100;
所述累计暂停次数维度分数基于公式(2)计算得到:
其中,x表示暂停次数;
所述累计暂停时间维度分数基于公式(3)得到:
其中,x表示该任务累计暂停时间,单位为分钟;
所述训练任务完成度维度分数基于公式(4)-(5)得到:
y4=t3*100 (5)
其中x1表示训练任务累计执行时间,x2表示总预估执行时间,x3表示累计执行epoch次数;x4表示总的epoch次数;
所述将四个维度的分值进行权重汇总基于公式(6)计算得到:
y=w1*y1+w2*y2+w3*y3+w4*y4 (6)
其中,w1表示优先级维度的权重;w2表示累计暂停次数维度权重;w3表示累计暂停时间维度权重;w4表示训练任务完成度维度权重。
5.根据权利要求1所述的一种面向应用集群的队列任务调度方法,其特征在于,所述实时监控集群中队列任务的动态变化,并基于动态变化进行实时调整,包括以下步骤:
制定线上服务的等待队列和响应时间对应的最大阈值,
监听Kubernetes集群中在线任务的等待队列和响应时间,是否达到阈值:
如果没有达到阈值,则继续监听;
如果达到阈值,根据任务所在节点的资源,判断影响服务质量的原因是否是因为节点资源不足:
如果是由于节点资源不足,对训练任务进行暂停处理;
如果不是由于节点资源不足,增加服务的副本数量,提高并发。
6.根据权利要求5所述的一种面向应用集群的队列任务调度方法,其特征在于,所述影响服务质量的原因是因为节点资源不足,对训练任务进行暂停处理,包括以下步骤:
查找该节点上线上服务占用的资源利用率和线下服务占用的资源利用率;
将线上服务占用的资源利用率和线下服务占用的资源利用率对比,判断是否是节点过高:
如果是,增加服务的副本数量,提高并发;
如果不是,驱逐节点对应的pod,并定时监听该节点的资源利用率,将监听获取的资源利用率和预先设定的阈值比较,判断线上任务的高峰期是否已经通过:
如果通过,去掉该节点的峰值label;
如果没通过,监听该节点的资源利用率。
7.根据权利要求5所述的一种面向应用集群的队列任务调度方法,其特征在于,所述实时监控集群中队列任务的动态变化,并基于动态变化进行实时调整还包括基于创建的线下任务对象的得分,能够手动暂停线下训练任务,和手动开启暂停的训练任务。
8.根据权利要求1所述的一种面向应用集群的队列任务调度系统,其特征在于,包括任务创建打分模块、资源等待队列判断模块、集群任务运行及监控模块、任务得分对比模块、第一任务状态调整模块、任务资源判断模块和第二任务状态调整模块;
任务创建打分模块,用于对创建的线下任务对象进行打分,计算当前任务得分,将计算结果保存至数据库中;
资源等待队列判断模块,用于查询Kubernetes集群中的job资源等待队列是否为null,如果是,执行S3;如果不是,执行S4;
集群任务运行及监控模块,用于提交任务到Kubernetes集群中,并按得到的任务分数插入到运行队列中,任务开始运行,同时实时监控集群中队列任务的动态变化,并基于动态变化进行实时调整;
任务得分对比模块,用于获取job资源等待队列中任务的最大得分,并与当前的任务分数进行比较,如果大于当前任务得分,执行S5;如果小于当前任务得分,执行S6;
第一任务状态调整模块,用于修改当前任务暂停状态为True,并将当前任务插入至暂停队列中;
任务资源判断模块,用于计算当前运行队列中,分数小于当前任务的所有任务所占资源的总和,判断得出的资源总和是否满足当前任务,如果不满足,执行S5;如果满足,执行S7;
第二任务状态调整模块,用于修改当前任务的暂停状态为false,修改运行队列中任务的暂停状态为True;将运行队列中修改后的任务插入到暂停队列中,将修改后的当前任务插入到Kubernetes集群中的运行队列中。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-7任一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210062739.XA CN114489942B (zh) | 2022-01-19 | 2022-01-19 | 一种面向应用集群的队列任务调度方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210062739.XA CN114489942B (zh) | 2022-01-19 | 2022-01-19 | 一种面向应用集群的队列任务调度方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114489942A CN114489942A (zh) | 2022-05-13 |
CN114489942B true CN114489942B (zh) | 2024-02-23 |
Family
ID=81472303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210062739.XA Active CN114489942B (zh) | 2022-01-19 | 2022-01-19 | 一种面向应用集群的队列任务调度方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114489942B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115114000B (zh) * | 2022-06-28 | 2024-05-10 | 重庆大学 | 一种边缘计算中多任务并行计算实现方法及装置 |
CN117547899A (zh) * | 2024-01-12 | 2024-02-13 | 云翔赛博(山东)数字技术有限公司 | 基于压滤机统筹排队处理卸料的方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107977257A (zh) * | 2016-10-25 | 2018-05-01 | 杭州海康威视数字技术股份有限公司 | 一种任务调度方法及装置 |
CN110413391A (zh) * | 2019-07-24 | 2019-11-05 | 上海交通大学 | 基于容器集群的深度学习任务服务质量保证方法和系统 |
WO2021237829A1 (zh) * | 2020-05-25 | 2021-12-02 | 南栖仙策(南京)科技有限公司 | 一种实现代码仓库与计算服务整合的方法及系统 |
-
2022
- 2022-01-19 CN CN202210062739.XA patent/CN114489942B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107977257A (zh) * | 2016-10-25 | 2018-05-01 | 杭州海康威视数字技术股份有限公司 | 一种任务调度方法及装置 |
CN110413391A (zh) * | 2019-07-24 | 2019-11-05 | 上海交通大学 | 基于容器集群的深度学习任务服务质量保证方法和系统 |
WO2021237829A1 (zh) * | 2020-05-25 | 2021-12-02 | 南栖仙策(南京)科技有限公司 | 一种实现代码仓库与计算服务整合的方法及系统 |
Non-Patent Citations (1)
Title |
---|
一种多策略要素的数据访问调度算法;冯径;徐攀;王锦洲;黄伟;;东南大学学报(自然科学版);20120920(第05期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114489942A (zh) | 2022-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114489942B (zh) | 一种面向应用集群的队列任务调度方法及系统 | |
CN111400022A (zh) | 一种资源调度方法、装置及电子设备 | |
CN109086135B (zh) | 资源伸缩方法、装置、计算机设备及存储介质 | |
CN111338791A (zh) | 集群队列资源的调度方法、装置、设备及存储介质 | |
CN110362391B (zh) | 资源调度方法、装置、电子设备及存储介质 | |
CN108769162B (zh) | 分布式消息均衡处理方法、装置、电子设备、存储介质 | |
CN115373835A (zh) | Flink集群的任务资源调整方法、装置及电子设备 | |
CN112486642B (zh) | 资源调度方法、装置、电子设备及计算机可读存储介质 | |
CN115220898A (zh) | 一种基于深度强化学习的任务调度方法、系统、装置及介质 | |
CN113032102A (zh) | 资源重调度方法、装置、设备和介质 | |
CN114968567A (zh) | 用于分配计算节点的计算资源的方法、装置和介质 | |
CN109491775B (zh) | 一种用于边缘计算环境下的任务处理与调度方法 | |
CN104346220B (zh) | 一种任务调度方法与系统 | |
CN113515358B (zh) | 任务调度方法、装置、电子设备及存储介质 | |
CN114327894A (zh) | 资源分配方法、装置、电子设备及存储介质 | |
CN111930485B (zh) | 一种基于性能表现的作业调度方法 | |
CN113391911A (zh) | 一种大数据资源动态调度方法、装置和设备 | |
CN109189581B (zh) | 一种作业调度方法和装置 | |
CN102184124A (zh) | 任务调度方法及系统 | |
CN115185685B (zh) | 任务调度方法、装置、计算机设备及存储介质 | |
CN109446641B (zh) | 一种云计算服务系统的多阶段可靠性建模分析方法 | |
CN111143210A (zh) | 一种测试任务调度方法和系统 | |
CN116069500A (zh) | 一种模型训练任务处理方法、装置、电子设备及可读介质 | |
CN115952054A (zh) | 一种仿真任务资源管理方法、装置、设备及介质 | |
CN113568728A (zh) | 一种作业调度方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |