一种任务调度方法及装置与流程

文档序号:20874750发布日期:2020-05-26 16:20阅读:152来源:国知局
一种任务调度方法及装置与流程

本发明涉及软件技术领域,尤其涉及一种任务调度方法及装置。



背景技术:

kubernetes系统是一个由google设计和开发的开源容器群集管理项目。它设计的目的是为容器集群提供一个可自动化、可伸缩、可扩展的运营平台。利用kubernetes系统能方便地管理容器化的应用,能够解决容器之间的通讯问题。

kubernetes系统中任务调度方法的设计,需要从最大化资源利用率等角度出发,使其能够在出现资源瓶颈之前就能预先触发动态调度。为了让kubernetes系统能够在出现资源瓶颈之前响应,需要对应用在未来某个时间段内的资源需求量进行预测,然后根据预测值来进行动态的资源调度。目前采用的预测方法主要是通过简单的回归模型对未来资源需求量进行预测。然而,这些方法容易受到预测者主观因素的干扰,对历史数据的质量要求比较高,且预测精度较低。

基于此,目前亟需一种任务调度方法,用于解决现有技术中在任务调度的过程中由于对未来资源需求量预测精确度低导致调度准确性低的问题。



技术实现要素:

本发明实施例提供一种任务调度方法及装置,以解决现有技术中在任务调度的过程中由于对未来资源需求量预测精确度低导致调度准确性低的技术问题。

本发明实施例提供一种任务调度方法,所述方法包括:

获取当前周期内各节点的资源使用数据;

将所述当前周期内各节点的资源使用数据作为双向循环神经网络模型的输入,预测得到下一周期内各节点的资源使用数据;所述双向循环神经网络模型是根据历史周期内各节点的资源使用数据进行训练得到的,所述历史周期为所述当前周期以前的周期;

根据所述下一周期内各节点的资源使用数据,对所述各节点中的任务进行调度。

如此,本发明实施例通过将当前周期内的资源使用数据作为双向循环神经网络模型的输入,预测下一周期内各节点的资源使用数据,进而可以据此对各节点中的任务进行调度。采用双向循环神经网络模型,能够更加准确地预测下一周期内各节点的资源使用数据,从而提高对各节点中的任务进行调度的准确度;进一步地,本发明实施例可以通过自动化监测、采集、处理数据,并通过双向循环神经网络模型进行学习分析并做出预测,全程智能化,无需人工干预;更进一步地,本发明实施例中,可以根据当前周期内各节点的资源使用数据和下一周期内的资源使用数据灵活调整调度所依据的阈值,从而使得任务调度更加灵活,也更加合理,能够及时、准确、动态地调度任务。

在一种可能的实现方式中,所述资源使用数据包括至少一个资源使用量和资源使用状态,所述资源使用状态是根据所述至少一个资源使用量确定的;

所述双向循环神经网络模型是根据所述历史周期内各节点的至少一个资源使用量和资源使用状态进行训练得到的。

在一种可能的实现方式中,所述至少一个资源使用量包括内存使用量、cpu使用量、磁盘使用量和io吞吐量。

在一种可能的实现方式中,所述双向循环神经网络模型是根据所述历史周期内各节点的至少一个资源使用量和资源使用状态进行训练得到的,包括:

获取任一历史周期内所述各节点的至少一个资源使用量和资源使用状态;

将第一历史周期内所述各节点的至少一个资源使用量和资源使用状态作为训练样本的输入参数,将第二历史周期内所述各节点的至少一个资源使用量和资源使用状态作为所述训练样本的输出参数;所述第一历史周期为所述第二历史周期的上一周期;

使用所述训练样本对双向循环神经网络模型进行训练,得到所述双向循环神经网络模型。

在一种可能的实现方式中,所述双向循环神经网络模型包括前向神经网络层和反向神经网络层;

所述方法还包括:

接收用户的模型更新指令;

根据所述模型更新指令,修改所述双向循环神经网络模型中所述前向神经网络层和/或所述反向神经网络层的层数。

本发明实施例提供一种任务调度装置,所述装置包括:

收取单元,用于获取当前周期内各节点的资源使用数据;

处理单元,用于将所述当前周期内各节点的资源使用数据作为双向循环神经网络模型的输入,预测得到下一周期内各节点的资源使用数据;所述双向循环神经网络模型是根据历史周期内各节点的资源使用数据进行训练得到的,所述历史周期为所述当前周期以前的周期;

调度单元,用于根据所述下一周期内各节点的资源使用数据,对所述各节点中的任务进行调度。

在一种可能的实现方式中,所述资源使用数据包括至少一个资源使用量和资源使用状态,所述资源使用状态是根据所述至少一个资源使用量确定的;

