任务调度方法、电子设备和存储介质技术

技术编号:34833132 阅读:15 留言:0更新日期:2022-09-08 07:27
本申请实施例提供了一种任务调度方法、电子设备和存储介质,应用于包括多层任务队列的任务调度系统,以使任务队列中任务能够正常执行。所述方法包括:各层任务队列根据出队任务的执行时间,确定第一累计执行时间;确定各层任务队列的预期执行时间;依据所述第一累计执行时间和预期执行时间,确定执行调度的目标层任务队列;从所述目标层任务队列中获取任务给线程处理。可以基于实际执行时间和预期执行时间来筛选任务队列,使得各类任务均能够得到执行,不会出现任务饿死的情况。不会出现任务饿死的情况。不会出现任务饿死的情况。

【技术实现步骤摘要】
任务调度方法、电子设备和存储介质


[0001]本申请涉及计算机
,特别是涉及一种任务调度方法及装置、一种电子设备和一种存储介质。

技术介绍

[0002]查询引擎在进行任务调度时,通常是基于用户优先级和FIFO(First Input First Output,先进先出)的队列执行。其中,优先级高的任务优先出队,优先级相同的任务根据FIFO的规则出队。
[0003]举例来说,节点接收到任务后,会给任务分配一个任务id,任务id是递增的,从队列中出队任务时,优先级高的任务先出队,优先级相同时,根据任务id来排序,任务id小的优先出队,也就是FIFO的队列。
[0004]但是,上述这种方式中,任务根据优先级高低确定出队顺序,如果某一任务的优先级较低,且队列中一直存在高于其优先级的任务,就会导致低优先级的任务无法得到执行,极端情况下可能导致低优先级的任务饿死。

技术实现思路

