CN116719632A - 任务调度方法、装置、设备以及介质 - Google Patents

任务调度方法、装置、设备以及介质 Download PDF

Info

Publication number
CN116719632A
CN116719632A CN202311010527.8A CN202311010527A CN116719632A CN 116719632 A CN116719632 A CN 116719632A CN 202311010527 A CN202311010527 A CN 202311010527A CN 116719632 A CN116719632 A CN 116719632A
Authority
CN
China
Prior art keywords
task
node
resource
nodes
data
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
Application number
CN202311010527.8A
Other languages
English (en)
Other versions
CN116719632B (zh
Inventor
王飞阳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202311010527.8A priority Critical patent/CN116719632B/zh
Publication of CN116719632A publication Critical patent/CN116719632A/zh
Application granted granted Critical
Publication of CN116719632B publication Critical patent/CN116719632B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例提供了一种任务调度方法、装置、设备以及介质,该方法包括:接收软件编译任务请求,获取资源节点池中的第一节点列表所包含的K个任务节点所对应的资源数据;根据资源数据中的处理器使用率、内存使用率和磁盘使用率,确定K个任务节点所对应的资源剩余值;若第一节点列表中的K个任务节点所对应的资源剩余值均小于资源阈值,则在第二节点列表所包含的任务节点中确定软件编译任务请求对应的调度节点,将软件编译任务请求发送至调度节点,以使调度节点处理软件编译任务请求所指示的软件编译任务;第二节点列表中的任务节点是指资源节点池中未检测到资源数据的任务节点。实施本申请实施例,可以提高软件编译任务的处理效率。

Description

任务调度方法、装置、设备以及介质
技术领域
本申请涉及互联网技术领域,尤其涉及一种任务调度方法、装置、设备以及介质。
背景技术
目前,在持续集成和持续交付(Continuous Integration and ContinuousDelivery,CICD)系统进行软件编译的任务调度场景中,通常需要按照任务调度策略将待处理任务分发到资源节点池中的任务节点上进行任务处理,如可以选择执行前一个任务的节点来处理当前的待处理任务。然而,这种任务调度策略会一直选择同一个任务节点来处理任务,导致该任务节点的计算资源被占满,进而使得该任务节点的任务运行缓慢,造成任务处理效率低下。
发明内容
本申请实施例提供一种任务调度方法、装置、设备以及介质,可以提高软件编译任务的处理效率。
本申请实施例一方面提供了一种任务调度方法,该方法包括:
接收软件编译任务请求,获取资源节点池中的第一节点列表所包含的K个任务节点所对应的资源数据;K为正整数;
根据资源数据中的处理器使用率、内存使用率和磁盘使用率,确定第一节点列表中的K个任务节点所对应的资源剩余值;
若第一节点列表中的K个任务节点所对应的资源剩余值均小于资源阈值,则在第二节点列表所包含的任务节点中确定软件编译任务请求对应的调度节点,将软件编译任务请求发送至调度节点,以使调度节点处理软件编译任务请求所指示的软件编译任务;第二节点列表中的任务节点是指资源节点池中未检测到资源数据的任务节点。
本申请实施例一方面提供了一种任务调度装置,该装置包括:
资源数据获取模块,用于接收软件编译任务请求,获取资源节点池中的第一节点列表所包含的K个任务节点所对应的资源数据;K为正整数;
资源剩余值确定模块,用于根据资源数据中的处理器使用率、内存使用率和磁盘使用率,确定第一节点列表中的K个任务节点所对应的资源剩余值;
调度节点确定模块,用于若第一节点列表中的K个任务节点所对应的资源剩余值均小于资源阈值,则在第二节点列表所包含的任务节点中确定软件编译任务请求对应的调度节点,将软件编译任务请求发送至调度节点,以使调度节点处理软件编译任务请求所指示的软件编译任务;第二节点列表中的任务节点是指资源节点池中未检测到资源数据的任务节点。
其中,任务调度装置还包括:
检测线程创建模块,用于通过主进程启动数据检测定时任务,创建与数据检测定时任务相关联的线程池;
检测任务分发模块,用于通过主进程将数据检测定时任务分发至线程池,若系统时间满足数据检测定时任务中的任务触发时间,则通过线程池中的数据检测线程,对资源节点池中的任务节点进行数据检测;
任务节点添加模块,用于将未检测到资源数据的任务节点添加至第二节点列表,将检测到资源数据的任务节点添加至第一节点列表,将第一节点列表中的任务节点对应的资源数据存储至资源数据库。
其中,检测任务分发模块包括:
数量获取单元,用于通过主进程将数据检测定时任务分发至线程池,获取线程池中包含的数据检测线程的线程数量,以及获取资源节点池中包含的任务节点的节点数量;
阶段划分单元,用于若线程数量小于节点数量,则根据节点数量和线程数量之间的倍数关系,确定数据检测定时任务对应的L个分批执行阶段;L为大于1的整数;
节点分配单元,用于通过主进程,为L个分批执行阶段中的每一个分批执行阶段分配资源节点池中的任务节点;
数据检测单元,用于若系统时间满足数据检测定时任务中的任务触发时间,则通过线程池中的数据检测线程,对每一个分批执行阶段分配的任务节点进行数据检测。
其中,数据检测单元包括:
第一检测子单元,用于若系统时间满足数据检测定时任务中的任务触发时间,则通过线程池中的数据检测线程,对L个分批执行阶段中的第一个分批执行阶段对应的任务节点进行数据检测;
线程释放子单元,用于获取第一个分批执行阶段对应的任务节点的资源数据,将第一个分批执行阶段对应的数据检测线程进行释放;
第二检测子单元,用于通过线程池中的数据检测线程,对L个分批执行阶段中的第二个分批执行阶段对应的任务节点进行数据检测,获取第二个分批执行阶段对应的任务节点的资源数据,直至获取第L个分批执行阶段对应的任务节点的资源数据;
数据汇总子单元,用于通过数据检测定时任务,合并资源节点池中的任务节点对应的资源数据。
其中,资源数据获取模块包括:
时间差值获取单元,用于记录软件编译任务请求对应的请求接收时间,获取请求接收时间与数据检测定时任务在资源数据库中关联的各个任务触发时间之间的时间差值;
资源数据确定单元,用于将最小的时间差值关联的任务触发时间所对应的资源数据,确定为资源节点池中的第一节点列表包含的K个任务节点所对应的资源数据。
其中,资源剩余值确定模块包括:
使用率确定单元,用于在资源数据中确定第一节点列表中的任务节点i所对应的处理器使用率、内存使用率和磁盘使用率;
权重确定单元,用于根据资源配置策略确定任务节点i的处理器使用率所对应的处理器使用权重、任务节点i的内存使用率所对应的内存使用权重,以及任务节点i的磁盘使用率所对应的磁盘使用权重;
资源剩余值计算单元,用于将处理器使用权重、内存使用权重以及磁盘使用权重之间的乘积,确定为任务节点i所对应的资源剩余值。
其中,任务调度装置还包括:
执行节点确定模块,用于若第一节点列表中存在资源剩余值大于或等于资源阈值的任务节点,则将第一节点列表中最大的资源剩余值所对应的任务节点,确定为软件编译任务请求对应的执行节点;
任务执行模块,用于将软件编译任务请求发送至执行节点,以使执行节点处理软件编译任务请求所指示的软件编译任务。
其中,任务调度装置还包括:
资源预测模块,用于第一节点列表中的K个任务节点所对应的资源剩余值均小于资源阈值,且若第二节点列表不存在任务节点,则通过资源预测模型对第一节点列表中的K个任务节点进行资源预测,得到第一节点列表中的K个任务节点在期望时间所对应的预测剩余值;资源预测模型是根据资源节点池中包含的任务节点所对应的历史资源数据进行训练得到的预测模型;
任务调度模块,用于将软件编译任务请求发送至最大的预测剩余值所对应的任务节点i,以使任务节点i在期望时间处理软件编译任务请求所指示的软件编译任务。
本申请实施例一方面提供了一种计算机设备,包括存储器和处理器,存储器与处理器相连,存储器用于存储计算机程序,处理器用于调用计算机程序,以使得该计算机设备执行本申请实施例中上述一方面提供的方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序适于由处理器加载并执行,以使得具有处理器的计算机设备执行本申请实施例中上述一方面提供的方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机程序/指令,该计算机程序/指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序/指令,处理器执行该计算机指令,使得该计算机设备执行上述一方面提供的方法。
本申请实施例中,在接收软件编译任务请求之后,可以获取资源节点池中的第一节点列表包含的K个任务节点所对应的资源数据;进而可以根据资源数据中的处理器使用率、内存使用率和磁盘使用率,确定第一节点列表中的K个任务节点所对应的资源剩余值。当第一节点列表中的K个任务节点所对应的资源剩余值均小于资源阈值时,说明第一节点列表中的任务节点的资源剩余值过低,选择第一节点列表中的任务节点执行软件编译任务请求所指示的软件编译任务,会导致软件编译任务的处理效率低下。在这种情况下,可以在第二节点列表所包含的任务节点中选择一个任务节点作为调度节点来处理软件编译任务,由于第二节点列表中的任务节点是指资源节点池中未检测到资源数据的任务节点,第二节点列表中的任务节点对应的资源剩余值可能会大于第一节点列表中的任务节点对应的资源剩余值,因此相对于选择第一节点列表中的任务节点而言,选择第二节点列表中的任务节点执行软件编译任务,可以提高软件编译任务的处理效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种任务调度系统的结构示意图;
图2是本申请实施例提供的一种任务调度的场景示意图;
图3是本申请实施例提供的一种任务调度方法的流程示意图一;
图4是本申请实施例提供的一种计算资源剩余值的流程示意图;
图5是本申请实施例提供的一种资源配置策略的示意图;
图6是本申请实施例提供的一种计算资源剩余值的示意图;
图7是本申请实施例提供的一种任务调度方法的流程示意图二;
图8是本申请实施例提供的一种任务调度方法的流程示意图三;
图9是本申请实施例提供的一种资源数据检测的示意图一;
图10是本申请实施例提供的一种资源数据检测的示意图二;
图11是本申请实施例提供的一种资源数据检测方法的流程示意图;
图12是本申请实施例提供的一种任务调度方法的流程示意图四;
图13是本申请实施例提供的一种任务调度装置的结构示意图;
图14是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例主要涉及云计算(cloud computing)。其中,云计算是一种计算模式,它可以将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。作为云计算的基础能力提供商,会建立云计算资源池,云计算资源池可以简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务)平台,可以在云计算资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(虚拟化机器,包含操作系统)、存储设备、网络设备。具体地,本申请实施例涉及的资源节点池可以是云计算资源池,任务节点可以是云计算资源池中的计算设备或者网络设备。
请参见图1,图1是本申请实施例提供的一种任务调度系统的结构示意图。如图1所示,该任务调度系统可以包括调度平台10和资源节点池20。需要说明的是,图1所示的调度平台10的数量和资源节点池20中所包含的任务节点的数量仅为举例,例如,调度平台10的数量可以为一个或者多个;资源节点池20中可以包含多个任务节点,例如,可以包含任务节点20a、任务节点20b以及任务节点20c等,本申请实施例不对调度平台10的数量和资源节点池20中所包含的任务节点的数量进行限定。资源节点池20中包含的所有任务节点均可以与调度平台10进行网络连接,以便于各个任务节点均可以通过该网络连接与调度平台10之间进行数据交互。
在本申请实施例中,调度平台10可以集成在终端设备或者服务器中,资源节点池20中所包含的任务节点可以是终端设备,也可以是服务器。其中,终端设备可以包括但不限于:智能手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobile internetdevice,MID)、可穿戴设备(例如智能手表、智能手环等)、智能语音交互设备、智能家电(例如智能电视等)、车载设备、飞行器等电子设备,本申请实施例对终端设备的类型不做限定。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器,本申请实施例对服务器的类型不做限定。
在本申请实施例中,调度平台10可以对资源节点池20中所包含的任务节点对应的资源数据进行检测,得到资源节点池中的各个任务节点对应的资源数据。当调度平台10接收到任务调度请求时,可以根据各个任务节点对应的资源数据,从资源节点池20中选择合适的任务节点,进而将任务调度请求所指示的任务(例如,软件编译任务、云资源管理任务等任务),分配给该任务节点来执行。
为便于描述,下面以持续集成和持续交付(Continuous Integration andContinuous Delivery,CICD)系统中的软件编译任务为例,对任务调度过程进行详细描述。请参见图2,图2是本申请实施例提供的一种任务调度的场景示意图。如图2所示,在CICD的业务流程中进行软件编译时,通常是以流水线任务的方式进行,将软件开发生命周期中的不同环节连接起来,进而可以提高软件开发和交付的效率、质量和可靠性。一般而言,软件开发生命周期具体可以包括:代码检查、编译、构建、测试、部署和发布等环节。
为进一步加快软件编译任务的执行效率,在本申请实施例中,调度平台10可以将不同流水线对应的软件编译任务,调度给不同的资源节点池中的任务节点来执行。换句话说,同一条流水线的软件编译任务可以由同一标签(label)下的资源节点池所包含的任务节点来执行。具体地,可以根据流水线对应的软件编译任务的特点以及任务节点的资源情况,建立流水线与资源节点池之间的映射关系,将具有映射关系的流水线与资源节点池赋予同一标签(label)。当调度平台10接收到软件编译任务请求时,可以获取该软件编译任务请求所对应的流水线包含的标签(label),将软件编译任务调度到具有相同标签(label)的资源节点池中执行。举例而言,流水线1负责的软件编译任务对处理器(例如,中央处理器)性能具有较高的要求,那么可以将处理器性能较佳的任务节点添加至资源节点池1中,进而建立流水线1与资源节点池1之间的映射关系,将具有映射关系的流水线1与资源节点池1赋予同一标签(label)。其中,标签的类型可以是文字、数值、字母、符号中的一种或者多种的组合。当调度平台10接收到流水线1对应的软件编译任务请求时,可以将软件编译任务请求所指示的软件编译任务分配给资源节点池1中的任务节点来执行。
如图2所示,调度平台10可以包括资源数据检测模块、任务调度代理(proxy)、软件编译任务分发模块等模块。其中,资源数据检测模块主要负责对资源节点池20中包含的任务节点(例如,任务节点1、任务节点2、任务节点3、任务节点4和任务节点5)进行数据检测,以获得各个任务节点的资源数据,并将资源节点池20中的各个任务节点所对应的资源数据存储至资源数据库中。其中,资源数据库可以用于存储资源节点池中的各个任务节点对应的资源数据,资源数据库可以是本地数据库,也可以是云数据库。
可以理解的是,相对于将数据资源检测模块集成在资源节点池20而言,将资源数据检测模块集成在调度平台10中,可以减少对任务节点的侵入性,避免数据检测行为对任务节点造成一定的资源占用。资源节点池20可以是与软件编译任务对应的流水线具有相同标签(label)的资源节点池;资源数据可以包括但不限于处理器使用率、内存使用率和磁盘使用率等信息,资源数据的具体定义可以参考下文的描述。
如图2所示,在通过调度平台10中的资源数据检测模块对资源节点池20中包含的任务节点进行数据检测时,可以将资源节点池20中检测到资源数据的任务节点添加至第一节点列表,将资源节点池20中未检测到资源数据的任务节点添加至第二节点列表。例如,任务节点2和任务节点4未检测到资源数据,而任务节点1、任务节点3和任务节点5可以检测到资源数据,在这种情况下,可以将任务节点1、任务节点3和任务节点5添加至第一节点列表,将任务节点2和任务节点4添加至第二节点列表。可以理解的是,任务节点2和任务节点4未检测到资源数据的原因可能包括但不限于:①任务节点2和任务节点3对应的数据检测线程出现故障或者停止运行。②任务节点2和任务节点4对应的初始化配置(例如,网络设置、访问设置等)尚未完成。③由于网络问题、通信故障、数据传输协议错误或配置错误等原因,导致调度平台10与任务节点2和任务节点4之间的数据传输中断。以上原因均可能会导致调度平台10中的资源数据检测模块检测不到任务节点2和任务节点4的资源数据。
任务调度代理(proxy)主要用于接收流水线任务对应的软件编译任务请求,根据软件编译任务请求对应的请求接收时间,从资源数据库中获取与请求接收时间在时间上最接近的资源数据作为第一节点列表所包含的各个任务节点(任务节点1、任务节点3和任务节点5)所对应的资源数据;进而可以根据资源数据中的处理器使用率(例如,CPU使用率)、内存使用率和磁盘使用率,计算第一节点列表中的各个任务节点所对应的资源剩余值(score)。其中,资源剩余值(score)用于表征第一节点列表中的各个任务节点的剩余可用资源量,具体可以用于衡量第一节点列表中的任务节点的性能状况。一般而言,任务节点的资源剩余值越大,表示该任务节点的性能越好;任务节点的资源剩余值越小,表示该任务节点的性能越差;资源剩余值的计算方式将在下文进行详细描述,在此不再进行赘述。可以理解的是,由于第二节点列表中的任务节点是中资源节点池中未检测到资源数据的任务节点,也就是说,第二节点列表中的任务节点对应的资源数据为空,因此,任务调度代理(proxy)无法计算第二节点列表中的任务节点的资源剩余值。
在计算得到第一节点列表中的各个任务节点对应的资源剩余值之后,任务调度代理(proxy)可以通过将第一节点列表中的各个任务节点的资源剩余值与资源阈值进行对比,进而从第一节点列表中选择合适的任务节点来执行软件编译任务请求所指示的软件编译任务。其中,资源阈值是指针对资源剩余值所设置的一个界限或限制值,当任务节点对应的资源剩余值大于或等于资源阈值时,可以认为该任务节点具有足够的可用资源来执行软件编译任务请求所指示的软件编译任务;反之,当任务节点对应的资源剩余值小于资源阈值时,可以认为该任务节点不具备足够的可用资源来执行软件编译任务请求所指示的软件编译任务,采用该任务节点执行软件编译任务,会导致软件编译任务的处理效率低下。资源阈值的具体取值可以根据实际情况进行设置,例如,可以设置为0.1,也可以设置为0.5等,本申请实施例对此不做限定。
为便于描述,本申请实施例以资源阈值设置为0.1为例,对任务节点的选取方式进行详细描述。假设第一节点列表中的任务节点1对应的资源剩余值为0.05,任务节点3对应的资源剩余值为1,任务节点5对应的资源剩余值为0.5,此时任务节点3和任务节点5对应的资源剩余值均大于或等于资源阈值(0.1),表明第一节点列表中的任务节点3和任务节点5均具有足够的可用资源来执行软件编译任务请求所指示的软件编译任务。如图2所示,在这种情况下,可以将软件编译任务调度至第一节点列表中的任务节点来执行。为使软件编译任务的执行效率达到最大化,可以将第一节点列表中最大的资源剩余值所对应的任务节点,即任务节点3,确定为软件编译任务请求对应的执行节点。此时,任务调度代理(proxy)可以将执行节点(任务节点3)对应的标识信息,例如,任务节点3对应的互联网协议(Internet Protocol,IP)地址、媒体访问控制(Media Access Control,MAC)地址等信息,发送至软件编译任务分发模块,软件编译任务分发模块负责将软件编译任务发送给第一节点列表中的任务节点3,任务节点3在接收到软件编译任务之后,执行该软件编译任务,从而完成软件编译任务的调度。
假设第一节点列表中的任务节点1对应的资源剩余值为0.05,任务节点3对应的资源剩余值为0.08,任务节点5对应的资源剩余值为0.09,此时第一节点列表中的各个任务节点所对应的资源剩余值均小于资源阈值(0.1),表明第一节点列表中的任务节点的资源剩余值过低,也就是说,第一节点列表中的任务节点均不具备足够的可用资源来执行软件编译任务请求所指示的软件编译任务,如果选择第一节点列表中的任务节点执行软件编译任务,可能会导致软件编译任务的处理效率低下。
如图2所示,当第一节点列表中的任务节点对应的资源剩余值均小于资源阈值时,可以在第二节点列表所包含的任务节点中选择任一个任务节点(例如,可以选择任务节点2,也可以选择任务节点4)作为调度节点,来处理软件编译任务。由于第二节点列表中的任务节点2和任务节点4是指资源节点池中未检测到资源数据的任务节点,任务节点2和任务节点4对应的资源剩余值可能会大于第一节点列表中的各个任务节点对应的资源剩余值,因此相对于选择第一节点列表中的任务节点而言,选择第二节点列表中的任务节点(任务节点2或任务节点4)执行软件编译任务,可以提高软件编译任务的处理效率。
在本申请实施例中,可以对资源节点池中所包含的任务节点进行数据检测,进而根据是否检测到资源数据,将资源节点池中的任务节点分别添加至第一节点列表和第二节点列表。其中,第一节点列表中的任务节点是指资源节点池中检测到资源数据的任务节点;第二节点列表中的任务节点是指资源节点池中未检测到资源数据的任务节点。当第一节点列表中存在资源剩余值大于或等于资源阈值的任务节点时,表明第一节点列表中存在任务节点具有足够的可用资源来执行软件编译任务请求所指示的软件编译任务,此时可以将第一节点列表中最大的资源剩余值所对应的任务节点,确定为软件编译任务请求对应的执行节点,以提高软件编译任务的执行效率。当第一节点列表中的各个任务节点所对应的资源剩余值均小于资源阈值时,表明第一节点列表中的任务节点的资源剩余值过低,第一节点列表中的任务节点不具备足够的可用资源来执行软件编译任务请求所指示的软件编译任务,如果选择第一节点列表中的任务节点执行软件编译任务请求所指示的软件编译任务,可能会导致软件编译任务的处理效率低下。在这种情况下,可以在第二节点列表所包含的任务节点中选择任一个任务节点作为调度节点,来处理软件编译任务。由于第二节点列表中的任务节点指资源节点池中未检测到资源数据的任务节点,第二节点列表中的任务节点对应的资源剩余值可能会大于第一节点列表中的任务节点对应的资源剩余值,因此相对于选择第一节点列表中的任务节点而言,选择第二节点列表中的任务节点执行软件编译任务,可以提高软件编译任务的处理效率。
请参见图3,图3是本申请实施例提供的一种任务调度方法的流程示意图一,该任务调度方法可以由调度平台(例如,图1所对应实施例中的调度平台10)来执行。如图3所示,该任务调度方法可以包括以下步骤S101-步骤S103,其中:
步骤S101:接收软件编译任务请求,获取资源节点池中的第一节点列表所包含的K个任务节点所对应的资源数据;K为正整数。
在本申请实施例中,软件编译任务请求可以用于请求将软件编译任务调度至资源节点池中的任务节点执行。软件编译任务是指将源代码(例如,C、C++、Java、Python等)转换为可执行程序的过程,软件编译任务可以包括但不限于代码检查、编译、构建、测试、部署和发布等任务。资源节点池中可以包含多个任务节点,第一节点列表中的任务节点是指资源节点池中检测到资源数据的任务节点,第一节点列表可以包括K个任务节点,其中,K为正整数,K的具体取值可以是1,2,3……。
资源数据可以用于表征各个任务节点的资源使用情况。具体地,资源数据可以包括但不限于处理器资源数据、内存(mem)资源数据、磁盘(storage)资源数据等信息。其中,处理器资源数据可以用于表征任务节点的中央处理器(CPU)的性能,处理器资源数据可以包括但不限于:处理器使用率、处理器负载、处理器核心数等信息;内存资源数据可以用于表征任务节点的内存性能,内存资源数据可以包括但不限于:内存使用率、可用内存、已用内存、缓存和缓冲区内存、内存交换等信息;磁盘资源数据可以用于表征任务节点的磁盘性能,磁盘资源数据可以包括但不限于:磁盘使用率、可用磁盘空间、已用磁盘空间、磁盘读写速度、磁盘分区和I/O负载等信息。
在一种可能的实施方式中,当接收到软件编译任务请求时,可以根据软件编译任务请求对应的请求接收时间,从资源数据库中获取与请求接收时间在时间上最接近的资源数据作为第一节点列表所包含的K个任务节点所对应的资源数据。在一种可能的实施方式中,当接收到软件编译任务请求时,可以调用数据检测线程对资源节点池中所包含的任务节点进行实时数据检测,得到各个任务节点的资源数据,并将资源数据不为空的K个任务节点所对应的资源数据,确定为第一节点列表所包含的K个任务节点所对应的资源数据。
步骤S102:根据资源数据中的处理器使用率、内存使用率和磁盘使用率,确定第一节点列表中的K个任务节点所对应的资源剩余值。
处理器使用率通常是指任务节点的处理器在单位时间内执行任务的负载情况,通常以百分比表示;任务节点的处理器使用率越高,表示该任务节点的处理器越繁忙,反之,任务节点的处理器使用率越低,表示该任务节点的处理器越空闲。内存使用率通常是指任务节点中已使用的物理内存和虚拟内存占总内存的比例,通常以百分比表示;任务节点的内存使用率越低,表明该任务节点有更多的可用内存。磁盘使用率通常是指任务节点的磁盘存储空间中已被占用的比例,通常以百分比表示。任务节点的磁盘使用率越高,表示该任务节点的磁盘存储空间越接近饱和,反之,任务节点的磁盘使用率越低,表示该任务节点还有较多的可用存储空间。
资源剩余值(score)可以用于表征第一节点列表中的K个任务节点的剩余可用资源量,具体可以用于衡量第一节点列表中的任务节点的性能状况,一般而言,任务节点的资源剩余值越大,表示该任务节点的性能越好;任务节点的资源剩余值越小,表示该任务节点的性能越差。
本申请实施例以第一节点列表中的任务节点i为例,对第一节点列表中的任务节点所对应的资源剩余值的计算过程进行详细描述。其中,任务节点i为第一节点列表中的K个任务节点中的任一个任务节点。具体地,可以在资源数据中确定任务节点i所对应的处理器使用率、内存使用率和磁盘使用率;进而可以根据资源配置策略确定任务节点i的处理器使用率所对应的处理器使用权重、任务节点i的内存使用率所对应的内存使用权重,以及任务节点i的磁盘使用率所对应的磁盘使用权重;将处理器使用权重、内存使用权重以及磁盘使用权重之间的乘积,确定为任务节点i所对应的资源剩余值。
其中,资源配置策略可以是预先设置的资源剩余值的计算规则。处理器使用权重是用于衡量任务节点的处理器使用情况的参数,任务节点的处理器使用权重越大,表示该任务节点对应的处理器使用率越小,该任务节点的处理器剩余可用资源越大;反之,任务节点的处理器使用权重越小,表示该任务节点对应的处理器使用率越小,该任务节点的处理器剩余可用资源越小。类似地,内存使用权重是用于衡量任务节点的内存使用情况的参数,任务节点的内存使用权重越大,表示该任务节点对应的内存使用率越小,该任务节点的内存剩余可用资源越大;反之,任务节点的内存使用权重越小,表示该任务节点对应的内存使用率越小,该任务节点的内存剩余可用资源越小。磁盘使用权重是用于衡量任务节点的磁盘使用情况的参数,任务节点的磁盘使用权重越大,表示该任务节点对应的磁盘使用率越小,该任务节点的磁盘剩余可用资源越大;反之,任务节点的磁盘使用权重越小,表示该任务节点对应的磁盘使用率越小,该任务节点的磁盘剩余可用资源越小。
具体地,请参见图4,图4是本申请实施例提供的一种计算资源剩余值的流程示意图。如图4所示,调度平台中的任务调度代理(proxy)可以包括资源配置策略、资源数据获取代理(proxy)、计算函数、计算模块、排序模块等对象。其中,资源配置策略可以是预先设置的资源剩余值的计算规则,资源配置策略可以包含不同资源使用率(处理器使用率、内存使用率和磁盘使用率等)在不同的范围内的资源使用权重;资源数据获取代理(proxy)可以用于读取资源数据库中存储的资源数据,以获取第一节点列表所包含的K个任务节点对应的资源数据。可选地,资源数据获取代理(proxy)还可以对获取到的K个任务节点对应的资源数据进行预处理,例如,处理K个任务节点对应的资源数据中的缺失值、异常值等。计算函数是指根据资源配置策略的规则生成的资源剩余值(score)对应的计算逻辑,可以用于作为资源剩余值(score)的计算依据。计算模块负责根据计算函数以及K个任务节点的资源数据,计算得到K个任务节点对应的资源剩余值(score)。排序模块负责根据资源剩余值(score)的大小对K个任务节点进行排序。
如图4所示,可以调用资源数据获取代理(proxy)从资源数据库中获取第一节点列表所包含的K个任务节点所对应的资源数据;在资源数据中确定任务节点i所对应的处理器使用率、内存使用率和磁盘使用率;进而可以根据资源配置策略确定任务节点i的处理器使用率所对应的处理器使用权重、任务节点i的内存使用率所对应的内存使用权重,以及任务节点i的磁盘使用率所对应的磁盘使用权重。
资源配置策略可以根据软件编译任务的特点进行设置。请参见图5,图5是本申请实施例提供的一种资源配置策略的示意图,其中,图5所示的资源配置策略是针对均衡利用任务节点的处理器资源、内存资源和磁盘资源的软件编译任务设置的。如图5所示,资源配置策略可以设置为:当磁盘使用率在0-80%之间时,其对应的磁盘使用权重为1,当磁盘使用率在80%-90%时,其对应的磁盘使用权重为0.5,当磁盘使用率在90%-99%之间时,其对应的磁盘使用权重为0.1,当存储使用率为100%时,其对应的磁盘使用权重为0;当处理器(CPU)使用率在0-80%之间时,其对应的处理器(CPU)使用权重为1,当处理器(CPU)使用率在80%-90%时,其对应的处理器(CPU)使用权重为0.2,当处理器(CPU)使用率在90%-100%之间时,其对应的处理器(CPU)使用权重为0;当内存使用率在0-80%之间时,其对应的内存使用权重为1,当内存使用率在80%-90%时,其对应的内存使用权重为0.2,当磁盘使用率在90%-100%之间时,其对应的磁盘使用权重为0。
可选地,对于偏向于消耗CPU的软件编译任务而言,可以在资源配置策略中,对处理器使用权重进行适当调整,例如,当处理器使用率在0-80%之间时,可以将处理器使用权重设置为3或者其他大于1的数值;类似地,对于偏向于消耗内存的软件编译任务而言,可以在资源配置策略中,对内存使用权重进行适当调整,例如,当内存使用率在0-80%之间时,可以将内存使用权重设置为3或者其他大于1的数值;同理,对于偏向于消耗存储空间的软件编译任务而言,可以在资源配置策略中,对磁盘使用权重进行适当调整,例如,当磁盘使用率在0-80%之间时,可以将磁盘使用权重设置为3或者其他大于1的数值。
如图4所示,可以根据资源配置策略生成资源剩余值(score)的计算函数。可选地,可以将处理器使用权重、内存使用权重以及磁盘使用权重之间的乘积,确定为任务节点i所对应的资源剩余值;在这种情况下,任务节点i对应的资源剩余值(score)的计算函数可以是:f(x)=f(xcpu)×f(xmem)×f(xstorage)。其中,f(x)表示任务节点i对应的资源剩余值(score),f(xcpu)表示任务节点i对应的处理器使用权重,f(xmem)表示任务节点i对应的内存使用权重,f(xstorage)表示任务节点i对应的磁盘使用权重。可选地,还可以将处理器使用权重、内存使用权重以及磁盘使用权重之和,确定为任务节点i所对应的资源剩余值;在这种情况下,任务节点i对应的资源剩余值(score)的计算函数可以是:f(x)=f(xcpu)+f(xmem)+f(xstorage)。
具体地,请一并参见图6,图6是本申请实施例提供的一种计算资源剩余值的示意图。如图6所示,假设第一节点列表包括任务节点1、任务节点2和任务节点3,其中,任务节点1对应的处理器使用率为85%、内存使用率为30%、磁盘使用率为30%;任务节点2对应的处理器使用率为15%、内存使用率为20%、磁盘使用率为81%;任务节点3对应的处理器使用率为55%、内存使用率为60%、磁盘使用率为60%。假设软件编译任务为均衡型任务,可以采用图5所示的资源配置策略确定各个任务节点对应的资源使用权重。如图6所示,根据图5所示的资源配置策略,可以确定各个任务节点对应的资源使用权重,例如,任务节点1对应的处理器使用权重可以是0.2、内存使用权重可以是1、磁盘使用权重可以是1;任务节点2对应的处理器使用权重可以是1、内存使用权重可以是1、磁盘使用权重可以是0.5;任务节点1对应的处理器使用权重可以是1、内存使用权重可以是1、磁盘使用权重可以是1。
在得到各个任务节点对应的资源使用权重之后,可以利用计算函数f(x)=f(xcpu)×f(xmem)×f(xstorage),通过计算模块,计算得到各个任务节点对应的资源剩余值(score)。如图6所示,任务节点1对应的资源剩余值(score)可以是0.2;任务节点2对应的资源剩余值(score)可以是0.5;任务节点1对应的资源剩余值(score)可以是1。
可选地,若第一节点列表中存在资源剩余值大于或等于资源阈值的任务节点,则可以将第一节点列表中最大的资源剩余值所对应的任务节点,确定为软件编译任务请求对应的执行节点;进而可以将软件编译任务请求发送至执行节点,以使执行节点处理软件编译任务请求所指示的软件编译任务,从而可以提高软件编译任务的执行效率。
其中,资源阈值的定义可以参考上文的描述,在此不再进行赘述。假设资源阈值为0.1,任务节点1、任务节点2和任务节点3所对应的资源剩余值均大于或等于资源阈值的任务节点,也就是说,第一节点列表中所包含的任务节点均具有足够的可用资源来执行软件编译任务请求所指示的软件编译任务,因此,将软件编译任务调度至第一节点列表中的任务节点来执行,有助于提高软件编译任务的执行效率。
为了使得软件编译任务的执行效率达到最大化,可以通过任务调度代理(proxy)中的排序模块,对各个任务节点进行排序。例如,可以根据各个任务节点对应的资源剩余值(score),将各个任务节点从大到小进行排序,排序后的任务节点为{任务节点3,任务节点2,任务节点1}。进而可以将第一节点列表中最大的资源剩余值所对应的任务节点,即任务节点3,确定为软件编译任务请求对应的执行节点。可以理解的是,任务节点对应的资源剩余值越大,其对应的可用资源也就越大,因此,相对于第一节点列表中的其他任务节点而言,选择任务节点3来执行软件编译任务,有助于提高软件编译任务的执行效率。此时,任务调度代理(proxy)可以将执行节点(任务节点3)对应的标识信息,例如,任务节点3对应的IP地址、MAC地址等信息,发送至调度平台中的软件编译任务分发模块,软件编译任务分发模块负责将软件编译任务发送给第一节点列表中的任务节点3,任务节点3在接收到软件编译任务之后,执行该软件编译任务,从而完成软件编译任务的调度。
请一并参见图7,图7是本申请实施例提供的一种任务调度方法的流程示意图二。如图7所示,任务调度流程开始,调度平台可以获取资源节点池中所有任务节点的资源数据,进而可以根据资源配置策略以及资源数据,计算得到各个任务节点对应的资源剩余值(score),资源剩余值(score)的计算方式可以参考上文的描述,在此不再进行赘述;可以根据各个任务节点的资源剩余值(score)从大到小对各个任务节点进行排序,并找出最大的资源剩余值(score)对应的任务节点。
进一步地,判断最大的资源剩余值(score)对应的任务节点是否唯一,若是,则输出最大的资源剩余值(score)对应的任务节点,并将其确定为软件编译任务请求对应的执行节点来处理软件编译任务;假设最大的资源剩余值(score)对应的任务节点不唯一,例如,最大的资源剩余值(score)为1,任务节点2和任务节点3对应的资源剩余值(score)均为1,此时,最大的资源剩余值(score)对应的任务节点不唯一。在这种情况下,可以随机选择一个最大的资源剩余值(score)对应的任务节点作为执行节点来处理软件编译任务。例如,可以将任务节点2作为执行节点来处理软件编译任务,或者也可以将任务节点3作为执行节点来处理软件编译任务。可选地,在本申请实施例中,若最大的资源剩余值(score)小于资源阈值,则可以将软件编译任务调度至资源节点池中未检测到资源数据的任务节点来执行,具体可以参见图3所示的步骤S103的描述。
步骤S103:若第一节点列表中的K个任务节点所对应的资源剩余值均小于资源阈值,则在第二节点列表所包含的任务节点中确定软件编译任务请求对应的调度节点,将软件编译任务请求发送至调度节点,以使调度节点处理软件编译任务请求所指示的软件编译任务。
其中,第二节点列表中的任务节点是指资源节点池中未检测到资源数据的任务节点,换句话说,第二节点列表中的任务节点是指资源节点池中资源数据为空的任务节点,任务节点未检测到资源数据的原因可以参考上文的描述,在此不再进行赘述。资源阈值的定义可以参考上文的描述,在此也不再进行赘述。
在本申请实施例中,当第一节点列表中的K个任务节点所对应的资源剩余值均小于资源阈值时,说明第一节点列表中的任务节点的资源剩余值过低,第一节点列表中的K个任务节点均不具备足够的可用资源来执行软件编译任务请求所指示的软件编译任务。如果选择第一节点列表中的任务节点执行软件编译任务,可能会导致软件编译任务的处理效率低下。在这种情况下,可以在第二节点列表所包含的任务节点中选择一个任务节点作为调度节点,来处理软件编译任务,进而可以将软件编译任务请求发送至该调度节点,调度节点接收到软件编译任务请求之后,执行软件编译任务请求所指示的软件编译任务。可选地,在本申请实施例中,当第二节点列表存在多个任务节点时,可以在第二节点列表中随机选择一个任务节点作为调度节点,来处理软件编译任务。
假设第二节点列表包括任务节点4,由于任务节点4指资源节点池中未检测到资源数据的任务节点,任务节点4对应的资源剩余值暂时无法计算。任务节点4对应的资源剩余值可能会出现两种情况:①任务节点4对应的资源剩余值大于第一节点列表中的各个任务节点对应的资源剩余值;②第一节点列表中存在资源剩余值大于或等于任务节点4。
当任务节点4对应的资源剩余值大于第一节点列表中的各个任务节点对应的资源剩余值时,相对于选择第一节点列表中的任务节点而言,选择第二节点列表中的任务节点4执行软件编译任务,可以显著提高软件编译任务的处理效率。当第一节点列表中存在资源剩余值大于或等于任务节点4时,由于第一节点列表和第二节点列表中的任务节点均不具备足够的可用资源来执行软件编译任务请求所指示的软件编译任务,此时,无论是选择第一节点列表中的任务节点来执行软件编译任务,还是选择第二节点列表中的任务节点来执行软件编译任务,软件编译任务的处理效率均不高。因此,当第一节点列表中的K个任务节点所对应的资源剩余值均小于资源阈值时,可以在第二节点列表所包含的任务节点中任意选择一个任务节点作为调度节点来处理软件编译任务。由于第二节点列表中的任务节点对应的资源剩余值可能会大于第一节点列表中的任务节点对应的资源剩余值,相对于选择第一节点列表中的任务节点而言,选择第二节点列表中的任务节点执行软件编译任务,可以提高软件编译任务的处理效率。
本申请实施例中,在接收软件编译任务请求之后,可以获取资源节点池中的第一节点列表包含的K个任务节点所对应的资源数据;进而根据资源数据中的处理器使用率、内存使用率和磁盘使用率,确定第一节点列表中的K个任务节点所对应的资源剩余值。当第一节点列表中的K个任务节点所对应的资源剩余值均小于资源阈值时,说明第一节点列表中的任务节点的资源剩余值过低,选择第一节点列表中的任务节点执行软件编译任务请求所指示的软件编译任务,会导致软件编译任务的处理效率低下。在这种情况下,可以在第二节点列表所包含的任务节点中选择一个任务节点作为调度节点来处理软件编译任务,由于第二节点列表中的任务节点是指资源节点池中未检测到资源数据的任务节点,第二节点列表中的任务节点对应的资源剩余值可能会大于第一节点列表中的任务节点对应的资源剩余值,因此相对于选择第一节点列表中的任务节点而言,选择第二节点列表中的任务节点执行软件编译任务,可以提高软件编译任务的处理效率。
请参见图8,图8是本申请实施例提供的一种任务调度方法的流程示意图三,该任务调度方法可以由调度平台(例如,图1所对应实施例中的调度平台10)来执行。如图8所示,该任务调度方法可以包括以下步骤S201-步骤S207,其中:
步骤S201:通过主进程启动数据检测定时任务,创建与数据检测定时任务相关联的线程池。
具体地,请一并参见图9,图9是本申请实施例提供了一种资源数据检测的示意图一。如图9所示,调度平台中的资源数据检测模块可以包括:主进程、数据检测定时任务、线程池等对象。其中,主进程可以用于启动数据检测定时任务、检查数据检测定时任务是否正常运行等。当出现网络故障等原因导致数据检测定时任务无法正常运行时,可以通过主进程重启数据检测定时任务。数据检测定时任务负责从线程池中获取一定数量的数据检测线程,将资源节点池中的每一个任务节点的数据检测定时任务交由每一个数据检测线程来执行,达到并发执行数据检测定时任务的目的,从而有助于提高资源数据的检测效率。
可以理解的是,通过设置数据检测定时任务,可以周期性地获取资源数据,有助于提高资源数据的获取效率。此外,数据检测定时任务可以确保各个任务节点的资源数据得到及时更新和同步,有助于提高后续资源剩余值的计算准确性和及时性。
在本申请实施例中,主进程还可以用于创建数据检测定时任务相关联的线程池。其中,线程池可以包含多个数据检测线程,线程池主要负责分配和回收数据检测线程。数据检测定时任务可以从线程池请求获取工作状态为空闲状态的数据检测线程来进行数据检测,数据检测定时任务执行完毕之后,可以对释放该数据检测线程,线程池可以回收释放后的数据检测线程,将其工作状态重新设置为空闲状态。
数据检测线程可以用于执行数据检测定时任务,也就是说,数据检测线程可以远程登录到资源节点池中的任务节点上,从而对资源节点池中的任务节点进行数据检测,以获得资源节点池中的任务节点对应的资源数据。线程池中的数据检测线程执行完成数据检测定时任务之后,可以将数据检测结果回传给数据检测定时任务,数据检测定时任务可以将资源节点池中的任务节点对应的资源数据进行汇总,并将汇总后的资源数据统一写入资源数据库,从而快速获取资源节点池中的任务节点的资源数据。其中,资源数据库可以用于存储资源节点池中的任务节点对应的资源数据。
如图9所示,在本申请实施例中,可以通过主进程启动数据检测定时任务,数据检测定时任务启动之后,创建与数据检测定时任务相关联的线程池,从而节省资源,避免线程池资源的浪费。可选地,还可以在启动数据检测定时任务之前,通过主进程预先创建线程池,当需要执行数据检测定时任务时,无需等待线程池的创建,从而提高资源数据的检测效率。
步骤S202:通过主进程将数据检测定时任务分发至线程池,若系统时间满足数据检测定时任务中的任务触发时间,则通过线程池中的数据检测线程,对资源节点池中的任务节点进行数据检测。
任务触发时间是指在数据检测定时任务中预先设置的执行任务的具体时间点。在实际应用中,可以根据不同的需求设定不同的任务触发时间,例如,任务触发时间可以是每天的固定时间、每小时的特定几分钟等。由于本申请实施例是采用定时任务对资源节点池中的任务节点进行数据检测,因此在进行数据检测时是周期性的,也就是说,当系统时间到达数据检测定时任务中的任务触发时间时,数据检测定时任务就会被触发,此时可以通过线程池中的数据检测线程,对资源节点池中的任务节点进行数据检测,进而可以自动获取资源节点池中的任务节点的资源数据,以提高资源数据的实时性。
具体地,可以通过主进程将数据检测定时任务分发至线程池,数据检测定时任务可以从线程池中获取一定数量的数据检测线程,将资源节点池中的每一个任务节点的数据检测定时任务交由每一个数据检测线程来执行,达到并发执行数据检测定时任务的目的,从而有助于提高资源数据的检测效率。进一步地,可以获取线程池中包含的数据检测线程的线程数量,以及获取资源节点池中包含的任务节点的节点数量,并将线程数量与节点数量进行比对。如图9所示,如果线程数量与节点数量相等,或者线程数量大于节点数量,则可以一次性为资源节点池中的任务节点分配与其对应的数据检测线程,通过线程池中的数据检测线程,一次性执行数据检测定时任务,对资源节点池中的任务节点进行数据检测,以获取资源节点池中的任务节点所对应的资源数据。
若线程数量小于节点数量,则可以根据节点数量和线程数量之间的倍数关系,确定数据检测定时任务对应的L个分批执行阶段;进而可以通过主进程,为L个分批执行阶段中的每一个分批执行阶段分配资源节点池中的任务节点。其中,L为大于1的整数,L的具体取值可以是2,3,4……。分批执行阶段可以理解为将数据检测定时任务分成多个阶段进行执行,每一个分批执行阶段分别调用线程池中的数据检测线程对资源节点池中的部分任务节点进行数据检测。
请一并参见图10,图10是本申请实施例提供的一种资源数据检测的示意图二。如图10所示,假设线程池中有m个数据检测线程,同一个标签(label)下的资源节点池中有n个任务节点;m、n均为大于1的整数,且m<n,也就是说,线程池中的数据检测线程对应的线程数量,小于资源节点池中的任务节点对应的节点数量。
分批执行阶段的数量L可以根据节点数量和线程数量之间的倍数关系确定。具体地,分批执行阶段的数量,其中,n表示资源节点池中的任务节点对应的节点数量,m表示线程池中的数据检测线程对应的线程数量;n/m表示节点数量与线程数量之间的比值,/>表示向上取整运算。
进一步地,可以通过主进程,为L个分批执行阶段中的每一个分批执行阶段分配资源节点池中的任务节点。如图10所示,对于前L-1个分批执行阶段,可以为一个分批执行阶段分配资源节点池中的m个任务节点,在前L-1个分批执行阶段的每一个分批执行阶段,可以通过线程池中的m个数据检测线程,对资源节点池中的m个任务节点分别进行数据检测。如此,在前L-1个分批执行阶段中,线程池中的数据检测线程可以得到充分使用,避免了数据检测线程资源的浪费。
对于第L个分批执行阶段,可以为其分配资源节点池中的剩余未进行数据检测的任务节点,第L个分批执行阶段分配的节点数量j=n%m;其中,%表示取余运算。j为大于或等于0的整数。也就是说,对于第L个分批执行阶段,可以在线程池中的m个数据检测线程中选取j个数据检测线程,对资源节点池中剩余的j个任务节点分别进行数据检测。
在本申请实施例中,当线程数量小于节点数量时,可以将数据检测定时任务分成L个分批执行阶段来执行,从而可以分批从线程池中获取相应数量的数据检测线程来进行数据检测,相对于临时创建与资源节点池中的任务节点对应的节点数量相匹配数据检测线程,可以减少数据检测线程的创建和销毁的时间开销。
当系统时间满足数据检测定时任务中的任务触发时间时,可以通过线程池中的数据检测线程,对每一个分批执行阶段分配的任务节点进行数据检测,从而可以获取资源节点池中的任务节点对应的资源数据。
具体地,当系统时间满足数据检测定时任务中的任务触发时间时,可以通过线程池中的数据检测线程,对L个分批执行阶段中的第一个分批执行阶段对应的任务节点进行数据检测;例如,线程池中有m个数据检测线程,可以为第一个分批执行阶段分配资源节点池中的m个任务节点,进而可以通过线程池中的m个数据检测线程,对资源节点池中的m个任务节点分别进行数据检测,获取第一个分批执行阶段对应的m个任务节点的资源数据。第一个分批执行阶段对应的m个任务节点的资源数据获取完成之后,可以将第一个分批执行阶段对应的m个数据检测线程进行释放,线程池将m个数据检测线程进行回收。
类似地,可以通过线程池中的数据检测线程,对L个分批执行阶段中的第二个分批执行阶段对应的任务节点进行数据检测。例如,可以将节点资源池中剩余的任务节点中选取m个任务节点作为第二个分批执行阶段对应的任务节点,进而可以通过线程池中的m个数据检测线程,对第二个分批执行阶段对应的m个任务节点分别进行数据检测,获取第二个分批执行阶段对应的m个任务节点的资源数据。第二个分批执行阶段对应的m个任务节点的资源数据获取完成之后,可以将第二个分批执行阶段对应的m个数据检测线程进行释放,线程池将m个数据检测线程进行回收。可以理解的是,前L-1个分批执行阶段对应的数据检测方式均类似,在此不再一一进行赘述。
对于第L个分批执行阶段,可以为其分配资源节点池中的剩余未进行数据检测的任务节点,例如,第L个分批执行阶段分配j个任务节点,其中,j=n%m,此时可以在线程池中的m个数据检测线程中选取j个数据检测线程,对资源节点池中剩余的j个任务节点分别进行数据检测,获取第L个分批执行阶段对应的j个任务节点的资源数据。第L个分批执行阶段对应的j个任务节点的资源数据获取完成之后,可以将第L个分批执行阶段对应的j个数据检测线程进行释放,线程池将j个数据检测线程进行回收。
进一步地,可以通过数据检测定时任务,合并资源节点池中的任务节点对应的资源数据。具体地,数据检测定时任务可以将资源节点池中的所有的任务节点对应的资源数据进行汇总,并将汇总后的资源数据统一写入资源数据库,从而快速获取资源节点池中的任务节点的资源数据。
请参见图11,是本申请实施例提供的一种资源数据检测方法的流程示意图。如图11所示,数据检测开始,主进程创建线程池,线程池创建完成之后,主进程可以启动数据检测定时任务。主进程可以定期检查数据检测定时任务是否正常运行,如果出现不正常的情况,主进程可以重启数据检测定时任务。数据检测定时任务启动之后,可以通过线程池中的数据检测线程获取资源节点池中的任务节点所对应的资源数据。具体地,可以判断线程池中的数据检测线程的线程数量是否大于或等于资源节点池中的任务节点的节点数量。如果线程数量大于或等于节点数量,则数据检测定时任务可以一次性地对所有的任务节点启动并发数据检测线程执行数据检测定时任务,以获取资源节点池中的所有任务节点的资源数据;如果线程数量小于节点数量,则数据检测定时任务可以分批对所有任务节点并发数据检测线程执行数据检测定时任务以获取资源节点池中的所有任务节点的资源数据,数据检测的具体实现方式可以参考前文的描述,在此不再进行赘述。数据检测线程并发执行完毕之后,可以将执行结果上报给数据检测定时任务,然后数据检测定时任务将得到的任务节点对应的资源数据写入到资源数据库中,从而完成资源数据的获取。
步骤S203:将未检测到资源数据的任务节点添加至第二节点列表,将检测到资源数据的任务节点添加至第一节点列表,将第一节点列表中的任务节点对应的资源数据存储至资源数据库。
在本申请实施例中,可以将当前资源节点池中未检测到资源数据的任务节点添加至第二节点列表,换句话说,第二节点列表中的任务节点对应的资源数据为空;将当前资源节点池中检测到资源数据的任务节点添加至第一节点列表,并将第一节点列表中的任务节点对应的资源数据存储至资源数据库,此外,还可以将资源数据所对应的任务触发时间与资源数据一起存储至资源数据库,以便通过任务触发时间可以快速从资源数据库中获取对应的资源数据。
可以理解的是,第一节点列表和第二节点列表中的任务节点可以进行动态调整。举例而言,当系统时间满足任务触发时间,若资源节点池中的任务节点i可以检测到资源数据,则可以将任务节点i添加至第一节点列表;在下一个任务触发时间时,若任务节点i检测不到资源数据,则可以将任务节点i从第一节点列表中移除,并将其添加至第二节点列表;类似地,在下下一个任务触发时间时,若任务节点i重新检测到资源数据,则可以将任务节点i从第二节点列表中移除,并将其添加至第一节点列表。
步骤S204:接收软件编译任务请求,记录软件编译任务请求对应的请求接收时间,获取请求接收时间与数据检测定时任务在资源数据库中关联的各个任务触发时间之间的时间差值。
步骤S205:将最小的时间差值关联的任务触发时间所对应的资源数据,确定为资源节点池中的第一节点列表包含的K个任务节点所对应的资源数据。
其中,请求接收时间是指接收到软件编译任务请求的时间。由于本申请实施例是采用定时任务获取任务节点的数据资源,因此资源数据库中存储的数据资源是周期性获取的,数据检测定时任务的一个任务触发时间对应一组资源数据,多个任务触发时间对应多组资源数据。
在本申请实施例中,在接收到软件编译任务请求之后,可以记录软件编译任务请求对应的请求接收时间,并计算请求接收时间与数据检测定时任务在资源数据库中关联的各个任务触发时间之间的时间差值,从各个时间差值中选择最小的时间差值。可以理解的是,最小的时间差值关联的任务触发时间所对应的资源数据是资源数据库中最新存储的资源数据,因此将最小的时间差值关联的任务触发时间所对应的资源数据,确定为资源节点池中的第一节点列表包含的K个任务节点所对应的资源数据,有助于提高后续资源剩余值的计算准确性和及时性。
可选地,除了从资源数据库中获取第一节点列表包含的K个任务节点所对应的资源数据之外,还可以通过线程池中的数据检测线程实时获取资源节点池中的任务节点的资源数据,将获取到的资源数据确定为第一节点列表包含的K个任务节点所对应的资源数据,从而可以进一步提高后续资源剩余值的计算准确性和及时性。其中,通过数据检测线程获取资源数据的具体实现方式可以参考上文的描述,在此不再进行赘述。
步骤S206:根据资源数据中的处理器使用率、内存使用率和磁盘使用率,确定第一节点列表中的K个任务节点所对应的资源剩余值。
步骤S207:若第一节点列表中的K个任务节点所对应的资源剩余值均小于资源阈值,则在第二节点列表所包含的任务节点中确定软件编译任务请求对应的调度节点,将软件编译任务请求发送至调度节点,以使调度节点处理软件编译任务请求所指示的软件编译任务。
其中,步骤S206和步骤S207的具体实现过程可以参见上述图3所对应实施例中的步骤S102和步骤S103,此处不再进行赘述。
可选地,若第一节点列表中的K个任务节点所对应的资源剩余值均小于资源阈值,且第二节点列表不存在任务节点,则可以通过资源预测模型对第一节点列表中的K个任务节点进行资源预测,得到第一节点列表中的K个任务节点在期望时间所对应的预测剩余值;进而可以将软件编译任务请求发送至最大的预测剩余值所对应的任务节点i,以使任务节点i在期望时间处理软件编译任务请求所指示的软件编译任务。
其中,资源预测模型是根据资源节点池中包含的任务节点所对应的历史资源数据进行训练得到的预测模型,资源预测模型可以输出资源节点池中的各个任务节点在期望时间的预测剩余值。此处的期望时间是相对于当前时间而言的未来的某个时间。例如,当前时间为20XX-12-12,12:15,期望时间可以是20XX-12-12,12:16,或者也可以是20XX-12-12,12:20,具体的时间可以根据实际情况确定。预测剩余值是指根据资源预测模型得到的资源剩余值。
在本申请实施例中,当第一节点列表中的K个任务节点所对应的资源剩余值均小于资源阈值,且第二节点列表不存在任务节点时,表明当前时间资源节点池中的所有任务节点均处于繁忙状态;换句话说,当前时间资源节点池中的所有节点均不具备足够的可用资源来执行软件编译任务请求所指示的软件编译任务。在这种情况下,可以将软件编译任务调度至期望时间执行,避免软件编译任务在可用资源不足的时间执行而导致设备资源拥堵,导致软件编译任务的执行效率降低。
可以理解的是,由于当前第二节点列表不存在任务节点时,因此当前第一节点列表中所包含的任务节点与资源节点池中所包含的任务节点一致,资源节点池中的任务节点均可以检测到资源数据。在本申请实施例中,可以获取当前第一节点列表中的K个任务节点对应的资源数据的获取时间、K个任务节点与获取时间相关联的资源剩余值、以及期望时间,并将其输入至资源预测模型,通过资源预测模型对第一节点列表中的K个任务节点进行资源预测,得到第一节点列表中的K个任务节点在期望时间所对应的预测剩余值。
进一步地,可以从K个预测剩余值中确定最大的预测剩余值,并将软件编译任务请求发送至最大的预测剩余值所对应的任务节点i,任务节点i在接收到软件编译任务请求之后,在期望时间处理软件编译任务请求所指示的软件编译任务。其中,资源预测值的计算方式可以参考上文资源剩余值的计算方式,在此不再进行赘述。
在本申请实施例中,任务节点i在期望时间的预测剩余值大于或等于K个任务节点中的剩余任务节点。可选地,当任务节点i在期望时间的预测剩余值小于资源阈值时,可以对期望时间进行调整,再通过资源预测模型预测输出资源节点池中的各个任务节点在调整后的期望时间的预测剩余值,直至最大的预测剩余值大于或等于资源阈值。
在初始预测模型的训练过程中,可以在资源数据库中获取资源节点池中的任务节点对应的历史资源数据作为初始预测模型的样本资源数据,历史资源数据可以包括任务节点的历史处理器使用率、历史内存使用率和历史磁盘使用率等参数。可选地,在将历史资源数据作为样本资源数据之前,还可以对历史资源数据进行数据清洗,例如,删除历史资源数据中的异常值等。历史资源数据对应的历史资源剩余值可以作为样本资源数据的标签信息,以便调整初始预测模型的网络参数(例如,学习率,卷积参数信息等)。初始预测模型可以包括但不限于:自回归差分移动平均(Autoregressive Integrated Moving Average,ARIMA)、长短期记忆网络模型(Long Short Term Memory,LSTM)、循环神经网络模型(Recurrent Neural Networks,RNN)等时序相关的网络模型中的一种或者多种。
进一步地,可以将样本资源数据以及样本资源数据对应的获取时间输入至初始预测模型,通过初始预测模型输出样本资源数据对应的样本预测值,获取样本预测值与样本资源数据对应的资源剩余值之间的损失值,并通过损失值对初始预测模型的网络参数进行修正,将包含修正后的网络参数的初始预测模型确定为资源预测模型。其中,损失值可以理解为样本预测值与标签信息的差异程度。
其中,计算损失值所采用的损失函数可以包括但不限于交叉熵损失函数、均方误差损失函数中的一种或者多种损失函数。具体地,可以通过将损失值与损失阈值进行比较,对初始预测模型的网络参数进行修正,直至满足训练停止条件。例如,若损失值大于损失阈值,则可以认为损失值未达到收敛,此时,需要对初始预测模型的网络参数进行调整,并且继续对该初始预测模型进行迭代训练,直至损失值小于或等于损失阈值,此时可认为初始预测模型满足训练停止条件,或者,当训练次数到达训练阈值时,也可以认为初始预测模型满足训练停止条件,进而可以将包含修正后的网络参数的初始预测模型确定为资源预测模型。损失阈值和训练阈值为预先设置的参数,具体取值可以根据实际的应用场景确定,本申请实施例对此不做限定。
可选地,如果软件编译任务对应的流水线的运行时间过长(例如,运行时间大于设置的时间阈值),那么该条流水线对资源的占用时长就会增加。如果采用即时的资源使用率来计算各个任务节点的资源剩余值,再根据资源剩余值进行任务调度,这种调度方式可能会导致软件编译任务的执行效率低下。
在上述情况下,可以通过上述提及的资源预测模型对资源节点池中包含的任务节点进行资源预测,得到源节点池中包含的任务节点在期望时间所对应的预测剩余值,将预测剩余值作为流水线的调度依据,将软件编译任务调度至较大的预测剩余值所关联的期望时间内执行,有助于任务调度过程中设备资源利用更加均衡,进而可以避免软件编译任务在可用资源不足的时间执行而导致设备资源拥堵,导致软件编译任务的执行效率降低。
请参见图12,图12是本申请实施例提供的一种任务调度方法的流程示意图四。如图12所示,任务调度流程开始,调度平台可以获取资源节点池中所有任务节点的资源数据,判断各个任务节点的资源数据是否为空,若某一个任务节点的资源数据为空,则将该任务节点记录到第二节点列表;若某一任务节点的资源数据不为空,则将该任务节点记录到第一节点列表。进而计算第一节点列表的任务节点对应的资源剩余值(score),找出最大的资源剩余值(score)对应的任务节点。其中,资源剩余值的计算方式可以参考上文的描述,在此不再进行赘述。
进一步地,可以将最大的资源剩余值(score)与资源阈值进行比对,若最大的资源剩余值(score)大于或等于资源阈值0.1,则判断最大的资源剩余值(score)对应的任务节点是否唯一。为便于理解,本申请实施例以资源阈值为0.1进行举例,在实际应用中,资源阈值的具体取值可以根据实际情况确定。若最大的资源剩余值(score)对应的任务节点唯一,则输出最大的资源剩余值(score)对应的任务节点,并将其确定为软件编译任务请求对应的执行节点来处理软件编译任务。若最大的资源剩余值(score)对应的任务节点不唯一,随机选择一个最大的资源剩余值(score)对应的任务节点作为执行节点来处理软件编译任务。
如图12所示,若最大的资源剩余值(score)小于资源阈值0.1,则表明第一节点列表中的任务节点均不具备足够的可用资源来执行软件编译任务请求所指示的软件编译任务。在这种情况下,可以判断此时第二节点列表是否为空,若第二节点列表不为空,则可以在第二节点列表所包含的任务节点中随机选择一个任务节点作为调度节点,来处理软件编译任务;若第二节点列表为空,则可以等待一段时间再重新获取资源节点池中的任务节点对应的资源数据,进而再进行软件编译任务的调度。等待时间可以是1分钟,或者5分钟等,具体的等待时间可以根据实际情况确定,本申请实施例对此不做限定。
本申请实施例中,在接收软件编译任务请求之后,可以获取资源节点池中的第一节点列表包含的K个任务节点所对应的资源数据;进而根据资源数据中的处理器使用率、内存使用率和磁盘使用率,确定第一节点列表中的K个任务节点所对应的资源剩余值。当第一节点列表中的K个任务节点所对应的资源剩余值均小于资源阈值时,说明第一节点列表中的任务节点的资源剩余值过低,选择第一节点列表中的任务节点执行软件编译任务请求所指示的软件编译任务,会导致软件编译任务的处理效率低下。在这种情况下,可以在第二节点列表所包含的任务节点中选择一个任务节点作为调度节点来处理软件编译任务,由于第二节点列表中的任务节点是指资源节点池中未检测到资源数据的任务节点,第二节点列表中的任务节点对应的资源剩余值可能会大于第一节点列表中的任务节点对应的资源剩余值,因此相对于选择第一节点列表中的任务节点而言,选择第二节点列表中的任务节点执行软件编译任务,可以提高软件编译任务的处理效率。
在本申请中,涉及到的任务节点的资源数据获取技术方案实施,在本申请以上实施例运用到具体产品或技术中时,相关数据(例如,资源数据)收集、使用和处理过程应该遵守国家法律法规要求,符合合法、正当、必要的原则,不涉及获取法律法规禁止或限制的数据类型。
请参见图13,图13是本申请实施例提供的一种任务调度装置的结构示意图。可以理解的是,该任务调度装置可以应用在图1所示的调度平台10中。如图13所示,该任务调度装置1可以包括:资源数据获取模块11、资源剩余值确定模块12和调度节点确定模块13,其中:
资源数据获取模块11,用于接收软件编译任务请求,获取资源节点池中的第一节点列表所包含的K个任务节点所对应的资源数据;K为正整数;
资源剩余值确定模块12,用于根据资源数据中的处理器使用率、内存使用率和磁盘使用率,确定第一节点列表中的K个任务节点所对应的资源剩余值;
调度节点确定模块13,用于若第一节点列表中的K个任务节点所对应的资源剩余值均小于资源阈值,则在第二节点列表所包含的任务节点中确定软件编译任务请求对应的调度节点,将软件编译任务请求发送至调度节点,以使调度节点处理软件编译任务请求所指示的软件编译任务;第二节点列表中的任务节点是指资源节点池中未检测到资源数据的任务节点。
其中,资源数据获取模块11、资源剩余值确定模块12和调度节点确定模块13的具体功能实现方式可以参见上述图3所对应实施例中的步骤S101-步骤S103,这里不再进行赘述。
在一种可能的实施方式中,任务调度装置1还可以包括:检测线程创建模块14、检测任务分发模块15和任务节点添加模块16,其中:
检测线程创建模块14,用于通过主进程启动数据检测定时任务,创建与数据检测定时任务相关联的线程池;
检测任务分发模块15,用于通过主进程将数据检测定时任务分发至线程池,若系统时间满足数据检测定时任务中的任务触发时间,则通过线程池中的数据检测线程,对资源节点池中的任务节点进行数据检测;
任务节点添加模块16,用于将未检测到资源数据的任务节点添加至第二节点列表,将检测到资源数据的任务节点添加至第一节点列表,将第一节点列表中的任务节点对应的资源数据存储至资源数据库。
其中,检测线程创建模块14、检测任务分发模块15和任务节点添加模块16的具体功能实现方式可以参见上述图8所对应实施例中的步骤S201-步骤S203,这里不再进行赘述。
在一种可能的实施方式中,检测任务分发模块15可以包括:数量获取单元151、阶段划分单元152、节点分配单元153和数据检测单元154,其中:
数量获取单元151,用于通过主进程将数据检测定时任务分发至线程池,获取线程池中包含的数据检测线程的线程数量,以及获取资源节点池中包含的任务节点的节点数量;
阶段划分单元152,用于若线程数量小于节点数量,则根据节点数量和线程数量之间的倍数关系,确定数据检测定时任务对应的L个分批执行阶段;L为大于1的整数;
节点分配单元153,用于通过主进程,为L个分批执行阶段中的每一个分批执行阶段分配资源节点池中的任务节点;
数据检测单元154,用于若系统时间满足数据检测定时任务中的任务触发时间,则通过线程池中的数据检测线程,对每一个分批执行阶段分配的任务节点进行数据检测。
其中,数量获取单元151、阶段划分单元152、节点分配单元153和数据检测单元154的具体功能实现方式可以参见上述图8所对应实施例中的步骤S202,这里不再进行赘述。
在一种可能的实施方式中,数据检测单元154可以包括:第一检测子单元1541、线程释放子单元1542、第二检测子单元1543和数据汇总子单元1544,其中:
第一检测子单元1541,用于若系统时间满足数据检测定时任务中的任务触发时间,则通过线程池中的数据检测线程,对L个分批执行阶段中的第一个分批执行阶段对应的任务节点进行数据检测;
线程释放子单元1542,用于获取第一个分批执行阶段对应的任务节点的资源数据,将第一个分批执行阶段对应的数据检测线程进行释放;
第二检测子单元1543,用于通过线程池中的数据检测线程,对L个分批执行阶段中的第二个分批执行阶段对应的任务节点进行数据检测,获取第二个分批执行阶段对应的任务节点的资源数据,直至获取第L个分批执行阶段对应的任务节点的资源数据;
数据汇总子单元1544,用于通过数据检测定时任务,合并资源节点池中的任务节点对应的资源数据。
其中,第一检测子单元1541、线程释放子单元1542、第二检测子单元1543和数据汇总子单元1544的具体功能实现方式可以参见上述图8所对应实施例中的步骤S202,这里不再进行赘述。
在一种可能的实施方式中,资源数据获取模块11可以包括:时间差值获取单元111和资源数据确定单元112,其中:
时间差值获取单元111,用于记录软件编译任务请求对应的请求接收时间,获取请求接收时间与数据检测定时任务在资源数据库中关联的各个任务触发时间之间的时间差值;
资源数据确定单元112,用于将最小的时间差值关联的任务触发时间所对应的资源数据,确定为资源节点池中的第一节点列表包含的K个任务节点所对应的资源数据。
其中,时间差值获取单元111和资源数据确定单元112的具体功能实现方式可以参见上述图8所对应实施例中的步骤S204和步骤S205,这里不再进行赘述。
在一种可能的实施方式中,资源剩余值确定模块12可以包括:使用率确定单元121、权重确定单元122和资源剩余值计算单元123,其中:
使用率确定单元121,用于在资源数据中确定第一节点列表中的任务节点i所对应的处理器使用率、内存使用率和磁盘使用率;
权重确定单元122,用于根据资源配置策略确定任务节点i的处理器使用率所对应的处理器使用权重、任务节点i的内存使用率所对应的内存使用权重,以及任务节点i的磁盘使用率所对应的磁盘使用权重;
资源剩余值计算单元123,用于将处理器使用权重、内存使用权重以及磁盘使用权重之间的乘积,确定为任务节点i所对应的资源剩余值。
其中,使用率确定单元121、权重确定单元122和资源剩余值计算单元123的具体功能实现方式可以参见上述图3所对应实施例中的步骤S102,这里不再进行赘述。
在一种可能的实施方式中,任务调度装置1还可以包括:执行节点确定模块17和任务执行模块18,其中:
执行节点确定模块17,用于若第一节点列表中存在资源剩余值大于或等于资源阈值的任务节点,则将第一节点列表中最大的资源剩余值所对应的任务节点,确定为软件编译任务请求对应的执行节点;
任务执行模块18,用于将软件编译任务请求发送至执行节点,以使执行节点处理软件编译任务请求所指示的软件编译任务。
其中,执行节点确定模块17和任务执行模块18的具体功能实现方式可以参见上述图3所对应实施例中的步骤S102,这里不再进行赘述。
在一种可能的实施方式中,任务调度装置1还可以包括:资源预测模块19和任务调度模块20,其中:
资源预测模块19,用于若第一节点列表中的K个任务节点所对应的资源剩余值均小于资源阈值,且第二节点列表不存在任务节点,则通过资源预测模型对第一节点列表中的K个任务节点进行资源预测,得到第一节点列表中的K个任务节点在期望时间所对应的预测剩余值;资源预测模型是根据资源节点池中包含的任务节点所对应的历史资源数据进行训练得到的预测模型;
任务调度模块20,用于将软件编译任务请求发送至最大的预测剩余值所对应的任务节点i,以使任务节点i在期望时间处理软件编译任务请求所指示的软件编译任务。
其中,资源预测模块19和任务调度模块20的具体功能实现方式可以参见上述图8所对应实施例中的步骤S207,这里不再进行赘述。
本申请实施例中,在接收软件编译任务请求之后,可以获取资源节点池中的第一节点列表包含的K个任务节点所对应的资源数据;进而根据资源数据中的处理器使用率、内存使用率和磁盘使用率,确定第一节点列表中的K个任务节点所对应的资源剩余值。当第一节点列表中的K个任务节点所对应的资源剩余值均小于资源阈值时,说明第一节点列表中的任务节点的资源剩余值过低,选择第一节点列表中的任务节点执行软件编译任务请求所指示的软件编译任务,会导致软件编译任务的处理效率低下。在这种情况下,可以在第二节点列表所包含的任务节点中选择一个任务节点作为调度节点来处理软件编译任务,由于第二节点列表中的任务节点是指资源节点池中未检测到资源数据的任务节点,第二节点列表中的任务节点对应的资源剩余值可能会大于第一节点列表中的任务节点对应的资源剩余值,因此相对于选择第一节点列表中的任务节点而言,选择第二节点列表中的任务节点执行软件编译任务,可以提高软件编译任务的处理效率。
请参见图14,图14是本申请实施例提供的一种计算机设备的结构示意图。如图14所示,该计算机设备1000可以为图1所对应实施例中的调度平台10。该计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,该计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。
其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选地,用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图14所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
其中,在图14所示的计算机设备1000中,网络接口1004可提供网络通讯功能;用户接口1003主要用于为用户提供输入的接口;处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
接收软件编译任务请求,获取资源节点池中的第一节点列表所包含的K个任务节点所对应的资源数据;K为正整数;
根据资源数据中的处理器使用率、内存使用率和磁盘使用率,确定第一节点列表中的K个任务节点所对应的资源剩余值;
若第一节点列表中的K个任务节点所对应的资源剩余值均小于资源阈值,则在第二节点列表所包含的任务节点中确定软件编译任务请求对应的调度节点,将软件编译任务请求发送至调度节点,以使调度节点处理软件编译任务请求所指示的软件编译任务;第二节点列表中的任务节点是指资源节点池中未检测到资源数据的任务节点。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图3和图8所对应实施例中对任务调度方法的描述,也可执行前文图13所对应实施例中对任务调度装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的任务调度装置1所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3和图8任一个所对应实施例中对任务调度方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
其中,存储介质可以为磁碟、光盘、只读存储器(Read-Only Memory,ROM)或随机存储器(Random Access Memory,RAM)等。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可被部署在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行,分布在多个地点且通过通信网络互连的多个计算设备可以组成区块链系统。
此外,需要说明的是:本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或者计算机程序可以包括计算机指令,该计算机指令可以存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器可以执行该计算机指令,使得该计算机设备执行前文图3和图8任一个所对应实施例中对任务调度方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机程序产品或者计算机程序实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同媒体内容,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。
计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (11)