所述双向循环神经网络模型是根据所述历史周期内各节点的至少一个资源使用量和资源使用状态进行训练得到的。

在一种可能的实现方式中,所述至少一个资源使用量包括内存使用量、cpu使用量、磁盘使用量和io吞吐量。

在一种可能的实现方式中,所述处理单元具体用于:

获取任一历史周期内所述各节点的至少一个资源使用量和资源使用状态;

将第一历史周期内所述各节点的至少一个资源使用量和资源使用状态作为训练样本的输入参数,将第二历史周期内所述各节点的至少一个资源使用量和资源使用状态作为所述训练样本的输出参数;所述第一历史周期为所述第二历史周期的上一周期;

使用所述训练样本对双向循环神经网络模型进行训练,得到所述双向循环神经网络模型。

在一种可能的实现方式中,所述双向循环神经网络模型包括前向神经网络层和反向神经网络层;

所述收取单元,还用于接收用户的模型更新指令;

所述处理单元,还用于根据所述模型更新指令,修改所述双向循环神经网络模型中所述前向神经网络层和/或所述反向神经网络层的层数。

本申请实施例的还提供一种装置,该装置具有实现上文所描述的任务调度方法的功能。该功能可以通过硬件执行相应的软件实现,在一种可能的设计中,该装置包括:处理器、收发器、存储器;该存储器用于存储计算机执行指令,该收发器用于实现该装置与其他通信实体进行通信,该处理器与该存储器通过该总线连接,当该装置运行时,该处理器执行该存储器存储的该计算机执行指令,以使该装置执行上文所描述的任务调度方法。

本发明实施例还提供一种计算机存储介质,所述存储介质中存储软件程序,该软件程序在被一个或多个处理器读取并执行时实现上述各种可能的实现方式中所描述的任务调度方法。

本发明实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各种可能的实现方式中所描述的任务调度方法。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍。

图1为本发明实施例适用的一种系统架构示意图;

图2为本发明实施例提供的一种任务调度方法所对应的流程示意图;

图3为本发明实施例提供的一种双向循环神经网络模型的结构示意图;

图4为本发明实施例提供的一种任务调度装置结构示意图。

具体实施方式

下面结合说明书附图对本申请进行具体说明,方法实施例中的具体操作方法也可以应用于装置实施例中。

图1示例性示出了本发明实施例适用的一种系统架构示意图,如图1所示,本发明实施例适用的系统100包括调度设备101和至少一个节点,例如图1中示出的节点1021、节点1022和节点1023。其中,调度设备101可以通过服务器接口(apiserver)与各节点连接,例如,图1中示出的,调度设备101可以通过apiserver与节点1021连接,也可以通过apiserver与节点1022连接,还可以通过apiserver与节点1023连接。

进一步地,以系统100为kubernetes系统为例,调度设备101可以包括管理模块1011、资源监控模块1012、深度分析模块1013和资源调度模块1014。每个节点中可以包括kubelet组件和至少一个pod,例如,节点1021可以包括kubelet组件1211、pod1212和pod1213,节点1022可以包括kubelet组件1221、pod1222和pod1223,节点1023可以包括kubelet组件1231、pod1232和pod1233。

具体地,管理模块1011可以负责在节点中创建pod,例如,管理模块1011可以在节点1021中创建pod1212和pod1213,也可以在节点1022中创建pod1222和pod1223,还可以在节点1023中创建pod1232和pod1233。

资源监控模块1012可以用于收集各节点中的资源使用数据,并可以以pod为单位聚合起来,提供给深度分析模块1013使用。

深度分析模块1013可以根据资源监控模块1012提供的资源使用数据,通过深度学习模型进行训练,预测后面一段时间内的资源使用数据。

进一步地,如图1所示,深度分析模块1013可以包括数据处理模块1131、深度预测模块1132和模型更新模块1133。其中,数据处理模块1131可以用于对资源监控模块1012收集的资源使用数据进行预处理;深度预测模块1132可以将数据处理模块1131的处理结果送入深度学习模型进行学习,对未来资源使用数据进行预测;模型更新模块1133可以通过网络接收管理员的模型更新指令,并且可以根据需求对模型结构进行更新。

资源调度模块1014可以根据深度分析模块1013的预测结果,生成调度策略,并下发到各节点中。

进一步地,如图1所示,资源调度模块1014可以包括策略产生模块1141和策略下发模块1142。其中,策略产生模块1141可以根据深度分析模块1013的处理结果,生成相应的调度策略;策略下发模块1142可以将策略产生模块1141产生的策略,下发到各节点中,从而实现系统资源合理调度。