[0005]本申请实施例提供了一种任务调度方法,以使任务队列中任务能够正常执行。
[0006]相应的,本申请实施例还提供了一种电子设备和一种存储介质,用以保证上述系统的实现及应用。
[0007]为了解决上述问题,本申请实施例公开了一种任务调度方法,应用于包括多层任务队列的任务调度系统,所述方法包括:各层任务队列根据出队任务的执行时间,确定第一累计执行时间;确定各层任务队列的预期执行时间;依据所述第一累计执行时间和预期执行时间,确定执行调度的目标层任务队列;从所述目标层任务队列中获取任务给线程处理。r/>[0008]可选的,所述多层任务队列中每层对应一个任务队列,每层的任务队列为根据任务的执行时间长短排序的队列,其中,执行时间短的任务优先出队。
[0009]可选的,所述各层任务队列根据出队任务的执行时间,确定第一累计执行时间,包括:若线程执行所述任务的执行时间达到指定时长之前,所述任务执行完毕,将所述执行时间添加到所述目标任务队列的第一累计执行时间中;若线程执行所述任务的执行时间达到指定时长,停止执行所述任务,并将指定时长添加到所述目标任务队列的第一累计执行时间中。
[0010]可选的,所述线程执行所述任务的执行时间达到指定时长之后,还包括:判断所述任务是否执行完毕;若所述任务未执行完毕,则将所述指定时长添加到所述任务的第二累计执行时
间。
[0011]可选的,每层的任务队列对应有执行时间范围,所述方法还包括:依据所述第二累计执行时间和各层任务队列的执行时间范围,确定所述任务所属任务队列的层数;将所述任务加入到对应层数的任务队列中。
[0012]可选的,所述确定各层任务队列的预期执行时间,包括:基于任务队列所在的层数和所述任务队列的第一累计执行时间,确定所述任务队列到底层任务队列的预期执行时间;依据所述任务队列到底层任务队列的预期执行时间,确定各层任务队列的预期执行时间。
[0013]可选的,所述依据所述任务队列到底层任务队列的预期执行时间,确定各层任务队列的预期执行时间,包括:依据各层任务队列到底层任务队列的预期执行时间,确定底层任务队列的预期执行时间;依据底层任务队列的预期执行时间,确定各层任务队列的预期执行时间。
[0014]可选的,所述依据所述第一累计执行时间和预期执行时间,确定执行调度的目标层任务队列,包括:依据所述第一累计执行时间和预期执行时间,确定各层任务队列的调度时间比;依据所述调度时间比筛选执行调度的目标层任务队列。
[0015]可选的,还包括:根据任务的优先级信息确定所述任务初始的任务队列的层数,将所述任务添加到对应层的任务队列中。
[0016]可选的,还包括:根据任务的优先级信息确定所述任务的时钟系数,依据所述时钟系数和第二累计执行时间确定虚拟执行时间。
[0017]可选的,所述从所述目标层任务队列中获取任务给线程处理,包括:按照任务的虚拟执行时间,从所述目标层任务队列中获取任务给线程处理。
[0018]可选的,还包括:依据所述虚拟执行时间和各层任务队列的执行时间范围,确定所述任务所属任务队列的层数;将所述任务加入到对应层数的任务队列中。
[0019]本申请实施例还公开了一种任务调度系统,所述任务调度系统包括线程池、任务池和任务调度装置,所述线程池包括多个线程,所述任务池包括多层任务队列,每层任务队列中可放入一个或多个任务,所述任务调度装置包括:队列时间累计模块,用于各层任务队列根据出队任务的执行时间,确定第一累计执行时间;预期时间确定模块,用于确定各层任务队列的预期执行时间;目标层筛选模块,用于依据所述第一累计执行时间和预期执行时间,确定执行调度的目标层任务队列;
出队模块,用于从所述目标层任务队列中获取任务给线程处理。
[0020]本申请实施例还公开了一种电子设备,包括:处理器;和存储器,其上存储有可执行代码,当所述可执行代码被处理器执行时,执行如本申请实施例所述的方法。
[0021]本申请实施例还公开了一个或多个机器可读介质,其上存储有可执行代码,当所述可执行代码被处理器执行时,执行如本申请实施例所述的方法。
[0022]与现有技术相比,本申请实施例包括以下优点:本申请实施例中,任务调度系统可设置多层任务队列,各层任务队列根据出队任务的执行时间,确定第一累计执行时间,然后确定各层任务队列的预期执行时间,依据所述第一累计执行时间和预期执行时间,确定执行调度的目标层任务队列,从而可以基于实际执行时间和预期执行时间来筛选任务队列,从所述目标层任务队列中获取任务给线程处理,使得各类任务均能够得到执行,不会出现任务饿死的情况。
附图说明
[0023]图1是本申请实施例的一种任务调度系统示例的示意图;图2是本申请的一种任务调度方法实施例的步骤流程图;图3是本申请的另一种任务调度方法实施例的步骤流程图;图4是本申请的另一种任务调度方法实施例的步骤流程图;图5是本申请一个实施例提供的示例性装置的结构示意图。
具体实施方式
[0024]为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
[0025]本申请实施例可以应用于基于任务的处理场景中,如查询引擎、数据库查询等,基于任务调度系统调度各项任务,实现基于任务的查询等处理。
[0026]参照图1,示出了一种任务调度系统,该任务调度系统包括线程池和任务池,其中,任务池包括多层任务队列(或称多级任务队列),如包括0层任务队列、1层任务队列、2层任务队列、3层任务队列和4层任务队列。线程池中包括多个线程,线程可执行任务队列中的任务的操作。其中,各层任务队列中包括等待执行的任务,线程池的线程会从任务等待队列中拿取待执行的任务,任务等待队列中出队的顺序就是任务调度的顺序。
[0027]本申请实施例中,为了使得各任务都能得到执行,任务从任务队列中取出,由线程执行时,可设置线程的执行时间阈值即指定时长,每个任务在线程中执行时间达到指定时长,则停止执行任本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种任务调度方法,应用于包括多层任务队列的任务调度系统,所述方法包括:各层任务队列根据出队任务的执行时间,确定第一累计执行时间;确定各层任务队列的预期执行时间;依据所述第一累计执行时间和预期执行时间,确定执行调度的目标层任务队列;从所述目标层任务队列中获取任务给线程处理。2.根据权利要求1所述的方法,其中,所述多层任务队列中每层对应一个任务队列,每层的任务队列为根据任务的执行时间长短排序的队列,其中,执行时间短的任务优先出队。3.根据权利要求2所述的方法,其中,所述各层任务队列根据出队任务的执行时间,确定第一累计执行时间,包括:若线程执行所述任务的执行时间达到指定时长之前,所述任务执行完毕,将所述执行时间添加到所述目标任务队列的第一累计执行时间中;若线程执行所述任务的执行时间达到指定时长,停止执行所述任务,并将指定时长添加到所述目标任务队列的第一累计执行时间中。4.根据权利要求3所述的方法,其中,所述线程执行所述任务的执行时间达到指定时长之后,还包括:判断所述任务是否执行完毕;若所述任务未执行完毕,则将所述指定时长添加到所述任务的第二累计执行时间。5.根据权利要求4所述的方法,其中,每层的任务队列对应有执行时间范围,所述方法还包括:依据所述第二累计执行时间和各层任务队列的执行时间范围,确定所述任务所属任务队列的层数;将所述任务加入到对应层数的任务队列中。6.根据权利要求2所述的方法,其中,所述确定各层任务队列的预期执行时间,包括:基于任务队列所在的层数和所述任务队列的第一累计执行时间,确定所述任务队列到底层任务队列的预期执行时间;依据所述任务队列到底层任务队列的预期执行时间,确定各层任务队列的预期执行时间。7.根据...

【专利技术属性】
技术研发人员:沈子喻武佳斌
申请(专利权)人:阿里云计算有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1