CN117251274A - 作业调度方法、装置、电子设备及存储介质 - Google Patents
作业调度方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117251274A CN117251274A CN202311515107.5A CN202311515107A CN117251274A CN 117251274 A CN117251274 A CN 117251274A CN 202311515107 A CN202311515107 A CN 202311515107A CN 117251274 A CN117251274 A CN 117251274A
- Authority
- CN
- China
- Prior art keywords
- job
- sub
- preset
- jobs
- execution
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 81
- 238000012544 monitoring process Methods 0.000 claims description 48
- 230000006870 function Effects 0.000 claims description 18
- 238000004806 packaging method and process Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 9
- 238000012163 sequencing technique Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 6
- 125000004122 cyclic group Chemical group 0.000 abstract description 2
- 238000012545 processing Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 9
- 238000013515 script Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 6
- 238000010276 construction Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 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/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/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供了一种作业调度方法、装置、电子设备和存储介质,涉及计算机技术领域;该方法包括:获取待提交的作业,采用目标提交指令将作业添加至预设执行队列,其中,目标提交命令是在原生提交命令上添加作业待提交的迭代次数生成的,将作业按照迭代次数划分为多个子作业,采用目标提交命令将多个子作业提交至预设作业调度系统,采用目标记录命令获取子作业在预设作业调度系统中的执行状态信息,将子作业对应执行状态信息与作业关联,生成作业的执行结果。本发明将作业按迭代次数划分为子作业并提交,满足用户重复提交同一作业的需求,实现作业迭代之间的关联,满足用户提交循环作业以及作业重复提交需求,提高作业调度的可用性。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种作业调度方法、装置、电子设备及存储介质。
背景技术
随着人工智能技术的快速发展,Slurm(Simple Linux Utility for ResourceManagement)是一种开源的、具有容错性和高度可扩展大型和小型Linux集群资源管理的作业调度系统,被世界范围内的超级计算机和计算集群广泛采用,所有需运行的作业无论是用于程序调试还是业务计算均必须通过命令提交,提交后可以利用相关命令查询作业状态等,其中,sbatch命令可以用于提交批处理作业,sacct命令可以用于查看作业历史信息,因此,Slurm作业调度系统最常使用sbatch命令提交作业脚本,使用sacct命令统计作业的执行结果。
目前,用户每次待提交的作业都需要新建一个作业脚本后运行sbatch命令提交,然而,在用户需要对同一个作业进行多次重复提交的场景下,即使每次使用同一个作业脚本进行作业提交,sbatch命令都会将上述作业当做独立的作业进行提交,sacct命令统计时也就无法对重复作业进行有效关联,导致用户重复执行作业的调度效率低,且作业执行结果没有任何有效关联,影响作业执行情况的可视效果,进一步影响作业调度系统的可用性。
发明内容
本发明鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者解决上述问题的一种作业调度方法、一种作业调度装置、一种电子设备和一种存储介质。
为了解决上述问题,在本发明的第一方面,本发明实施例公开了一种作业调度方法,所述方法包括:
获取待提交的作业,采用所述目标提交指令将所述作业添加至预设执行队列,其中,所述目标提交命令是在原生提交命令上添加所述作业待提交的迭代次数生成的;
将所述作业按照所述迭代次数划分为多个子作业,采用所述目标提交命令将多个所述子作业提交至预设作业调度系统;
采用目标记录命令获取所述子作业在所述预设作业调度系统中的执行状态信息,将所述子作业对应执行状态信息与所述作业关联,生成所述作业的执行结果。
可选地,所述获取待提交的作业,采用所述目标提交指令将所述作业添加至预设执行队列,包括:
预先创建先入先出的预设执行队列;
获取待提交的作业,根据作业的预设提交时间顺序对所述作业进行排序;
采用所述目标提交指令将所述作业依序添加至所述预设执行队列。
可选地,所述将所述作业按照所述迭代次数划分为多个子作业,采用所述目标提交命令将多个所述子作业提交至预设作业调度系统,包括:
在所述预设执行队列中将所述作业按照所述迭代次数进行划分,生成所述迭代次数对应数量的子作业;
将每个所述作业对应子作业按照迭代次数从小到大的顺序依次排序,并存储至预设有序链表,其中,所述预设执行队列包括指向所述子作业所在预设有序链表的指针,所述指针用于定位所述子作业所在的预设有序链表。
可选地,所述预设执行队列还包括预先创建的监控线程,所述在所述预设执行队列中将所述作业按照所述迭代次数进行划分,生成所述迭代次数对应数量的子作业之前,还包括:
采用所述监控线程监测所述预设队列中的作业存在状态;
响应于所述监控线程的监测作业存在状态信号,在所述预设执行队列中存在至少一个作业的情况下,控制预设执行线程启动。
可选地,所述采用所述目标提交命令将多个所述子作业提交至预设作业调度系统,包括:
采用所述预设执行线程对所述预设执行队列进行解析,得到指向所述子作业所在预设有序链表的指针,并定位所述子作业所在的预设有序链表;
遍历所述子作业所在的预设有序链表,采用所述目标提交命令将多个所述子作业提交至预设作业调度系统。
可选地,所述遍历所述子作业所在的预设有序链表,采用所述目标提交命令将多个所述子作业提交至预设作业调度系统,包括:
获取预设有序链表中所述子作业和所述子作业对应执行参数,其中,所述执行参数包括所述子作业对应作业名称和迭代次数;
将所述子作业对应作业名称和所述迭代次数封装至所述目标提交命令;
采用封装后的所述目标提交命令将多个所述子作业提交至预设作业调度系统。
可选地,所述采用封装后的所述目标提交命令将多个所述子作业提交至预设作业调度系统之后,还包括:
接收所述预设作业调度系统返回的子作业标识;
采用原生查询命令获取所述子作业标识对应的排队提交情况;
记录所述子作业的排队提交情况至预设数据库表。
可选地,所述记录所述子作业的排队提交情况至预设数据库表之后,还包括:
在所述子作业提交完成的情况下,定时监测所述子作业的执行状态,生成所述子作业的执行状态信息;
将所述子作业的执行状态信息更新至预设数据库表。
可选地,所述在所述子作业提交完成的情况下,定时监测所述子作业的执行状态,生成所述子作业的执行状态信息之前,还包括:
预先根据所述子作业的排队提交情况设置所述子作业的定时任务;其中,所述定时任务用于定时获取所述子作业的执行状态;
将所述定时任务封装至哈希时间轮的定时函数;其中,所述哈希时间轮是响应于待提交的作业创建的;
可选地,所述在所述子作业提交完成的情况下,定时监测所述子作业的执行状态,生成所述子作业的执行状态信息,包括:
在所述子作业提交完成的情况下,根据所述哈希时间轮的定时函数,定时监测所述子作业的执行状态;
分别生成待提交的全部所述子作业的执行状态信息。
可选地,所述在所述子作业提交完成的情况下,根据所述哈希时间轮的定时函数,定时监测所述子作业的执行状态,生成所述子作业的执行状态信息之后,还包括:
若所述子作业的执行状态为完成状态,删除所述哈希时间轮中所述子作业的定时任务。
可选地,所述在所述子作业提交完成的情况下,根据所述哈希时间轮的定时函数,定时监测所述子作业的执行状态,生成所述子作业的执行状态信息之后,还包括:
若待提交的全部所述子作业的执行状态均为完成状态,将所述预设执行队列中的作业删除。
可选地,所述采用目标记录命令获取所述子作业在所述预设作业调度系统中的执行状态信息,包括:
预先在原生记录命令上添加查询参数,生成目标记录命令;
采用所述目标记录命令从预设数据库表获取所述子作业在所述预设作业调度系统中的执行状态信息。
可选地,所述查询参数包括所述子作业对应作业名称,所述采用所述目标记录命令从预设数据库表获取所述子作业在所述预设作业调度系统中的执行状态信息,包括:
根据所述目标记录命令中所述查询参数的作业名称,从预设数据库表查询所述作业名称对应的所述子作业;
获取所述子作业的执行状态信息,其中,所述执行状态信息包括所述子作业的执行状态和输出结果。
可选地,所述将所述子作业对应执行状态信息与所述作业关联,生成所述作业的执行结果,包括:
将所述子作业对应执行状态信息与所述作业关联,生成树形结构体;其中,所述树形结构体包括根节点和叶子节点,所述根节点包括所述作业的参数信息,所述叶子节点包括所述作业对应所述子作业的参数信息;
将所述树形结构体存储为所述作业的执行结果。
可选地,所述将所述树形结构体存储为所述作业的执行结果之后,还包括:
将所述作业的执行结果对应树形结构体展示至预设平台,以使用户根据所述树形结构体查看所述作业。
可选地,所述获取待提交的作业,采用所述目标提交指令将所述作业添加至预设执行队列之前,还包括:
检测所述作业是否存在预设待提交的迭代次数;
若是,获取原生提交命令,将所述迭代次数封装至所述原生提交命令,生成用于提交所述作业的目标提交命令;
否则,采用所述原生提交指令将所述作业添加至预设执行队列。
在本发明的第二方面,本发明实施例还公开了一种作业调度装置,包括:
获取作业模块,用于获取待提交的作业,采用所述目标提交指令将所述作业添加至预设执行队列,其中,所述目标提交命令是在原生提交命令上添加所述作业待提交的迭代次数生成的;
作业提交模块,用于将所述作业按照所述迭代次数划分为多个子作业,采用所述目标提交命令将多个所述子作业提交至预设作业调度系统;
生成结果模块,用于采用目标记录命令获取所述子作业在所述预设作业调度系统中的执行状态信息,将所述子作业对应执行状态信息与所述作业关联,生成所述作业的执行结果。
在本发明的第三方面,本发明实施例公开了一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的作业调度方法的步骤。
在本发明的第四方面,本发明实施例公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的作业调度方法的步骤。
本发明实施例包括以下优点:
本发明实施例提供的作业调度方法,通过获取待提交的作业,采用目标提交指令将作业添加至预设执行队列,其中,目标提交命令是在原生提交命令上添加作业待提交的迭代次数生成的,将作业按照迭代次数划分为多个子作业,采用目标提交命令将多个子作业提交至预设作业调度系统,采用目标记录命令获取子作业在预设作业调度系统中的执行状态信息,将子作业对应执行状态信息与作业关联,生成作业的执行结果。本发明实施例通过改进目标提交指令和目标记录命令,将作业按照迭代次数划分为多个子作业,采用目标提交命令提交至预设作业调度系统,满足用户重复提交同一作业的需求,并且子作业是在作业的基础上依据迭代次数划分得到的,通过目标记录命令将子作业对应执行状态信息与作业关联,实现关联重复提交的作业,增加作业迭代之间的关联关系构建反馈,可以有效支撑用户提交循环作业以及作业重复提交需求场景,进一步提高了作业调度的可用性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种作业调度方法的步骤流程图;
图2是图1提供的本发明实施例的一种作业调度方法的步骤101的流程图;
图3是图1提供的本发明实施例的一种作业调度方法的步骤102的流程图;
图4是图1提供的本发明实施例的一种作业调度方法的步骤103的流程图;
图5是本发明实施例提供的另一种作业调度方法的步骤流程图;
图6是本发明实施例提供的一种作业调度装置的结构框图;
图7是本发明实施例提供的一种电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本发明而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本发明所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
参照图1,示出了本发明的一种作业调度方法实施例的步骤流程图,所述作业调度方法具体可以包括如下步骤:
步骤101,获取待提交的作业,采用目标提交指令将作业添加至预设执行队列,其中,目标提交命令是在原生提交命令上添加作业待提交的迭代次数生成的。
本发明实施例中,控制端根据用户提交作业的请求,通过发送作业提交指令给高性能计算集群作业调度系统,高性能计算集群作业调度系统能够进行批处理作业,高性能计算集群作业调度系统Slurm中使用原生提交命令sbatch命令提交作业脚本,使用原生记录命令sacct命令统计作业的执行结果,因此,本实施例为满足用户重复提交同一作业并作业之间相互关联的作业处理需求,控制端通过对原生提交指令和原生记录指令进行改进,实现有效支撑用户所需的循环作业及作业重复提交需求场景。
具体的,控制端获取待提交的作业,采用目标提交指令将作业添加至预设执行队列,其中,待提交的作业可以是CPU需执行的任务作业或者其他任务,在此不作具体限定,目标提交指令在原生提交命令上添加作业待提交的迭代次数生成的,作业待提交的迭代次数为用户需要重复提交同一作业的重复次数,可以根据用户重复提交作业的需求预先设定,在此不作具体限定。本实施例中目标提交指令可以通过在包含原生提交命令sbatch的参数的基础上,扩充迭代次数参数拼装而成的。
本发明实施例中,批处理作业常采用高性能计算集群作业调度系统Slurm中原生sbatch命令提交,提交后立即返回命令行控制端,用户可进行其它操作,使用sbatch命令提交作业脚本,作业被调度运行后,在所分配的首个节点上执行作业脚本,作业脚本中也可使用srun命令加载作业任务,提交时采用的命令行终端终止,也不影响作业运行。
需要说明的是,目标提交指令通过在包含原生提交命令sbatch的参数的基础上,扩充迭代次数参数拼装而成的,当用户使用目标提交指令提交作业时,若只用到原生提交指令的原有参数,则无需对原生提交命令的原有参数进行解析,直接忽略迭代次数参数,透传原生提交指令的原有参数即可,目标提交指令的拼装和解析过程在此不再一一赘述。
本实施例中预设执行队列可以是自动创建的一个全局的FIFO执行队列,队列中的元素为特定结构体类型,包括结构体标识,用于存放用户ID和作业名称,控制端采用目标提交指令将作业按照先入先出的时间顺序添加至预设执行队列,便于按时序提交作业。
步骤102,将作业按照迭代次数划分为多个子作业,采用目标提交命令将多个子作业提交至预设作业调度系统。
本发明实施例中,控制端在预设执行队列中将作业按照迭代次数划分为多个子作业,将用户提交的作业按照迭代次数,划分为若干子作业,将每个子作业按照迭代数字从小到大的顺序存储到一个有序链表中,采用目标提交命令将多个子作业提交至预设作业调度系统,其中,有序链表中的元素类型为字符串类型,元素值可以为作业名称_迭代次数,从而实现快速重复提交同一个作业,避免用户在重复提交作业时需要一个个提交从而耗时长的问题。需要说明的是,预设执行队列和有序链表存在映射关系,控制端针对每个作业都构造一个有序链表,用于存储子作业信息,便于顺序依次提交子作业至预设作业调度系统。
步骤103,采用目标记录命令获取子作业在预设作业调度系统中的执行状态信息,将子作业对应执行状态信息与作业关联,生成作业的执行结果。
本发明实施例中,当子作业提交至预设作业调度系统后,需要对各个子作业进行记录,为保证作业和子作业信息关联,采用目标记录命令获取子作业在预设作业调度系统中的执行状态信息,将子作业对应执行状态信息与作业关联,生成作业的执行结果。其中,目标记录命令是在原生记录命令的基础上封装查询参数得到的,以便于用户使用改进后的目标记录命令查询作业的执行情况时,能够直观呈现出作业和迭代子作业之间的关系、作业的执行状态以及每次迭代的执行状态及作业输出结果等,解决原生sacct命令无法查看到作业和子作业之间的关系的问题。
需要说明的是,目标记录命令可以是在原生记录命令sacct上封装一个查询参数例如query参数,预先生成得到的,用于直接从子作业记录数表中按照作业名称自动查询出该作业每次迭代产生的子作业的执行状态以及作业输出结果等相关信息。
本发明实施例提供的作业调度方法,通过获取待提交的作业,采用目标提交指令将作业添加至预设执行队列,其中,目标提交命令是在原生提交命令上添加作业待提交的迭代次数生成的,将作业按照迭代次数划分为多个子作业,采用目标提交命令将多个子作业提交至预设作业调度系统,采用目标记录命令获取子作业在预设作业调度系统中的执行状态信息,将子作业对应执行状态信息与作业关联,生成作业的执行结果。本发明实施例通过改进的目标提交指令和目标记录命令,将作业按照迭代次数划分为多个子作业,采用目标提交命令提交至预设作业调度系统,满足用户重复提交同一作业的需求,并且子作业是在作业的基础上依据迭代次数划分得到的,通过目标记录命令将子作业对应执行状态信息与作业关联,实现关联重复提交的作业,增加作业迭代之间的关联关系构建反馈,可以有效支撑用户提交循环作业以及作业重复提交需求场景,进一步提高了作业调度的可用性。
进一步的,参照图2,示出了图1提供的作业调度方法的步骤101的流程图,该方法与本发明的第一实施例提供的作业调度方法基本相同,步骤101获取待提交的作业,采用所述目标提交指令将所述作业添加至预设执行队列,可以包括:
步骤201,预先创建先入先出的预设执行队列;
步骤202,获取待提交的作业,根据作业的预设提交时间顺序对作业进行排序;
步骤203,采用目标提交指令将作业依序添加至预设执行队列。
需要说明的是,上述步骤201至步骤203中,先入先出的预设执行队列是控制端预先创建生成的,用于按照时间顺序存放待提交的作业,从而在控制端获取待提交的作业后,先依据作业的预设提交时间顺序对作业进行排序,并采用目标提交指令将作业依序添加至预设执行队列。其中,预设提交时间顺序可以是用户预先设定的定时提交作业的时间,也可以是用户实时提交作业的时间顺序,在此不作具体限定。
本发明实施例通过先入先出的预设执行队列存放用户提交的作业,并且将作业依序添加至预设执行队列,便于有序提交作业,提高作业调度效率和作业调度系统的高可用。
进一步的,参照图3,示出了图1提供的作业调度方法的步骤102的流程图,该方法与本发明的第一实施例提供的作业调度方法基本相同,步骤102将所述作业按照所述迭代次数划分为多个子作业,采用所述目标提交命令将多个所述子作业提交至预设作业调度系统,可以包括:
步骤301,在预设执行队列中将作业按照迭代次数进行划分,生成迭代次数对应数量的子作业;
步骤302,将每个作业对应子作业按照迭代次数从小到大的顺序依次排序,并存储至预设有序链表。
其中,预设执行队列包括指向子作业所在预设有序链表的指针,指针用于定位子作业所在的预设有序链表。
步骤303,采用预设执行线程对预设执行队列进行解析,得到指向子作业所在预设有序链表的指针,并定位子作业所在的预设有序链表;
步骤304,遍历子作业所在的预设有序链表,采用目标提交命令将多个子作业提交至预设作业调度系统。
本发明实施例上述步骤301至步骤302中,为了满足用户重复提交同一作业的需求,在预设执行队列中将作业按照迭代次数进行划分,生成迭代次数对应数量的子作业,其中,可以将每个作业按照迭代次数定义为迭代子作业,按照迭代编号排序,并分配到一个有序链表中,供执行线程读取并顺序执行。
需要说明的是,预设执行队列的结构体类型中除了作业名称和参数外,还包括指向子作业所在预设有序链表的指针,指针用于定位子作业所在的预设有序链表,便于快速定位子作业并按顺序提交。
本发明实施例通过将每个作业按照迭代次数划分为子作业且按照从小到大的迭代次数顺序依次排序,并存储至预设有序链表,以使快速定位到作业对应的子作业,实现快速调度并提交子作业。
具体的,预设执行队列还包括预先创建的监控线程,步骤301在预设执行队列中将作业按照迭代次数进行划分,生成迭代次数对应数量的子作业之前,还可以包括:
采用监控线程监测预设队列中的作业存在状态;
响应于监控线程的监测作业存在状态信号,在预设执行队列中存在至少一个作业的情况下,控制预设执行线程启动。
需要说明的是,预设执行队列还包括预先创建的监控线程,监控线程是控制端为该全局的预设执行队列配置的一个全局监控的线程,用于监控预设队列中是否有待提交的作业,因此,采用监控线程监测预设队列中的作业存在状态,响应于监控线程的监测作业存在状态信号,在预设执行队列中存在至少一个作业的情况下,控制预设执行线程启动,作业存在状态信号包括预设执行队列中存在至少一个作业和队列为空不存在待提交的作业两种状态信号。
本实施例中预设执行线程是根据队列中存在的待提交作业触发创建的,用于从FIFO队列中顺序取出每一个子作业元素,解析出相对应的作业名称、用户ID、作业执行参数、作业脚本路径以及指向子作业所对应的有序链表的指针,依据该指针定位到子作业所在的有序链表。
具体的,上述步骤303至步骤304中,采用预设执行线程对预设执行队列进行解析,得到指向子作业所在预设有序链表的指针,并定位子作业所在的预设有序链表,遍历子作业所在的预设有序链表,采用目标提交命令将多个子作业提交至预设作业调度系统。
本发明实施例中,预设执行线程用于并行处理子作业,为实现快速定位子作业并提交至作业调度系统,预设执行线程首先对预设执行队列进行解析,解析出预设执行队列的结构体元素,得到指向子作业所在预设有序链表的指针,并依据指针指示的子作业所在有序链表的存储地址,定位子作业所在的预设有序链表。
需要说明的是,为实现短时间快速、高效的提交子作业,执行线程循环遍历子作业有序链表,向Slurm顺序提交子作业,避免遗漏子作业,需要说明的是,为进一步提高作业调度的有效性,可以增加检验进程,用于在提交子作业后检验有序链表中是否存在未提交的子作业。
本发明实施例中通过预设执行线程定位子作业所在的预设有序链表,并采用目标提交命令将多个子作业提交至预设作业调度系统,实现快速定位子作业并按顺序提交,进一步提高作业调度效率。
具体的,步骤遍历子作业所在的预设有序链表,采用目标提交命令将多个子作业提交至预设作业调度系统具体可以包括以下步骤:
首先,获取预设有序链表中所述子作业和所述子作业对应执行参数,其中,所述执行参数包括所述子作业对应作业名称和迭代次数;
其次,将所述子作业对应作业名称和所述迭代次数封装至所述目标提交命令;
其次,采用封装后的所述目标提交命令将多个所述子作业提交至预设作业调度系统。
需要说明的是,上述步骤中执行线程循环遍历子作业有序链表,采用目标提交命令向Slurm顺序提交子作业的具体过程如下:执行线程首先解析有序链表中的每一个元素,获取到子作业的相关执行参数,执行参数可以包括子作业对应作业名称和迭代次数,拼装出可执行的目标提交命令,比如,sbatch -N1 --iterator 3 /home/zb/job1_1.sh,从而自动执行拼装出的目标提交命令,将其提交到Slurm去分配资源调度执行。
具体的,步骤采用封装后的所述目标提交命令将多个所述子作业提交至预设作业调度系统之后,还可以包括:
接收所述预设作业调度系统返回的子作业标识;
采用原生查询命令获取所述子作业标识对应的排队提交情况;
记录所述子作业的排队提交情况至预设数据库表。
本发明实施例中,采用封装后的目标提交命令将多个子作业提交至预设作业调度系统,预设作业调度系统会返回一个作业ID,控制端通过接收预设作业调度系统返回的子作业标识,能够获取子作业标识对应的排队提交情况,为便于记录子作业的相关信息,可以采用目标记录命令记录子作业的排队提交情况至预设数据库表。
需要说明的是,预设数据库表可以是预先创建的任意数据库的存储表,在此不作具体限定,原生查询命令是Slurm的squeue命令,可以查看到作业的排队提交情况,目标记录命令则是原生记录命令封装查询参数得到的,参照前序第一实施例所述,在此不再赘述。
本发明实施例通过对Slurm原生的sbatch命令进行封装,增加迭代次数处理逻辑,同时兼容原生sbatch命令的所有参数,可有效支撑用户循环作业及作业重复提交需求场景,使用改进后的sbatch命令提交批处理作业脚本时,一旦配置了迭代次数参数,后续就会按照用户指定的迭代次数自动调用原生的sbatch命令向Slurm提交批处理作业,同时,也会自动记录每次迭代在Slurm中产生的新作业ID以及作业执行结果,方便用户查看。
具体的,步骤记录所述子作业的排队提交情况至预设数据库表之后,还可以包括:
在所述子作业提交完成的情况下,定时监测所述子作业的执行状态,生成所述子作业的执行状态信息;
将所述子作业的执行状态信息更新至预设数据库表。
本发明实施例中,为在子作业提交后实时获取子作业的状态,在子作业提交完成的情况下,定时监测子作业的执行状态,并生成子作业的执行状态信息,执行状态信息用于表征子作业的执行情况,可以包括作业名称、作业的提交时间、子作业名称、Slurm返回的作业ID、子作业的提交时间、子作业的运行状态、子作业输出路径等,及时将子作业的执行状态信息更新至预设数据库表,便于查询预设数据库表获取作业执行情况。
具体的,步骤在所述子作业提交完成的情况下,定时监测所述子作业的执行状态,生成所述子作业的执行状态信息之前,还可以包括:
预先根据所述子作业的排队提交情况设置所述子作业的定时任务;其中,所述定时任务用于定时获取所述子作业的执行状态;
将所述定时任务封装至哈希时间轮的定时函数;其中,所述哈希时间轮是响应于待提交的作业创建的;
本发明实施例中响应于待提交的作业自动创建一个全局的哈希时间轮的定时器,用于定时获取子作业的执行状态,具体可以通过设置子作业的定时任务,将定时任务封装至哈希时间轮的定时函数进行定时监控,需要说明的是,子作业的定时同步逻辑加入至哈希时间轮后即可实现定时监控,并且哈希时间轮的时间格跨度以及时间格子数可以在配置文件中按需配置,本实施例默认100ms和512格子数,在此不作具体限定。
具体的,步骤在所述子作业提交完成的情况下,定时监测所述子作业的执行状态,生成所述子作业的执行状态信息具体可以包括以下步骤:
在子作业提交完成的情况下,根据哈希时间轮的定时函数,定时监测子作业的执行状态;
分别生成待提交的全部子作业的执行状态信息。
上述步骤中,需要说明的是,将子作业的定时同步逻辑封装为哈希时间轮的执行函数,提交到全局哈希时间轮中定时执行,以使在子作业提交完成的情况下,根据哈希时间轮的定时函数定时监测子作业的执行状态,并且分别生成待提交的全部子作业的执行状态信息。
具体的,步骤在所述子作业提交完成的情况下,根据所述哈希时间轮的定时函数,定时监测所述子作业的执行状态,生成所述子作业的执行状态信息之后,还包括:
若子作业的执行状态为完成状态,删除所述哈希时间轮中所述子作业的定时任务。
需要说明的是,针对成功提交的子作业,定时从Slurm中获取到其执行情况,包括执行状态、执行完成后的作业输出等并更新到预设数据库表,若子作业的执行状态为完成状态,删除哈希时间轮中子作业的定时任务,即无需再监测已完成提交的作业,节省哈希时间轮的定时任务资源,避免资源浪费。
具体的,步骤所述在所述子作业提交完成的情况下,根据所述哈希时间轮的定时函数,定时监测所述子作业的执行状态,生成所述子作业的执行状态信息之后,还包括:
若待提交的全部所述子作业的执行状态均为完成状态,将所述预设执行队列中的作业删除。
本发明实施例中,采用哈希时间轮定时监测子作业的执行状态,生成子作业的执行状态信息,若待提交的全部子作业的执行状态均为完成状态,将预设执行队列中的作业删除。
本实施例使用哈希时间轮机制,定时从Slurm中同步每一个迭代子任务的执行情况,在待提交作业的子作业均提价完成后,自动从哈希轮中取消掉该子任务,若待提交的全部子作业的执行状态均为完成状态,将预设执行队列中的作业删除,释放预设执行队列的存放空间,以便于接收用户最新待提交的作业。
进一步的,参照图4,示出了图1提供的作业调度方法的步骤103的流程图,该方法与本发明的第一实施例提供的作业调度方法基本相同,步骤103采用目标记录命令获取子作业在预设作业调度系统中的执行状态信息,将子作业对应执行状态信息与作业关联,生成作业的执行结果可以包括:
步骤401,预先在原生记录命令上添加查询参数,生成目标记录命令。
本发明实施例中,原生记录命令是sacct命令,用于记录作业调度系统的作业执行情况,为实现关联作业和迭代子作业,预先在原生记录命令上添加查询参数,生成目标记录命令,实现直接从子作业记录数表中按照作业名称自动查询出该作业每次迭代产生的子作业的执行状态以及作业输出结果等相关信息,将查询数据库表返回的作业和子作业的关联信息封装。
步骤402,采用目标记录命令从预设数据库表获取子作业在预设作业调度系统中的执行状态信息。
步骤403,将子作业对应执行状态信息与作业关联,生成树形结构体;其中,所述树形结构体包括根节点和叶子节点,所述根节点包括所述作业的参数信息,所述叶子节点包括所述作业对应所述子作业的参数信息,。
步骤404,将树形结构体存储为所述作业的执行结果。
本发明实施例中,上述步骤401至步骤402,采用目标记录命令从预设数据库表获取子作业在预设作业调度系统中的执行状态信息,用户使用后改进后的sacct命令查询作业的执行情况时,能够直观呈现出作业和迭代子作业之间的关系、作业的执行状态以及每次迭代的执行状态及作业输出结果等,解决原生的sacct命令无法查看到作业和子作业之间的关系的问题。
具体的,所述查询参数包括所述子作业对应作业名称,步骤402采用所述目标记录命令从预设数据库表获取所述子作业在所述预设作业调度系统中的执行状态信息,可以包括:
首先,根据所述目标记录命令中所述查询参数的作业名称,从预设数据库表查询所述作业名称对应的所述子作业;
其次,获取所述子作业的执行状态信息,其中,所述执行状态信息包括所述子作业的执行状态和输出结果。
需要说明的是,上述步骤中,查询参数包括子作业对应作业名称,将查询参数封装至原生记录命令,得到目标记录命令,以使根据目标记录命令中查询参数的作业名称,从预设数据库表查询作业名称对应的子作业的执行状态信息。
具体的,上述步骤403至步骤404,通过将子作业对应执行状态信息与作业关联,生成树形结构体,从而将树形结构体存储为所述作业的执行结果,其中,树形结构体包括根节点和叶子节点,根节点包括所述作业的参数信息,叶子节点包括所述作业对应所述子作业的参数信息。
本实施例中,采用目标记录命令将查询数据库表返回的作业和子作业的关联信息封装为一个树形结构体,树形结构体包括根节点和叶子节点,根节点包括作业的参数信息,叶子节点包括作业对应子作业的参数信息,示例的,树根可以为作业相关属性,例如作业名称、作业状态,叶子节点可以为子作业的相关属性,例如子作业名称、子作业运行状态。
本发明实施例中,为便于用户直观查看作业的提交和执行情况,将树形结构体存储为作业的执行结果,用户使用后改进后的sacct命令查询作业的执行情况时,能够以树形结构直观呈现出作业和迭代子作业之间的关系、作业的执行状态以及每次迭代的执行状态及作业输出结果等,解决原生的sacct命令无法查看到作业和子作业之间的关系的问题。
具体的,将所述树形结构体存储为所述作业的执行结果之后,还包括:
将所述作业的执行结果对应树形结构体展示至预设平台,以使用户根据所述树形结构体查看所述作业。
参照图5,示出了本发明实施例提供的另一种作业调度方法的步骤流程图,本发明的第二实施方式涉及一种作业调度方法,该方法与本发明的第一实施例提供的作业调度方法基本相同,其区别在于,参照图7,所述方法包括:
步骤104,检测作业是否存在预设待提交的迭代次数。
本发明实施例使用装饰器模式的基本思想,对原生的sbatch和sacct命令进行包装,同时还能兼容原生的命令参数,为了减少处理命令的耗时,可以在提交作业前识别批处理作业场景,通过检测作业是否存在预设待提交的迭代次数,确定使用原生提交命令还是目标提交命令。
需要说明的是,预设待提交的迭代次数是用户提交作业时根据重复提交需求设定的,控制端在获取待提交的作业前,首先检测作业是否存在预设待提交的迭代次数,当确定迭代次数大于一个时,表明作业待重复提交,因此,对原生提交命令进行处理,生成包括迭代次数参数的目标提交命令。
步骤105,若是,获取原生提交命令,将迭代次数封装至原生提交命令,生成用于提交作业的目标提交命令。
步骤106,否则,采用原生提交指令将作业添加至预设执行队列。
需要说明的是,在兼容原生sbatch命令的所有原有参数的基础上,扩充出迭代次数参数,比如,--iterator n,如果用户使用改进后的sbatch命令提交作业时,只是输入sbatch原有的参数,那么新命令会将这些参数直接透传给sbatch命令,否则采用原生提交指令将作业添加至预设执行队列。
步骤101,获取待提交的作业,采用目标提交指令将作业添加至预设执行队列,其中,目标提交命令是在原生提交命令上添加作业待提交的迭代次数生成的。
步骤102,将作业按照迭代次数划分为多个子作业,采用目标提交命令将多个子作业提交至预设作业调度系统。
步骤103,采用目标记录命令获取子作业在预设作业调度系统中的执行状态信息,将子作业对应执行状态信息与作业关联,生成作业的执行结果。
需要说明的是,上述步骤101-103参照前序论述,在此不再赘述。
本发明实施例在实现第一实施例有益效果的基础上,通过检测作业是否存在预设待提交的迭代次数,确定是否改进目标提交指令,从而将作业按照迭代次数划分为多个子作业,采用目标提交命令提交至预设作业调度系统,满足用户重复提交同一作业的需求,实现关联重复提交的作业,增加作业迭代之间的关联关系构建反馈,可以有效支撑用户提交循环作业以及作业重复提交需求场景,并且可适用于多种不同的软硬件环境,包括国产化CPU体系架构,对于不同架构、不同厂商的CPU,不同的linux发行版本,进一步提高了作业调度的可用性。
参照图6,示出了本发明实施例提供的一种作业调度装置的结构框图,所述作业调度装置具体可以包括如下模块:
获取作业模块501,用于获取待提交的作业,采用所述目标提交指令将所述作业添加至预设执行队列,其中,所述目标提交命令是在原生提交命令上添加所述作业待提交的迭代次数生成的;
作业提交模块502,用于将所述作业按照所述迭代次数划分为多个子作业,采用所述目标提交命令将多个所述子作业提交至预设作业调度系统;
生成结果模块503,用于采用目标记录命令获取所述子作业在所述预设作业调度系统中的执行状态信息,将所述子作业对应执行状态信息与所述作业关联,生成所述作业的执行结果。
进一步的,所述获取作业模块,包括:
创建子模块,用于预先创建先入先出的预设执行队列;
第一获取子模块,用于获取待提交的作业,根据作业的预设提交时间顺序对所述作业进行排序;
处理子模块,用于采用所述目标提交指令将所述作业依序添加至所述预设执行队列。
进一步的,所述作业提交模块502包括:
划分子模块,用于在所述预设执行队列中将所述作业按照所述迭代次数进行划分,生成所述迭代次数对应数量的子作业;
第一存储子模块,用于将每个所述作业对应子作业按照迭代次数从小到大的顺序依次排序,并存储至预设有序链表,其中,所述预设执行队列包括指向所述子作业所在预设有序链表的指针,所述指针用于定位所述子作业所在的预设有序链表。
进一步的,所述预设执行队列还包括预先创建的监控线程,所述作业提交模块502还包括:
监测子模块,用于采用所述监控线程监测所述预设队列中的作业存在状态;
控制子模块,用于响应于所述监控线程的监测作业存在状态信号,在所述预设执行队列中存在至少一个作业的情况下,控制预设执行线程启动。
进一步的,所述作业提交模块502包括:
解析子模块,用于采用所述预设执行线程对所述预设执行队列进行解析,得到指向所述子作业所在预设有序链表的指针,并定位所述子作业所在的预设有序链表;
提交子模块,用于遍历所述子作业所在的预设有序链表,采用所述目标提交命令将多个所述子作业提交至预设作业调度系统。
进一步的,所述提交子模块包括:
第一获取单元,用于获取预设有序链表中所述子作业和所述子作业对应执行参数,其中,所述执行参数包括所述子作业对应作业名称和迭代次数;
封装单元,用于将所述子作业对应作业名称和所述迭代次数封装至所述目标提交命令;
提交单元,用于采用封装后的所述目标提交命令将多个所述子作业提交至预设作业调度系统。
进一步的,所述提交子模块还包括:
接收单元,用于接收所述预设作业调度系统返回的子作业标识;
第二获取单元,用于采用原生查询命令获取所述子作业标识对应的排队提交情况;
记录单元,用于记录所述子作业的排队提交情况至预设数据库表。
进一步的,所述提交子模块还包括:
监测单元,用于在所述子作业提交完成的情况下,定时监测所述子作业的执行状态,生成所述子作业的执行状态信息;
更新单元,用于将所述子作业的执行状态信息更新至预设数据库表。
进一步的,所述提交子模块还包括:
第一定时单元,用于预先根据所述子作业的排队提交情况设置所述子作业的定时任务;其中,所述定时任务用于定时获取所述子作业的执行状态;
第二定时单元,用于将所述定时任务封装至哈希时间轮的定时函数;其中,所述哈希时间轮是响应于待提交的作业创建的;
进一步的,所述监测单元包括:
监测子单元,用于在所述子作业提交完成的情况下,根据所述哈希时间轮的定时函数,定时监测所述子作业的执行状态;
生成子单元,用于分别生成待提交的全部所述子作业的执行状态信息。
进一步的,所述所述监测单元还包括:
第一删除子单元,用于若所述子作业的执行状态为完成状态,删除所述哈希时间轮中所述子作业的定时任务。
进一步的,所述所述监测单元还包括:
第二删除子单元,用于若待提交的全部所述子作业的执行状态均为完成状态,将所述预设执行队列中的作业删除。
进一步的,所述生成结果模块503包括:
生成命令子模块,用于预先在原生记录命令上添加查询参数,生成目标记录命令;
获取子模块,用于采用所述目标记录命令从预设数据库表获取所述子作业在所述预设作业调度系统中的执行状态信息。
进一步的,所述查询参数包括所述子作业对应作业名称,所述获取子模块包括:
查询单元,用于根据所述目标记录命令中所述查询参数的作业名称,从预设数据库表查询所述作业名称对应的所述子作业;
第三获取单元,用于获取所述子作业的执行状态信息,其中,所述执行状态信息包括所述子作业的执行状态和输出结果。
进一步的,所述生成结果模块503包括:
生成结构体子模块,用于将所述子作业对应执行状态信息与所述作业关联,生成树形结构体;其中,所述树形结构体包括根节点和叶子节点,所述根节点包括所述作业的参数信息,所述叶子节点包括所述作业对应所述子作业的参数信息;
第二存储子模块,用于将所述树形结构体存储为所述作业的执行结果。
进一步的,所述生成结果模块503还包括:
展示子模块,用于将所述作业的执行结果对应树形结构体展示至预设平台,以使用户根据所述树形结构体查看所述作业。
进一步的,所述装置还包括:
检测作业模块,用于检测所述作业是否存在预设待提交的迭代次数;
第一处理模块,用于若是,获取原生提交命令,将所述迭代次数封装至所述原生提交命令,生成用于提交所述作业的目标提交命令;
第二处理模块,用于否则,采用所述原生提交指令将所述作业添加至预设执行队列。
本发明实施例提供的作业调度方法,通过获取待提交的作业,采用目标提交指令将作业添加至预设执行队列,其中,目标提交命令是在原生提交命令上添加作业待提交的迭代次数生成的,将作业按照迭代次数划分为多个子作业,采用目标提交命令将多个子作业提交至预设作业调度系统,采用目标记录命令获取子作业在预设作业调度系统中的执行状态信息,将子作业对应执行状态信息与作业关联,生成作业的执行结果。本发明实施例通过改进的目标提交指令和目标记录命令,将作业按照迭代次数划分为多个子作业,采用目标提交命令提交至预设作业调度系统,满足用户重复提交同一作业的需求,并且子作业是在作业的基础上依据迭代次数划分得到的,通过目标记录命令将子作业对应执行状态信息与作业关联,实现关联重复提交的作业,增加作业迭代之间的关联关系构建反馈,可以有效支撑用户提交循环作业以及作业重复提交需求场景,进一步提高了作业调度的可用性。
本发明实施例还提供了一种电子设备,如图7所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信,
存储器603,用于存放计算机程序;
处理器601,用于执行存储器603上所存放的程序时,可以实现如下步骤:
获取待提交的作业,采用所述目标提交指令将所述作业添加至预设执行队列,其中,所述目标提交命令是在原生提交命令上添加所述作业待提交的迭代次数生成的;
将所述作业按照所述迭代次数划分为多个子作业,采用所述目标提交命令将多个所述子作业提交至预设作业调度系统;
采用目标记录命令获取所述子作业在所述预设作业调度系统中的执行状态信息,将所述子作业对应执行状态信息与所述作业关联,生成所述作业的执行结果。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的作业调度方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或第三数据库通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或第三数据库进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、第三数据库等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk (SSD))等。
需要说明的是,在本文中,诸如第一和第一等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (20)
1.一种作业调度方法,其特征在于,所述方法包括:
获取待提交的作业,采用目标提交指令将所述作业添加至预设执行队列,其中,所述目标提交命令是在原生提交命令上添加所述作业待提交的迭代次数生成的;
将所述作业按照所述迭代次数划分为多个子作业,采用所述目标提交命令将多个所述子作业提交至预设作业调度系统;
采用目标记录命令获取所述子作业在所述预设作业调度系统中的执行状态信息,将所述子作业对应执行状态信息与所述作业关联,生成所述作业的执行结果。
2.根据权利要求1所述的方法,其特征在于,所述获取待提交的作业,采用所述目标提交指令将所述作业添加至预设执行队列,包括:
预先创建先入先出的预设执行队列;
获取待提交的作业,根据作业的预设提交时间顺序对所述作业进行排序;
采用所述目标提交指令将所述作业依序添加至所述预设执行队列。
3.根据权利要求1所述的方法,其特征在于,所述将所述作业按照所述迭代次数划分为多个子作业,采用所述目标提交命令将多个所述子作业提交至预设作业调度系统,包括:
在所述预设执行队列中将所述作业按照所述迭代次数进行划分,生成所述迭代次数对应数量的子作业;
将每个所述作业对应子作业按照迭代次数从小到大的顺序依次排序,并存储至预设有序链表,其中,所述预设执行队列包括指向所述子作业所在预设有序链表的指针,所述指针用于定位所述子作业所在的预设有序链表。
4.根据权利要求3所述的方法,其特征在于,所述预设执行队列还包括预先创建的监控线程,所述在所述预设执行队列中将所述作业按照所述迭代次数进行划分,生成所述迭代次数对应数量的子作业之前,还包括:
采用所述监控线程监测所述预设执行队列中的作业存在状态;
响应于所述监控线程的监测作业存在状态信号,在所述预设执行队列中存在至少一个作业的情况下,控制预设执行线程启动。
5.根据权利要求1所述的方法,其特征在于,所述采用所述目标提交命令将多个所述子作业提交至预设作业调度系统,包括:
采用预设执行线程对所述预设执行队列进行解析,得到指向所述子作业所在预设有序链表的指针,并定位所述子作业所在的预设有序链表;
遍历所述子作业所在的预设有序链表,采用所述目标提交命令将多个所述子作业提交至预设作业调度系统。
6.根据权利要求5所述的方法,其特征在于,所述遍历所述子作业所在的预设有序链表,采用所述目标提交命令将多个所述子作业提交至预设作业调度系统,包括:
获取预设有序链表中所述子作业和所述子作业对应执行参数,其中,所述执行参数包括所述子作业对应作业名称和迭代次数;
将所述子作业对应作业名称和所述迭代次数封装至所述目标提交命令;
采用封装后的所述目标提交命令将多个所述子作业提交至预设作业调度系统。
7.根据权利要求6所述的方法,其特征在于,所述采用封装后的所述目标提交命令将多个所述子作业提交至预设作业调度系统之后,还包括:
接收所述预设作业调度系统返回的子作业标识;
采用原生查询命令获取所述子作业标识对应的排队提交情况;
记录所述子作业的排队提交情况至预设数据库表。
8.根据权利要求7所述的方法,其特征在于,所述记录所述子作业的排队提交情况至预设数据库表之后,还包括:
在所述子作业提交完成的情况下,定时监测所述子作业的执行状态,生成所述子作业的执行状态信息;
将所述子作业的执行状态信息更新至预设数据库表。
9.根据权利要求8所述的方法,其特征在于,所述在所述子作业提交完成的情况下,定时监测所述子作业的执行状态,生成所述子作业的执行状态信息之前,还包括:
预先根据所述子作业的排队提交情况设置所述子作业的定时任务;其中,所述定时任务用于定时获取所述子作业的执行状态;
将所述定时任务封装至哈希时间轮的定时函数;其中,所述哈希时间轮是响应于待提交的作业创建的。
10.根据权利要求8所述的方法,其特征在于,所述在所述子作业提交完成的情况下,定时监测所述子作业的执行状态,生成所述子作业的执行状态信息,包括:
在所述子作业提交完成的情况下,根据哈希时间轮的定时函数,定时监测所述子作业的执行状态;
分别生成待提交的全部所述子作业的执行状态信息。
11.根据权利要求10所述的方法,其特征在于,所述在所述子作业提交完成的情况下,根据所述哈希时间轮的定时函数,定时监测所述子作业的执行状态,生成所述子作业的执行状态信息之后,还包括:
若所述子作业的执行状态为完成状态,删除所述哈希时间轮中所述子作业的定时任务。
12.根据权利要求10所述的方法,其特征在于,所述在所述子作业提交完成的情况下,根据所述哈希时间轮的定时函数,定时监测所述子作业的执行状态,生成所述子作业的执行状态信息之后,还包括:
若待提交的全部所述子作业的执行状态均为完成状态,将所述预设执行队列中的作业删除。
13.根据权利要求1所述的方法,其特征在于,所述采用目标记录命令获取所述子作业在所述预设作业调度系统中的执行状态信息,包括:
预先在原生记录命令上添加查询参数,生成目标记录命令;
采用所述目标记录命令从预设数据库表获取所述子作业在所述预设作业调度系统中的执行状态信息。
14.根据权利要求13所述的方法,其特征在于,所述查询参数包括所述子作业对应作业名称,所述采用所述目标记录命令从预设数据库表获取所述子作业在所述预设作业调度系统中的执行状态信息,包括:
根据所述目标记录命令中所述查询参数的作业名称,从预设数据库表查询所述作业名称对应的所述子作业;
获取所述子作业的执行状态信息,其中,所述执行状态信息包括所述子作业的执行状态和输出结果。
15.根据权利要求1所述的方法,其特征在于,所述将所述子作业对应执行状态信息与所述作业关联,生成所述作业的执行结果,包括:
将所述子作业对应执行状态信息与所述作业关联,生成树形结构体;其中,所述树形结构体包括根节点和叶子节点,所述根节点包括所述作业的参数信息,所述叶子节点包括所述作业对应所述子作业的参数信息;
将所述树形结构体存储为所述作业的执行结果。
16.根据权利要求15所述的方法,其特征在于,所述将所述树形结构体存储为所述作业的执行结果之后,还包括:
将所述作业的执行结果对应树形结构体展示至预设平台,以使用户根据所述树形结构体查看所述作业。
17.根据权利要求1所述的方法,其特征在于,所述获取待提交的作业,采用所述目标提交指令将所述作业添加至预设执行队列之前,还包括:
检测所述作业是否存在预设待提交的迭代次数;
若是,获取原生提交命令,将所述迭代次数封装至所述原生提交命令,生成用于提交所述作业的目标提交命令;
否则,采用所述原生提交指令将所述作业添加至预设执行队列。
18.一种作业调度装置,其特征在于,所述装置包括:
获取作业模块,用于获取待提交的作业,采用目标提交指令将所述作业添加至预设执行队列,其中,所述目标提交命令是在原生提交命令上添加所述作业待提交的迭代次数生成的;
作业提交模块,用于将所述作业按照所述迭代次数划分为多个子作业,采用所述目标提交命令将多个所述子作业提交至预设作业调度系统;
生成结果模块,用于采用目标记录命令获取所述子作业在所述预设作业调度系统中的执行状态信息,将所述子作业对应执行状态信息与所述作业关联,生成所述作业的执行结果。
19.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至17中任一项所述的作业调度方法的步骤。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至17中任一项所述的作业调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311515107.5A CN117251274B (zh) | 2023-11-14 | 2023-11-14 | 作业调度方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311515107.5A CN117251274B (zh) | 2023-11-14 | 2023-11-14 | 作业调度方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117251274A true CN117251274A (zh) | 2023-12-19 |
CN117251274B CN117251274B (zh) | 2024-02-20 |
Family
ID=89131630
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311515107.5A Active CN117251274B (zh) | 2023-11-14 | 2023-11-14 | 作业调度方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117251274B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180076979A1 (en) * | 2016-09-09 | 2018-03-15 | Intel Corporation | Optimized channel estimation field for enhanced directional multi-gigabit network |
US20180182452A1 (en) * | 2016-12-23 | 2018-06-28 | SK Hynix Inc. | Memory system and operating method of memory system |
WO2022007781A1 (zh) * | 2020-07-08 | 2022-01-13 | 中兴通讯股份有限公司 | 任务处理方法、边缘计算设备、计算机设备和介质 |
CN114064249A (zh) * | 2021-11-23 | 2022-02-18 | 广东省华南技术转移中心有限公司 | 混合云的跨云计算任务的调度方法、装置以及存储介质 |
CN114418117A (zh) * | 2022-01-20 | 2022-04-29 | 北京航空航天大学 | 用于少样本故障诊断的具有自适应学习率的元学习方法 |
CN114880147A (zh) * | 2022-05-31 | 2022-08-09 | 苏州浪潮智能科技有限公司 | 一种显存共享方法、装置、设备及存储介质 |
CN115170701A (zh) * | 2022-07-25 | 2022-10-11 | 北京字跳网络技术有限公司 | 布料处理方法、装置、电子设备及可读存储介质 |
CN115879543A (zh) * | 2023-03-03 | 2023-03-31 | 浪潮电子信息产业股份有限公司 | 一种模型训练方法、装置、设备、介质及系统 |
CN116467085A (zh) * | 2023-04-27 | 2023-07-21 | 中国银行股份有限公司 | 任务处理方法、系统、电子设备及存储介质 |
-
2023
- 2023-11-14 CN CN202311515107.5A patent/CN117251274B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180076979A1 (en) * | 2016-09-09 | 2018-03-15 | Intel Corporation | Optimized channel estimation field for enhanced directional multi-gigabit network |
US20180182452A1 (en) * | 2016-12-23 | 2018-06-28 | SK Hynix Inc. | Memory system and operating method of memory system |
WO2022007781A1 (zh) * | 2020-07-08 | 2022-01-13 | 中兴通讯股份有限公司 | 任务处理方法、边缘计算设备、计算机设备和介质 |
CN114064249A (zh) * | 2021-11-23 | 2022-02-18 | 广东省华南技术转移中心有限公司 | 混合云的跨云计算任务的调度方法、装置以及存储介质 |
CN114418117A (zh) * | 2022-01-20 | 2022-04-29 | 北京航空航天大学 | 用于少样本故障诊断的具有自适应学习率的元学习方法 |
CN114880147A (zh) * | 2022-05-31 | 2022-08-09 | 苏州浪潮智能科技有限公司 | 一种显存共享方法、装置、设备及存储介质 |
CN115170701A (zh) * | 2022-07-25 | 2022-10-11 | 北京字跳网络技术有限公司 | 布料处理方法、装置、电子设备及可读存储介质 |
CN115879543A (zh) * | 2023-03-03 | 2023-03-31 | 浪潮电子信息产业股份有限公司 | 一种模型训练方法、装置、设备、介质及系统 |
CN116467085A (zh) * | 2023-04-27 | 2023-07-21 | 中国银行股份有限公司 | 任务处理方法、系统、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117251274B (zh) | 2024-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11314698B2 (en) | Dynamically performing data processing in a data pipeline system | |
US11593365B2 (en) | Splitting a time-range query into multiple sub-queries for serial execution | |
CN110908641B (zh) | 基于可视化的流计算平台、方法、设备和存储介质 | |
US11016971B2 (en) | Splitting a time-range query into multiple sub-queries for parallel execution | |
US9038059B2 (en) | Automatically targeting application modules to individual machines and application framework runtimes instances | |
US8990642B2 (en) | Managing error logs in a distributed network fabric | |
US10951509B1 (en) | Methods, systems, and computer readable media for providing intent-driven microapps for execution on communications network testing devices | |
US20210382728A1 (en) | Running pbs jobs in kubernetes | |
JP2020194524A (ja) | アクセスリクエストを管理するための方法、装置、デバイス、および記憶媒体 | |
US10013288B2 (en) | Data staging management system | |
US10970143B1 (en) | Event action management mechanism | |
CN113886111B (zh) | 一种基于工作流的数据分析模型计算引擎系统及运行方法 | |
CN108399095B (zh) | 支持动态管理定时任务的方法、系统、设备和存储介质 | |
CN117251274B (zh) | 作业调度方法、装置、电子设备及存储介质 | |
CN114595075A (zh) | 一种基于分布式调度的网络编排中异步任务执行方法 | |
CN113722141B (zh) | 数据任务的延迟原因确定方法、装置、电子设备及介质 | |
CN115756520A (zh) | 一种分布式集群中的FlinkSQL部署方法及装置 | |
JP5884566B2 (ja) | バッチ処理システム、進捗状況確認装置、進捗状況確認方法、及びプログラム | |
JP5387083B2 (ja) | ジョブ管理システムおよび方法 | |
US9870257B1 (en) | Automation optimization in a command line interface | |
US10503722B2 (en) | Log management apparatus and log management method | |
CN112286876A (zh) | 日志文件抓取方法、设备及计算机可读存储介质 | |
CN111190725A (zh) | 任务处理方法、装置、存储介质及服务器 | |
US20240256931A1 (en) | Quantum system operating system service orchestration | |
US8521472B2 (en) | Method to compute wait time |
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 |