基于图1所示的系统架构,图2示例性示出了本发明实施例提供的一种任务调度方法所对应的流程示意图,包括以下步骤:

步骤201,获取当前周期内各节点的资源使用数据。

步骤202,将所述当前周期内各节点的资源使用数据作为双向循环神经网络模型的输入,预测得到下一周期内各节点的资源使用数据。

步骤203,根据所述下一周期内各节点的资源使用数据,对所述各节点中的任务进行调度。

如此,本发明实施例通过将当前周期内的资源使用数据作为双向循环神经网络模型的输入,预测下一周期内各节点的资源使用数据,进而可以据此对各节点中的任务进行调度。采用双向循环神经网络模型,能够更加准确地预测下一周期内各节点的资源使用数据,从而提高对各节点中的任务进行调度的准确度;进一步地,本发明实施例可以通过自动化监测、采集、处理数据,并通过双向循环神经网络模型进行学习分析并做出预测,全程智能化,无需人工干预;更进一步地,本发明实施例中,可以根据当前周期内各节点的资源使用数据和下一周期内的资源使用数据灵活调整调度所依据的阈值,从而使得任务调度更加灵活,也更加合理,能够及时、准确、动态地调度任务。

具体来说,资源使用数据可以包括至少一个资源使用量和资源使用状态。

其中,资源使用量可以是内存使用量、cpu使用量、磁盘使用量和io吞吐量等,具体不做限定。进一步地,根据图1示出的内容可知,每个节点中可能存在多个pod,获取各节点的资源使用量时,可以先获取每个节点中各pod的资源使用量,然后再根据各pod的资源使用量确定该节点的资源使用量。

如表1所示,为本发明实施例中资源使用量的一种示例。其中,节点a包括poda-1和poda-2,poda-1的内存使用量为20%,cpu使用量为50%,磁盘使用量为10%,io吞吐量为30%;poda-2的内存使用量为25%,cpu使用量为30%,磁盘使用量为80%,io吞吐量为30%,由此可知,节点a的内存使用量为45%,cpu使用量为80%,磁盘使用量为90%,io吞吐量为60%。节点b包括podb-1和podb-2,podb-1的内存使用量为35%,cpu使用量为55%,磁盘使用量为20%,io吞吐量为30%;podb-2的内存使用量为25%,cpu使用量为45%,磁盘使用量为55%,io吞吐量为60%,由此可知,节点b的内存使用量为60%,cpu使用量为100%,磁盘使用量为75%,io吞吐量为90%。

表1:本发明实施例中资源使用量的一种示例

需要说明的是,上文所示出的节点的资源使用量的计算方法仅为一种示例,在其它可能的实现方式中,节点的资源使用量也可以根据各pod的资源使用量和各pod的权重进行计算,具体不再详细描述。

本发明实施例中,资源使用状态可以是根据至少一个资源使用量确定的。具体来说,以表1中示出的节点a的资源使用量为例,节点a的资源使用状态可以根据节点a中的内存使用量、cpu使用量、磁盘使用量和io吞吐量来确定。举个例子,在计算节点a的资源使用状态时,可以通过判断节点a中资源使用量大于使用量阈值的资源使用量的个数是否大于个数阈值,若大于,则可以确定节点a的资源使用状态为高负载状态,否则,可以确定节点a的资源使用状态为低负载状态。再举个例子,在计算节点a的资源使用状态时,可以先根据节点a中的内存使用量、cpu使用量、磁盘使用量和io吞吐量来确定节点a的负载量,然后通过判断节点a中负载量是否大于负载量阈值,若大于,则可以确定节点a的资源使用状态为高负载状态,否则,可以确定节点a的资源使用状态为低负载状态。

在执行步骤202之前,本发明实施例可以先对各节点的资源使用数据进行预处理。其中,预处理可以包括格式转换和维度重构两个步骤。格式转换是指将获取到的资源使用数据转换成神经网络模型能够识别的格式。根据资源使用数据的类型的不同,格式转换的方式也不同,比如,可以将布尔类型的数据字段转换为二进制值的格式后,作为输入数据格式;获知,可以将文本类型的数据字段,通过词袋(bagofword,bow)的方法进行格式转换后,作为输入的数据格式;或者,也可以将数值类型的数据字段保留原类型,作为输入数据格式。

进一步地,对格式转换后的数据可以进行维度重构,从而构建满足深度学习模型输入要求的维度。

