CN116233022A - 一种作业调度方法、服务器及服务器集群 - Google Patents
一种作业调度方法、服务器及服务器集群 Download PDFInfo
- Publication number
- CN116233022A CN116233022A CN202310086408.4A CN202310086408A CN116233022A CN 116233022 A CN116233022 A CN 116233022A CN 202310086408 A CN202310086408 A CN 202310086408A CN 116233022 A CN116233022 A CN 116233022A
- Authority
- CN
- China
- Prior art keywords
- queue
- job
- queues
- resource
- scheduled
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/56—Queue scheduling implementing delay-aware scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/622—Queue service order
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- 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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Hardware Redundancy (AREA)
Abstract
本申请提供一种作业调度方法、服务器以及服务器集群,所述方法包括:在所述待调度作业中存在自动调度参数的情况下,查询多个计算节点队列的队列资源情况,并基于所述队列资源情况,从多个计算节点队列中选取到目标队列;将所述待调度作业分配到所述目标队列。本申请能够自动选择队列资源,解决人工选择可能导致的调度失败等问题。
Description
本申请要求于2023年1月6日提交中国专利局、申请号为2023100177458、申请名称为“一种作业调度方法、服务器及服务器集群”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及服务器集群领域,尤其涉及一种作业调度方法、服务器及服务器集群。
背景技术
高性能计算(high-performance computing,HPC)是一个计算机集群系统,通过管理节点对计算任务进行分解,交给不同的计算节点进行计算,以此来解决大型计算问题。在科学研究、气象预报、仿真实验、生物制药、基因测序、图像处理等行业均有广泛的应用。
目前HPC行业使用Slurm或者OpenPBS调度器时,会将计算节点划分队列。将计算节点分组,不同的组即不同的队列,在队列排队的作业只会在所属队列的计算节点服务器执行。
发明内容
本申请实施例提供了一种作业调度方法、服务器及服务器集群,能够自动选择队列资源,解决人工选择可能导致的调度失败等问题。
第一方面,本申请实施例提供一种作业调度方法,所述方法包括:获取待调度作业;在待调度作业中存在自动调度参数的情况下,查询多个计算节点队列的队列资源情况,并基于队列资源情况,从多个计算节点队列中选取到目标队列;将待调度作业分配到目标队列。以此本申请实施例提供的作业调度方法能够自动选择队列资源,解决人工选择可能导致的调度失败问题,
其中一种可能的实现方式中,所述方法还包括:获取已分配到计算节点队列中的作业的排队时长;在排队时长达到时间阈值的情况下,则为所述作业重新分配目标队列。以此,可以自动调度拥塞作业,解决作业在繁忙队列长时间排队问题。
其中一种可能的实现方式中,在待调度作业中存在自动调度参数的情况下,则查询多个计算节点队列的队列资源情况,并基于队列资源情况,从多个计算节点队列中选取到目标队列,包括:在待调度作业中存在自动调度参数的情况下,解析得到待调度作业的资源请求,并查询多个计算节点队列的队列资源情况;基于队列资源情况和资源请求,从多个计算节点中选取到目标队列。以此,可以触发基于Slurm/OpenPBS的hook插件机制自动计算作业的资源请求,获得待调度作业的资源请求,无需用户人工干预。
其中一种可能的实现方式中,资源请求包括待调度作业需要的CPU的个数和/或节点个数。以此,可以通过部署在调度器中的AutoQueueServer组件,查询调度器中当前的多个计算节点队列的资源情况,根据队列调度算法选择目标队列。
其中一种可能的实现方式中,待调度作业包括权限要求,目标队列为满足所述待调度作业的资源请求和权限要求的计算节点队列。以此,可以获得作业的资源请求和权限要求。
其中一种可能的实现方式中,队列资源情况包括计算节点队列的空闲率,基于队列资源情况和资源请求,从多个计算节点队列中选取到目标队列,包括:在存在多个满足资源请求的空闲队列的情况下,基于空闲节点的空闲率,从多个满足资源请求的空闲队列中选取到目标队列,目标队列为满足资源请求且空闲率最大的空闲队列,空闲队列为处于空闲状态的计算节点队列;空闲状态是指作业无需排队处理,或者,计算节点队列中不存在正在排队的作业。以此,可以避免调度拥塞,避免造成作业在繁忙队列长时间排队,提高计算的执行效率。
其中一种可能的实现方式中,基于队列资源情况和资源请求,从多个计算节点队列中选取到目标队列,包括:在存在多个满足资源请求的队列,且多个满足资源请求的队列中不存在空闲队列的情况下,比较多个满足资源请求的队列的队列资源情况,并根据比较结果从多个满足资源请求的队列中,选取得到目标队列。以此,可以查询调度器中当前的多个计算节点队列的资源情况,根据队列调度算法选择目标队列。
其中一种可能的实现方式中,队列资源情况包括作业排队数量、作业排队时长或者空闲率中的一种或多种。
第二方面,本申请实施例提供一种服务器,所述服务器用于执行如第一方面所述的方法。其有益效果不再赘述。
第三方面,本申请实施例提供一种服务器集群,包括管理节点和多个计算节点队列,所述管理节点用于执行如第一方面所述的方法。
第四方面,本申请提供一种电子设备,包括处理器和存储器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的方法。
第五方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被计算机执行时实现第一方面中任一项所述的方法。第六方面,本申请实施例提供一种算机程序产品,包括计算机程序,所述计算机程序被计算机执行时实现第一方面中任一项所述的方法。
附图说明
为了更清楚地说明本说明书披露的多个实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书披露的多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
下面对实施例或现有技术描述中所需使用的附图作简单地介绍。
图1为本申请实施例提供的一种多个计算节点队列的结构示意图;
图2为本申请实施例提供的一种服务器集群的结构示意图;
图3为本申请实施例提供的作业调度方法的流程图;
图4为本申请实施例1提供的一种作业调度方法的示意图;
图5为本申请实施例提供的一种作业调度的装置;
图6是本申请实施例提供的作业调度的系统的示意图;
图7为本申请提供的一种电子设备示意图;
图8为本申请实施例提供的一种电子设备集群示意图;
图9为本申请提供的一种电子设备集群可能的实现方式示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本申请实施例中的技术方案进行描述。
在本申请实施例的描述中,“示例性的”、“例如”或者“举例来说”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”、“例如”或者“举例来说”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”、“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B这三种情况。另外,除非另有说明,术语“多个”的含义是指两个或两个以上。例如,多个系统是指两个或两个以上的系统,多个终端是指两个或两个以上的终端。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
在本申请实施例的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在本申请实施例的描述中,所涉及的术语“第一\第二\第三等”或模块A、模块B、模块C等,仅用于区别类似的对象,不代表针对对象的特定排序,可以理解地,在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
在本申请实施例的描述中,所涉及的表示步骤的标号,如S110、S120……等,并不表示一定会按此步骤执行,在允许的情况下可以互换前后步骤的顺序,或同时执行。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
如图1所示,用户在提交作业时,往往针对不同应用场景,依据经验判断,将不同规格的计算节点划分到不同队列,选择适合的队列处理该作业,以合理利用计算资源。
示例性地,可以依据服务器类型判断,将刀片服务器等计算节点划分到队列A,将塔式服务器划分到队列B,将异构服务器划分到队列C。
用户在提交作业时,调度器通过在作业的批处理脚本中指定队列名称来选择队列处理该作业。
示例性地,用户在提交作业时在作业的批处理脚本中指定队列A,调度器根据批处理脚本选择队列A处理该作业。
让用户自行选择提交作业会有以下两个问题:
问题1:用户指定错误队列,可能资源无法满足作业需求,导致调度器调度失败。
示例性地,用户提交的作业需要4台刀片服务器的计算资源完成,用户指定队列A中只有两台刀片服务器,无法满足作业需求作业需求,导致调度器调度失败。
问题2:用户指定繁忙队列,可能导致队列拥塞,作业长时间等待。
示例性地,用户提交的作业,指定队列B中胖节点执行,然而队列B中胖节点繁忙当前尚有多个作业正在排队等待完成,队列拥塞,作业需长时间等待。
针对上述情况,采用手工查询当前多个队列的资源占用情况,选择合适的队列如队列A,提交作业,在作业的批处理脚本中写入队列名称,调度器获取批处理脚本中指定的队列名称,执行调度策略。调度策略为:如果批处理脚本中指定队列,则调度器调用指定队列执行作业;如果没有指定队列,则调度器自动分配缺省队列执行作业,其中缺省队列满足短板效应;作业执行后,手工查询该队列作业执行情况,判断作业是否长时间排队,将长时间排队的作业取消并重新提交至其他指定的队列。
基于人工经验判断选择的队列,容易选择错误队列;如果作业长时间排队未处理,则需要重新人工选择队列,影响服务器的执行效率和稳定性。
为此,本申请实施例提供了一种作业调度方法、服务器及服务器集群,针对HPC使用Slurm或者OpenPBS调度器的场景,采用本申请实施例提供的作业调度方法,在提交作业时无需指定队列,通过hook插件的方式自动解析该作业的资源请求,并选择合适的队列后再提交给调度器进行调度,能够避免人工选择队列容易出错的问题。
图2为本申请实施例提供的服务器集群的结构示意图。如图2所示,服务器集群包括管理节点和多个计算节点队列,管理节点中部署有调度器13,管理节点中包含至少两个组件,如提交拦截(SubmitHook)组件11和自动队列服务(AutoQueueServer)组件12。
其中SubmitHook组件11是本申请提供的一种作业提交插件(JobSubmitPlugins),SubmitHook组件11用于拦截待调度作业的信息,发送队列选取请求。SubmitHook组件11部署在调度器13所在的管理节点并注册在调度器13内,通过远程过程调用(RemoteProcedure Calls,RPC)接口与AutoQueueServer组件12进行通信。
RPC接口是一种协议,程序可使用这种协议向网络中的另一台计算机上的程序请求服务。RPC(远程过程调用)是一项广泛用于支持分布式应用程序(不同组件分布在不同计算机上的应用程序)的技术。RPC的主要目的是为组件提供一种相互通信的方式,使这些组件之间能够相互发出请求并传递这些请求的结果。
AutoQueueServer组件12用于接收SubmitHook组件11发送的队列选取请求,查询调度器13中当前的多个计算节点队列的资源情况,根据队列调度算法选择目标队列,并将目标队列名称返回给SubmitHook组件11。其中的队列调度算法为现有算法。AutoQueueServer组件12部署在调度器13所在管理节点。
AutoQueueServer组件12还用于定时轮询队列里调度过的作业,如发现这类作业长时间排队并达到超时阈值,则重新计算目标队列,如果新的目标队列存在,则重新给作业分配队列。
调度器13可以为极简Linux资源管理工具(simple linux utility for resourcemanagement,Slurm)或开源便携式批处理系统(open portable batch system,OpenPBS)。
Slurm是一种可用于大型计算节点集群的高度可伸缩和容错的集群管理器和作业调度系统。
OpenPBS是开源可免费使用的便携式批处理系统(portable batch system,PBS)。PBS是管理任务和计算机资源的系统,能接受shell脚本和控制属性组成的任务,并且保存任务直到任务被运行,运行完任务后会把结果送回提交任务的用户。
在调度器为Slurm的场景中,可以在核心配置文件slurm.conf中配置作业提交插件(JobSubmitPlugins)。核心配置文件slurm.conf用于描述Slurm的配置信息、要管理的节点、与有关节点与分区关联的调度参数等。调度器通过slurm.conf中配置的作业提交插件调用SubmitHook组件11。
示例性地,可以在调度器为Slurm的场景中在核心配置文件slurm.conf中配置作业提交插件(JobSubmitPlugins)如:"create hook submit_hook"。
在调度器为OpenPBS场景中,可以通过设置捕捉(set hook)命令设置队列作业(queuejob)事件,调度器通过该队列作业(queuejob)事件调用SubmitHook组件11。
示例性地,在调度器为OpenPBS场景中,可以通过设置捕捉(set hook)命令设置队列作业(queuejob)事件的代码为:"set hook submit_hook event=queuejob"。
基于此,在调度器13接收到用户提交的作业后,调用SubmitHook组件11,SubmitHook组件11拦截待调度作业的信息,并判断作业中是否存在自动调度参数,若存在,解析作业的资源请求,通过RPC接口向AutoQueueServer组件12发送队列选取请求,请求目标队列。AutoQueueServer组件12接收SubmitHook组件11发送的队列选取请求,查询调度器13中当前的多个计算节点队列的资源情况,根据队列调度算法选择目标队列,并将目标队列名称返回给SubmitHook组件11。SubmitHook组件11指定该目标队列为执行作业的计算节点队列,调度器13将作业分配到该目标队列。
下面以具体的实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图3为本申请实施例作业调度方法的流程示意图。如图3所示,本申请实施例提供的一种作业调度方法,该方法可以包括:S301,获取待调度作业;S302,在待调度作业中存在自动调度参数的情况下,查询多个计算节点队列的队列资源情况;S303,基于所述队列资源情况,从多个计算节点队列中选取到目标队列。S304,将所述待调度作业分配到所述目标队列。
下面对上述步骤S301-S304详细说明。
S301,获取待调度作业。
用户输入作业的批处理脚本提交至调度器13。其中作业是指操作或执行的任务,用户输入作业的批处理脚本至少包括作业指令、资源请求和自动调度参数。资源请求包括待调度作业需要的CPU的个数和/或节点个数。可以将用户输入作业的批处理脚本记为待调度作业。
在HPC项目场景中,管理节点对待调度任务进行分解得到可以多个作业指令,将多个作业指令提交给多个CPU或节点进行操作或执行。
在Slurm或者OpenPBS作为调度器的HPC项目场景中,在用户输入作业的批处理脚本中无需指定计算节点队列名称。
S302,在待调度作业中存在自动调度参数的情况下,查询多个计算节点队列的队列资源情况。
自动调度参数用于指示调度器13自动获取计算节点队列名称。
可以在用户输入作业的批处理脚本中设置自动调度参数为:AUTO_QUEUE=TRUE。
在用户输入作业的批处理脚本提交后,SubmitHook组件11拦截,判断用户输入作业的批处理脚本中是否存在自动调度参数AUTO_QUEUE=TRUE,如存在,则解析作业的批处理脚本获得作业的资源请求,通过RPC接口向AutoQueueServer组件12请求多个计算节点队列的队列资源情况;其中队列资源情况包括计算节点队列的空闲率。如不存在自动调度参数AUTO_QUEUE=TRUE,或存在AUTO_QUEUE=FALSE,则自动分配缺省队列执行该作业指令。
S303,基于队列资源情况,从多个计算节点队列中选取到目标队列。其中目标队列为满足所述待调度作业的资源请求的计算节点队列。
AutoQueueServer组件12接收到SubmitHook组件11发送的队列选取请求后,查询调度器13中当前多个计算节点队列的队列资源情况,根据队列调度算法从多个计算节点队列中选取到满足所述待调度作业的资源请求的计算节点队列,并将该队列名称返回给SubmitHook组件11。
S304,将待调度作业分配到目标队列。
SubmitHook组件11将目标队列名称写入待调度作业中,调度器13根据待调度作业中的目标队列进行调度,将待调度作业分配到目标队列执行。
本申请实施例提供的作业调度方法能够自动查询调度器中当前多个计算节点队列的队列资源情况,自动选择队列资源,解决人工选择可能选择错误导致的调度失败问题。
实施例1
图4为本申请实施例1提供的作业调度方法的流程示意图。本申请实施例1提供的作业调度方法,针对HPC场景使用Slurm或者OpenPBS调度器时长时间排队问题,在用户提交作业后通过hook插件的方式自动选择合适的目标队列提交给调度器进行调度后,定时轮询长时间排队作业,获取已分配到计算节点队列中的作业的排队时长;在排队时长达到时间阈值的情况下,则为所述作业重新分配目标队列。如图4所示,实施例1提供的作业调度方法的流程包括以下步骤S41-46。
S41,获取待调度作业。该步骤的具体的实现方式包括以下步骤S411-S412。
S411,用户设置待调度作业,待调度作业至少包括作业指令、资源请求和自动调度参数。其中,资源请求包括待调度作业需要的CPU的个数和/或节点个数;自动调度参数为AUTO_QUEUE=TRUE。
示例性地,用户在向调度器13提交作业时,可以在作业的批处理脚本中设置作业名为test、资源请求为使用2个节点、运行时间为5分钟、自动调度参数为true,代码如下:
#!/bin/bash
#SBATCH–J test#作业名为test
#SBATCH–N 4#资源请求为使用2个节点
#SBATCH–t 30:00#任务最大运行时间为5分钟
#SBATCH–AUTO_QUEUE=TRUE#设置自动调度参数的值为真
S412,调度器13接收用户提交的待调度作业,触发SubmitHook组件11拦截待调度作业。在调度器为Slurm的场景中,调度器13接收用户提交的待调度作业后,通过运行slurm.conf调用SubmitHook组件11。
在调度器为OpenPBS场景中,调度器13接收用户提交的待调度作业后,可以通过队列作业(queuejob)事件调用SubmitHook组件11。
S42,在待调度作业中存在自动调度参数的情况下,解析得到待调度作业的资源请求,并查询多个计算节点队列的队列资源情况。下面通过以下步骤S421-S424说明该步骤的具体的实现方式。
S421,SubmitHook组件11拦截待调度作业后,判断待调度作业中是否存在自动调度参数AUTO_QUEUE=TRUE。
如存在自动调度参数AUTO_QUEUE=TRUE,执行步骤S422-S424。
如不存在自动调度参数,或AUTO_QUEUE=FALSE,自动分配缺省队列执行作业。
S422,SubmitHook组件11解析作业的批处理脚本获得待调度作业的资源请求。
待调度作业的资源请求包括待调度作业需要的CPU的个数和/或节点个数。
示例性地,SubmitHook组件11可以通过解析作业的批处理脚本的代码“#SBATCH–N4”确定待调度作业的资源请求为使用2个计算节点。
待调度作业的资源请求还包括运行时间。
示例性地,SubmitHook组件11还可以通过解析作业的批处理脚本的代码“#SBATCH–t30:00”确定该作业运行时间为5分钟。
S423,根据资源请求,向AutoQueueServer组件12发送调度请求。
示例性地,根据资源请求为“2个计算节点”,SubmitHook组件11向AutoQueueServer发送调度请求,请求内容为“2个计算节点”。
示例性地,根据资源请求为“2个计算节点”、“运行时间为5分钟”,SubmitHook组件11向AutoQueueServer发送调度请求,请求内容为“2个计算节点”和“运行时间为5分钟”。
S424,AutoQueueServer组件12收到调度请求后,根据调度请求查询当前多个计算节点队列的队列资源情况。
队列的资源情况包括以下内容之一或组合:作业排队数量、平均等待时长、空闲率等。其中,计算节点队列的空闲率=队列中CPU占用的数量/队列中CPU总数。
AutoQueueServer组件12收到调度请求后,可以查询当前多个计算节点队列的作业排队数量、空闲率和/或平均等待时长。
S43,基于队列资源情况和资源请求,从多个计算节点中选取到目标队列。下面通过以下步骤S431-S434说明该步骤的具体的实现方式。
S431,AutoQueueServer组件12可以根据当前多个计算节点队列的空闲率确定处于空闲状态的计算节点队列为空闲队列。空闲状态是指作业无需排队处理,或者,计算节点队列中不存在正在排队的作业的状态。
示例性地,可以设置空闲率的阈值为2%,AutoQueueServer组件12可以查询当前的多个计算节点队列的空闲率是否小于或等于2%,将空闲率小于或等于2%的计算节点队列作为空闲队列。
示例性地,可以设置作业排队数量的阈值为1,AutoQueueServer组件12可以查询当前的多个计算节点队列的作业排队数量是否小于或等于1,将作业排队数量小于或等于1的计算节点队列作为空闲队列。
示例性地,可以设置平均等待时长的阈值为50毫秒,AutoQueueServer组件12可以查询当前的多个计算节点队列的平均等待时长是否小于或等于50毫秒,将平均等待时长小于或持续运行时间等于50毫秒的计算节点队列作为空闲队列。
AutoQueueServer组件12也可以根据作业排队数量、平均等待时长空闲率和/或空闲率的阈值组合确定空闲队列。
示例性地,AutoQueueServer组件12可以查询当前的多个计算节点队列的空闲率是否小于或等于2%,作业排队数量是否小于或等于1,将空闲率小于或等于2%且作业排队数量小于或等于1的计算节点队列作为空闲队列。
S432,在存在多个满足资源请求的空闲队列的情况下,基于空闲节点的空闲率,从多个满足资源请求的空闲队列中选取得到目标队列,目标队列为满足资源请求且空闲率的值满足排序阈值要求的空闲队列,空闲队列为处于空闲状态的计算节点队列。
示例性地,资源请求为“2个计算节点”、“运行时间为5分钟”;存在满足该资源请求的计算节点队列有3个为空闲队列A、B和C,这3个空闲队列的空闲率(CPU占用/CPU总数)的值分别为:2%,0.7%,0.1%,根据空闲率(CPU占用/CPU总数)的值从小到大排序,选择排序最小的空闲率的值为0.1%的计算节点队列C为目标队列。
在存在多个满足资源请求的队列,且多个满足资源请求的队列中不存在空闲队列的情况下,比较多个满足资源请求的队列的队列资源情况,并根据比较结果从多个满足所述资源需求的队列中,选取得到目标队列。
示例性地,空闲率设定的阈值为0.5%,资源请求为“2个计算节点”、“运行时间为5分钟”;在队列A、B和C中存在2个满足资源请求的计算节点队列A和B,但这2个计算节点队列中不存在空闲率小于或等于设定的阈值0.5%的队列,则比较多个满足该资源请求的队列A和B的其它资源情况,包括以下内容之一或组合:作业排队数量、平均等待时长等;根据作业排队数量和/或平均等待时长的值依次排序,选择符合排序要求的队列为目标队列。如果队列B的作业排队数量或平均等待时长小于队列A,则计算节点队列B为目标队列。
S433,在待调度作业包括权限要求的情况下,目标队列为满足待调度作业的资源请求和权限要求的计算节点队列。
具体地,AutoQueueServer组件12查询用户的队列权限;从多个满足待调度作业的资源请求的计算节点队列中获得满足权限要求的计算节点队列作为目标队列。
示例性地,AutoQueueServer组件12查询用户的队列权限,发现满足待调度作业的资源请求的计算节点队列A和B中,只有计算节点队列A满足用户的队列权限,则确定计算节点队列A为目标队列。
S434,AutoQueueServer组件12将目标队列的名称返回给SubmitHook组件11。
示例性地,AutoQueueServer组件12将满足待调度作业的资源请求和/或权限要求的计算节点队列A的名称返回给SubmitHook组件11。
S44,SubmitHook组件11将目标队列名称写入待调度作业中。
示例性地,SubmitHook组件11将目标队列名称A写入待调度作业中,在作业的批处理脚本中设置如下:“#SBATCH–P A#将目标队列名为A写入脚本”。
S45,调度器13根据待调度作业指定目标队列的名称,将待调度作业分配到目标队列。
示例性地,调度器13根据批处理脚本指定的目标队列的名称A,将名为“test”的待调度作业分配到目标队列A。
S46,获取已分配到计算节点队列中的作业的排队时长。
示例性地,AutoQueueServer组件12定时轮询计算节点队列A中的作业“test”,如果该作业“test”没有被执行,处于排队状态,则进行计时,并执行S47;如果该作业“test”已经被执行则结束计时,退出流程。
S47,在排队时长达到时间阈值的情况下,为作业重新分配目标队列。
示例性地,在计算节点队列A中排队的作业“test”指定了自动调度参数AUTO_QUEUE=TRUE,并且排队时长超过了配置的时间阈值(如100毫秒)的情况下,则执行S42-S45进行重新调度;如果找到目标队列为D,则将作业“test”分配到目标队列D后继续执行S46-S47直至作业被执行。
本申请实施例1提供的作业调度方法能够定时轮询长时间排队作业,自动调度拥塞作业,解决作业长时间排队问题。
图5为本申请实施例提供的一种作业调度的装置40,执行如上任意一项实施例所述的作业调度的方法。如图5所示,作业调度的装置40包括:提交拦截组件11、自动队列服务组件12和调度器13,其中提交拦截组件11获取待调度作业;自动队列服务组件12在待调度作业中存在自动调度参数的情况下,查询多个计算节点队列的队列资源情况,并基于队列资源情况,从多个计算节点队列中选取到目标队列;调度器13将待调度作业分配到目标队列。
作业调度的装置40可以通过软件实现,或者可以通过硬件实现。示例性的,接下来介绍作业调度的装置40的实现方式。模块作为软件功能单元的一种举例,作业调度的装置40可以包括运行在计算实例上的代码。其中,计算实例可以是物理主机(计算设备)、虚拟机、容器等计算设备中的至少一种。进一步地,上述计算设备可以是一台或者多台。例如,作业调度的装置40可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该应用程序的多个主机/虚拟机/容器可以分布在相同的region中,也可以分布在不同的region中。用于运行该代码的多个主机/虚拟机/容器可以分布在相同的AZ中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。
同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个VPC中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内。同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。
模块作为硬件功能单元的一种举例,作业调度的装置40可以包括至少一个计算设备,如服务器等。或者,作业调度的装置40也可以是利用ASIC实现、或PLD实现的设备等。其中,上述PLD可以是CPLD、FPGA、GAL或其任意组合实现。
作业调度的装置40包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。作业调度的装置40包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,作业调度的装置40包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。
图6是本申请实施例提供的作业调度的系统的示意图。如图6所示,该系统包括至少一个作业调度的装置40和多个计算节点队列51。作业调度的装置40用于执行如上任意一项实施例所述的作业调度的方法,将所述待调度作业分配到所述多个计算节点队列51中的目标队列。作业调度的装置70可以通过软件实现,或者可以通过硬件实现。
图7为本申请提供的一种电子设备示意图。如图7所示,电子设备100包括:总线102、处理器104、存储器106和通信接口108。处理器104、存储器106和通信接口108之间通过总线102通信。电子设备100可以是服务器或终端设备。应理解,本申请不限定电子设备100中的处理器、存储器的个数。
总线102可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线102可包括在电子设备100各个部件(例如,存储器106、处理器104、通信接口108)之间传送信息的通路。
处理器104可以包括中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
存储器106可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器106还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard diskdrive,HDD)或固态硬盘(solid state drive,SSD)。
存储器106中存储有可执行的程序代码,处理器104执行该可执行的程序代码以分别实现前述提交拦截组件11、自动队列服务组件12和调度器13的功能,也即,存储器106上存有用于执行作业调度的方法的指令。
或者,存储器106中存储有可执行的代码,处理器104执行该可执行的代码以分别实现前述作业调度的装置40的功能,从而实现本申请实施例提供的作业调度的方法。也即,存储器106上存有用于执行本申请实施例提供的作业调度的方法的指令。
通信接口108使用例如但不限于网络接口卡、收发器一类的收发模块,来实现电子设备100与其他设备或通信网络之间的通信。
本申请实施例提供的电子设备如手机、电脑、服务器、智能家居、车辆等,该电子设备可以执行上述方法实施例所示的方案,其实现原理以及有益效果类似,此处不再进行赘述。
图8为本申请实施例提供的一种电子设备集群示意图。该电子设备集群包括至少一台电子设备。该电子设备可以是服务器,例如是中心服务器、边缘服务器,或者是本地数据中心中的本地服务器。在一些实施例中,电子设备也可以是台式机、笔记本电脑或者智能手机等终端设备。
如图8所示,所述电子设备集群包括至少一个电子设备100。电子设备集群中的一个或多个电子设备100中的存储器106中可以存有相同的用于执行本申请实施例提供的作业调度的方法或指令。
在一些可能的实现方式中,该电子设备集群中的一个或多个电子设备100的存储器106中也可以分别存有用于执行本申请实施例提供的作业调度的方法的部分指令。换言之,一个或多个电子设备100的组合可以共同执行本申请实施例提供的作业调度的方法的指令。
需要说明的是,电子设备集群中的不同的电子设备100中的存储器106可以存储不同的指令,分别用于执行作业调度的装置40的部分功能。也即,不同的电子设备100中的存储器106存储的指令可以实现提交拦截组件11、自动队列服务组件12和调度器13中的一个或多个模块的功能。
在一些可能的实现方式中,电子设备集群中的一个或多个电子设备可以通过网络连接。其中,所述网络可以是广域网或局域网等等。
图9为本申请提供的一种电子设备集群可能的实现方式示意图。如图9所示,两个电子设备100A和100B之间通过网络进行连接。具体地,通过各个电子设备中的通信接口与所述网络进行连接。在这一类可能的实现方式中,电子设备100A中的存储器106中存有执行提交拦截组件11和自动队列服务组件12的功能的指令。同时,电子设备100B中的存储器106中存有执行调度器13的功能的指令。
图9所示的电子设备集群之间的连接方式可以是考虑到本申请提供的作业调度的方法需要大量地存储数据和建立、优化模型,因此考虑将作业调度模型11实现的功能交由电子设备100A执行。
应理解,图9中示出的电子设备100A的功能也可以由多个电子设备100完成。同样,电子设备100B的功能也可以由多个电子设备100完成。
本申请实施例还提供了另一种电子设备集群。该电子设备集群中各电子设备之间的连接关系可以类似的参考图9所述电子设备集群的连接方式。不同的是,该电子设备集群中的一个或多个电子设备100中的存储器106中可以存有相同的用于执行作业调度的方法的指令。
在一些可能的实现方式中,该电子设备集群中的一个或多个电子设备100的存储器106中也可以分别存有用于执行作业调度的方法的部分指令。换言之,一个或多个电子设备100的组合可以共同执行用于执行作业调度的方法的指令。
需要说明的是,电子设备集群中的不同的电子设备100中的存储器106可以存储不同的指令,用于执行作业调度的系统的部分功能。也即,不同的电子设备100中的存储器106存储的指令可以实现作业调度的装置40的一个或多个装置的功能。
本申请实施例提供了一种服务器,所述服务器用于执行上述作业调度方法。
本申请实施例提供的服务器如机架服务器、刀片服务器、塔式服务器等,或包含多个服务器节点的机柜服务器或设备柜等,该服务器可以执行上述方法实施例所示的方案,其实现原理以及有益效果类似,此处不再进行赘述。
本申请实施例提供了一种服务器集群,其特征在于,包括管理节点和多个计算节点队列,所述管理节点用于执行上述作业调度方法。
本申请提供一种可读存储介质,所述可读存储介质上存储有计算机程序;所述计算机程序用于实现如上述任意实施例所述的作业调度方法。
本申请实施例提供一种计算机程序产品,所述计算机程序产品包括指令,当所述指令被执行时,使得计算机执行上述作业调度方法。
实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一可读取存储器中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储器(存储介质)包括:只读存储器(英文:read-only memory,缩写:ROM)、RAM、快闪存储器、硬盘、固态硬盘、磁带(英文:magnetic tape)、软盘(英文:floppydisk)、光盘(英文:optical disc)及其任意组合。
可以理解的是,本申请的实施例中的处理器可以是中央处理单元(centralprocessing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
本申请的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、只读存储器(read-only memory,ROM)、可编程只读存储器(programmable rom,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。
Claims (10)
1.一种作业调度方法,其特征在于,所述方法包括:
获取待调度作业;
在所述待调度作业中存在自动调度参数的情况下,查询多个计算节点队列的队列资源情况,并基于所述队列资源情况,从多个计算节点队列中选取到目标队列;
将所述待调度作业分配到所述目标队列。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取已分配到计算节点队列中的作业的排队时长;
在排队时长达到时间阈值的情况下,则为所述作业重新分配目标队列。
3.根据权利要求1所述的方法,其特征在于,所述在所述待调度作业中存在自动调度参数的情况下,查询多个计算节点队列的队列资源情况,并基于所述队列资源情况,从多个计算节点队列中选取到目标队列,包括:
在所述待调度作业中存在自动调度参数的情况下,解析得到所述待调度作业的资源请求,并查询多个计算节点队列的队列资源情况;
基于所述队列资源情况和所述资源请求,从多个所述计算节点中选取到目标队列。
4.根据权利要求3所述的方法,其特征在于,所述资源请求包括所述待调度作业需要的CPU的个数和/或节点个数。
5.根据权利要求3所述的方法,其特征在于,所述待调度作业包括权限要求,所述目标队列为满足所述待调度作业的资源请求和权限要求的计算节点队列。
6.根据权利要求3-5任意一项所述的方法,其特征在于,所述队列资源情况包括计算节点队列的空闲率,所述基于所述队列资源情况和所述资源请求,从多个所述计算节点中选取到目标队列,包括:
在存在多个满足所述资源请求的空闲队列的情况下,基于所述空闲节点的空闲率,从多个满足所述资源请求的空闲队列中选取到目标队列,所述目标队列为满足所述资源请求且空闲率最大的空闲队列,所述空闲队列为处于空闲状态的计算节点队列。
7.根据权利要求3-5任意一项所述的方法,其特征在于,所述基于所述队列资源情况和所述资源请求,从多个计算节点队列中选取到目标队列,包括:
在存在多个满足所述资源请求的队列,且多个满足所述资源请求的队列中不存在空闲队列的情况下,比较多个满足所述资源请求的队列的队列资源情况,并根据比较结果从多个满足所述资源请求的队列中,选取得到目标队列。
8.根据权利要求7所述的方法,其特征在于,所述队列资源情况包括作业排队数量、作业排队时长或者空闲率中的一种或多种。
9.一种服务器,其特征在于,所述服务器用于执行如权利要求1至8中任一项所述的方法。
10.一种服务器集群,其特征在于,包括管理节点和多个计算节点队列,所述管理节点用于执行如权利要求1至8中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2023100177458 | 2023-01-06 | ||
CN202310017745 | 2023-01-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116233022A true CN116233022A (zh) | 2023-06-06 |
Family
ID=86579991
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310086408.4A Pending CN116233022A (zh) | 2023-01-06 | 2023-02-07 | 一种作业调度方法、服务器及服务器集群 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116233022A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117519952A (zh) * | 2024-01-04 | 2024-02-06 | 浙江大华技术股份有限公司 | 云平台任务调度方法、计算机设备和存储介质 |
-
2023
- 2023-02-07 CN CN202310086408.4A patent/CN116233022A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117519952A (zh) * | 2024-01-04 | 2024-02-06 | 浙江大华技术股份有限公司 | 云平台任务调度方法、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6711607B1 (en) | Dynamic scheduling of task streams in a multiple-resource system to ensure task stream quality of service | |
CN107688492B (zh) | 资源的控制方法、装置和集群资源管理系统 | |
CN109564528B (zh) | 分布式计算中计算资源分配的系统和方法 | |
JP3301648B2 (ja) | サービス・アクセス・ポイントに接続を分散する通信制御システム | |
US8627325B2 (en) | Scheduling memory usage of a workload | |
WO2022068697A1 (zh) | 任务调度方法及装置 | |
CN110221920B (zh) | 部署方法、装置、存储介质及系统 | |
CN109766172B (zh) | 一种异步任务调度方法以及装置 | |
CN112783659B (zh) | 一种资源分配方法、装置、计算机设备及存储介质 | |
US20160127382A1 (en) | Determining variable wait time in an asynchronous call-back system based on calculated average sub-queue wait time | |
CN111338785A (zh) | 资源调度方法及装置、电子设备、存储介质 | |
CN107430526B (zh) | 用于调度数据处理的方法和节点 | |
CN109002364B (zh) | 进程间通信的优化方法、电子装置以及可读存储介质 | |
CN112749002A (zh) | 一种集群资源动态管理的方法和装置 | |
CN111338779A (zh) | 资源分配方法、装置、计算机设备和存储介质 | |
CN116233022A (zh) | 一种作业调度方法、服务器及服务器集群 | |
CN111625339A (zh) | 集群资源调度方法、装置、介质和计算设备 | |
CN114721818A (zh) | 一种基于Kubernetes集群的GPU分时共享方法和系统 | |
CN117076133B (zh) | 云游戏平台异构资源分配方法、计算机装置及存储介质 | |
US10979359B1 (en) | Polling resource management system | |
CN116820769A (zh) | 一种任务分配方法、装置及系统 | |
CN114448909B (zh) | 基于ovs的网卡队列轮询方法、装置、计算机设备及介质 | |
CN114489978A (zh) | 资源调度方法、装置、设备及存储介质 | |
US8869171B2 (en) | Low-latency communications | |
CN115658292A (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 |