1.一种任务调度方法,其特征在于,包括:
接收软件编译任务请求,获取资源节点池中的第一节点列表所包含的K个任务节点所对应的资源数据;K为正整数;
根据所述资源数据中的处理器使用率、内存使用率和磁盘使用率,确定所述第一节点列表中的K个任务节点所对应的资源剩余值;
若所述第一节点列表中的K个任务节点所对应的资源剩余值均小于资源阈值,则在第二节点列表所包含的任务节点中确定所述软件编译任务请求对应的调度节点,将所述软件编译任务请求发送至所述调度节点,以使所述调度节点处理所述软件编译任务请求所指示的软件编译任务;所述第二节点列表中的任务节点是指所述资源节点池中未检测到资源数据的任务节点。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过主进程启动数据检测定时任务,创建与所述数据检测定时任务相关联的线程池;
通过所述主进程将所述数据检测定时任务分发至所述线程池,若系统时间满足所述数据检测定时任务中的任务触发时间,则通过所述线程池中的数据检测线程,对所述资源节点池中的任务节点进行数据检测;
将未检测到资源数据的任务节点添加至所述第二节点列表,将检测到资源数据的任务节点添加至所述第一节点列表,将所述第一节点列表中的任务节点对应的资源数据存储至资源数据库。
3.根据权利要求2所述的方法,其特征在于,所述通过所述主进程将所述数据检测定时任务分发至所述线程池,若系统时间满足所述数据检测定时任务中的任务触发时间,则通过所述线程池中的数据检测线程,对所述资源节点池中的任务节点进行数据检测,包括:
通过所述主进程将所述数据检测定时任务分发至所述线程池,获取所述线程池中包含的数据检测线程的线程数量,以及获取所述资源节点池中包含的任务节点的节点数量;
若所述线程数量小于所述节点数量,则根据所述节点数量和所述线程数量之间的倍数关系,确定所述数据检测定时任务对应的L个分批执行阶段;L为大于1的整数;
通过所述主进程,为所述L个分批执行阶段中的每一个分批执行阶段分配所述资源节点池中的任务节点;
若系统时间满足所述数据检测定时任务中的任务触发时间,则通过所述线程池中的数据检测线程,对所述每一个分批执行阶段分配的任务节点进行数据检测。
4.根据权利要求3所述的方法,其特征在于,所述若系统时间满足所述数据检测定时任务中的任务触发时间,则通过所述线程池中的数据检测线程,对所述每一个分批执行阶段分配的任务节点进行数据检测,包括:
若系统时间满足所述数据检测定时任务中的任务触发时间,则通过所述线程池中的数据检测线程,对L个分批执行阶段中的第一个分批执行阶段对应的任务节点进行数据检测;
获取所述第一个分批执行阶段对应的任务节点的资源数据,将所述第一个分批执行阶段对应的数据检测线程进行释放;
通过所述线程池中的数据检测线程,对所述L个分批执行阶段中的第二个分批执行阶段对应的任务节点进行数据检测,获取所述第二个分批执行阶段对应的任务节点的资源数据,直至获取第L个分批执行阶段对应的任务节点的资源数据;
通过所述数据检测定时任务,合并所述资源节点池中的任务节点对应的资源数据。
5.根据权利要求2-4任一项所述的方法,其特征在于,所述获取资源节点池中的第一节点列表包含的K个任务节点所对应的资源数据,包括:
记录所述软件编译任务请求对应的请求接收时间,获取所述请求接收时间与所述数据检测定时任务在资源数据库中关联的各个任务触发时间之间的时间差值;
将最小的时间差值关联的任务触发时间所对应的资源数据,确定为所述资源节点池中的第一节点列表包含的K个任务节点所对应的资源数据。
6.根据权利要求1所述的方法,其特征在于,所述根据所述资源数据中的处理器使用率、内存使用率和磁盘使用率,确定所述第一节点列表中的K个任务节点所对应的资源剩余值,包括:
在所述资源数据中确定所述第一节点列表中的任务节点i所对应的处理器使用率、内存使用率和磁盘使用率;
根据资源配置策略确定所述任务节点i的处理器使用率所对应的处理器使用权重、所述任务节点i的内存使用率所对应的内存使用权重,以及所述任务节点i的磁盘使用率所对应的磁盘使用权重;
将所述处理器使用权重、所述内存使用权重以及所述磁盘使用权重之间的乘积,确定为所述任务节点i所对应的资源剩余值。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第一节点列表中存在资源剩余值大于或等于资源阈值的任务节点,则将所述第一节点列表中最大的资源剩余值所对应的任务节点,确定为所述软件编译任务请求对应的执行节点;
将所述软件编译任务请求发送至所述执行节点,以使所述执行节点处理所述软件编译任务请求所指示的软件编译任务。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第一节点列表中的K个任务节点所对应的资源剩余值均小于所述资源阈值,且所述第二节点列表不存在任务节点,则通过资源预测模型对所述第一节点列表中的K个任务节点进行资源预测,得到所述第一节点列表中的K个任务节点在期望时间所对应的预测剩余值;所述资源预测模型是根据所述资源节点池中包含的任务节点所对应的历史资源数据进行训练得到的预测模型;
将所述软件编译任务请求发送至最大的预测剩余值所对应的任务节点i,以使所述任务节点i在所述期望时间处理所述软件编译任务请求所指示的软件编译任务。
9.一种任务调度装置,其特征在于,包括:
资源数据获取模块,用于接收软件编译任务请求,获取资源节点池中的第一节点列表所包含的K个任务节点所对应的资源数据;K为正整数;
资源剩余值确定模块,用于根据所述资源数据中的处理器使用率、内存使用率和磁盘使用率,确定所述第一节点列表中的K个任务节点所对应的资源剩余值;
调度节点确定模块,用于若所述第一节点列表中的K个任务节点所对应的资源剩余值均小于资源阈值,则在第二节点列表所包含的任务节点中确定所述软件编译任务请求对应的调度节点,将所述软件编译任务请求发送至所述调度节点,以使所述调度节点处理所述软件编译任务请求所指示的软件编译任务;所述第二节点列表中的任务节点是指所述资源节点池中未检测到资源数据的任务节点。
10.一种计算机设备,其特征在于,包括存储器和处理器;
所述存储器与所述处理器相连,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1至8任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1至8任一项所述的方法。
CN202311010527.8A 2023-08-11 2023-08-11 任务调度方法、装置、设备以及介质 Active CN116719632B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311010527.8A CN116719632B (zh) 2023-08-11 2023-08-11 任务调度方法、装置、设备以及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311010527.8A CN116719632B (zh) 2023-08-11 2023-08-11 任务调度方法、装置、设备以及介质