步骤202中,如图3所示,为本发明实施例提供的一种双向循环神经网络模型的结构示意图。其中,该双向循环神经网络模型可以包含1层输入层(inputlayer)、3层前向神经网络层(forwardlayer)、3层反向神经网络层(backwardlayer)、2层全连接层(fullyconnectedlayer)和1层输出层(outputlayer)。该双向循环神经网络模型在进行计算时,先将处理后的数据输入到输入层,输入层进行计算处理后,将计算结果同时输入到前向神经网络层和反向神经网络层,经过前向神经网络层和反向神经网络层的计算后,将结果合并输入到全连接层,全连接层处理完数据后通过输出层进行预测输出。

具体地,双向循环神经网络模型可以是根据历史周期内各节点的资源使用数据进行训练得到的,其中,历史周期可以为当前周期以前的周期。进一步地,所述双向循环神经网络模型是根据所述历史周期内各节点的至少一个资源使用量和资源使用状态进行训练得到的。

进一步地,对双向循环神经网络模型进行训练时,可以将资源使用数据进行预处理后组成时间序列作为训练样本,具体来说,可以先获取任一历史周期内各节点的至少一个资源使用量和资源使用状态;然后,将第一历史周期内各节点的至少一个资源使用量和资源使用状态作为训练样本的输入参数,将第二历史周期内各节点的至少一个资源使用量和资源使用状态作为所述训练样本的输出参数,其中,第一历史周期为第二历史周期的上一周期;最后,可以使用该训练样本对双向循环神经网络模型进行训练,从而得到所述双向循环神经网络模型。

步骤203中,根据所述下一周期内各节点的资源使用数据,可以生成相应的调度策略,进而可以根据调度策略对各节点中的pod进行调度,从而实现合理的资源调度。

考虑到随着数据量的不断扩大,双向循环神经网络模型的精度存现下降的可能性,本发明实施例中,还可以通过更新模型的方法来提高双向循环神经网络模型的精度。具体来说,首先可以接收用户的模型更新指令,然后可以根据模型更新指令,修改双向循环神经网络模型中前向神经网络层和/或反向神经网络层的层数。如此,当双向循环神经网络模型的精度下降时,可以通过增加模型层数的方式,改变优化器的选择,降低学习率。

基于相同构思,本发明实施例提供的一种任务调度装置,如图4所示,该装置包括收取单元401、处理单元402和调度单元403;其中,

收取单元401,用于获取当前周期内各节点的资源使用数据;

处理单元402,用于将所述当前周期内各节点的资源使用数据作为双向循环神经网络模型的输入,预测得到下一周期内各节点的资源使用数据;所述双向循环神经网络模型是根据历史周期内各节点的资源使用数据进行训练得到的,所述历史周期为所述当前周期以前的周期;

调度单元403,用于根据所述下一周期内各节点的资源使用数据,对所述各节点中的任务进行调度。

在一种可能的实现方式中,所述资源使用数据包括至少一个资源使用量和资源使用状态,所述资源使用状态是根据所述至少一个资源使用量确定的;

所述双向循环神经网络模型是根据所述历史周期内各节点的至少一个资源使用量和资源使用状态进行训练得到的。

在一种可能的实现方式中,所述至少一个资源使用量包括内存使用量、cpu使用量、磁盘使用量和io吞吐量。

在一种可能的实现方式中,所述处理单元402具体用于:

获取任一历史周期内所述各节点的至少一个资源使用量和资源使用状态;

将第一历史周期内所述各节点的至少一个资源使用量和资源使用状态作为训练样本的输入参数,将第二历史周期内所述各节点的至少一个资源使用量和资源使用状态作为所述训练样本的输出参数;所述第一历史周期为所述第二历史周期的上一周期;

使用所述训练样本对双向循环神经网络模型进行训练,得到所述双向循环神经网络模型。

在一种可能的实现方式中,所述双向循环神经网络模型包括前向神经网络层和反向神经网络层;

所述收取单元401,还用于接收用户的模型更新指令;

所述处理单元402,还用于根据所述模型更新指令,修改所述双向循环神经网络模型中所述前向神经网络层和/或所述反向神经网络层的层数。

本申请实施例的还提供一种装置,该装置具有实现上文所描述的任务调度方法的功能。该功能可以通过硬件执行相应的软件实现,在一种可能的设计中,该装置包括:处理器、收发器、存储器;该存储器用于存储计算机执行指令,该收发器用于实现该装置与其他通信实体进行通信,该处理器与该存储器通过该总线连接,当该装置运行时,该处理器执行该存储器存储的该计算机执行指令,以使该装置执行上文所描述的任务调度方法。

本发明实施例还提供一种计算机存储介质,所述存储介质中存储软件程序,该软件程序在被一个或多个处理器读取并执行时实现上述各种可能的实现方式中所描述的任务调度方法。

本发明实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各种可能的实现方式中所描述的任务调度方法。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1