Publications (2)

Publication Number Publication Date
CN116719632A true CN116719632A (zh) 2023-09-08
CN116719632B CN116719632B (zh) 2024-03-15

Family

ID=87868405

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311010527.8A Active CN116719632B (zh) 2023-08-11 2023-08-11 任务调度方法、装置、设备以及介质

Country Status (1)

Country Link
CN (1) CN116719632B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109032801A (zh) * 2018-07-26 2018-12-18 郑州云海信息技术有限公司 一种请求调度方法、系统及电子设备和存储介质
CN109240820A (zh) * 2018-07-03 2019-01-18 深圳市商汤科技有限公司 图像处理任务的处理方法及装置、电子设备及存储介质
CN113608856A (zh) * 2021-08-12 2021-11-05 杭州萤石软件有限公司 节点调度方法、系统及装置
CN114416355A (zh) * 2021-12-31 2022-04-29 北京三快在线科技有限公司 资源调度方法、装置、系统、电子设备及介质
CN114710563A (zh) * 2020-12-17 2022-07-05 华为技术有限公司 一种集群节能方法及装置
CN114979282A (zh) * 2022-07-28 2022-08-30 北京金山云网络技术有限公司 任务调度方法、装置、存储介质以及电子设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109240820A (zh) * 2018-07-03 2019-01-18 深圳市商汤科技有限公司 图像处理任务的处理方法及装置、电子设备及存储介质
CN109032801A (zh) * 2018-07-26 2018-12-18 郑州云海信息技术有限公司 一种请求调度方法、系统及电子设备和存储介质
CN114710563A (zh) * 2020-12-17 2022-07-05 华为技术有限公司 一种集群节能方法及装置
CN113608856A (zh) * 2021-08-12 2021-11-05 杭州萤石软件有限公司 节点调度方法、系统及装置
CN114416355A (zh) * 2021-12-31 2022-04-29 北京三快在线科技有限公司 资源调度方法、装置、系统、电子设备及介质
CN114979282A (zh) * 2022-07-28 2022-08-30 北京金山云网络技术有限公司 任务调度方法、装置、存储介质以及电子设备

Also Published As

Publication number Publication date
CN116719632B (zh) 2024-03-15

Similar Documents

Publication Publication Date Title
CN112162865B (zh) 服务器的调度方法、装置和服务器
US11748154B2 (en) Computing node job assignment using multiple schedulers
CN108632365B (zh) 服务资源调整方法、相关装置和设备
US20200137151A1 (en) Load balancing engine, client, distributed computing system, and load balancing method
US10977077B2 (en) Computing node job assignment for distribution of scheduling operations
CN107391279B (zh) 一种消息队列容器创建方法、装置及消息队列容器
CN113196238B (zh) 服务感知的无服务器云计算系统
CN112579304A (zh) 基于分布式平台的资源调度方法、装置、设备及介质
CN111104227A (zh) 一种K8s平台的资源控制方法、装置及相关组件
CN104199739A (zh) 一种基于负载均衡的推测式Hadoop调度方法
CN112433863A (zh) 微服务调用方法、装置、终端设备以及存储介质
CN114625533A (zh) 分布式任务调度方法、装置、电子设备及存储介质
CN113886069A (zh) 一种资源分配方法、装置、电子设备及存储介质
CN116302448B (zh) 任务调度方法和系统
CN112631994A (zh) 数据迁移方法及系统
CN116719632B (zh) 任务调度方法、装置、设备以及介质
CN111831408A (zh) 异步任务处理方法、装置、电子设备及介质
CN111488373A (zh) 用于处理请求的方法和系统
CN112612604B (zh) 基于Actor模型的任务调度方法、装置
CN113965563A (zh) 基于模型的业务处理方法及装置、服务器
CN111327663A (zh) 一种堡垒机分配的方法和设备
CN117707797B (zh) 基于分布式云平台的任务调度方法、装置及相关设备
CN112559142B (zh) 容器的控制方法、装置、边缘计算系统、介质及设备
CN115168057B (zh) 基于k8s集群的资源调度方法及装置
CN116909758B (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