一种队列调度方法、装置及相关设备制造方法及图纸

技术编号:37472791 阅读:12 留言:0更新日期:2023-05-06 09:56
本申请提供了一种队列调度方法,用于在不影响待处理任务的正常执行的基础上提高线程的利用率。其中,所述队列调度方法用于对线程池中线程对应的队列进行调度,所述线程池包括处于执行状态的多个线程,所述多个线程中每个线程对应至少两个队列,所述多个线程包括第一线程和第二线程,所述方法包括:解耦第一队列与所述第一线程,所述第一队列为所述第一线程的备用队列,所述第一队列中包括多个待处理任务;将与所述第一队列关联的线程调整为所述第二线程,所述第二线程对应的多个队列中待处理任务的总数量小于或等于第一阈值。本申请还提供了对应的装置、计算设备集群、芯片、计算机可读存储介质以及计算机程序产品。读存储介质以及计算机程序产品。读存储介质以及计算机程序产品。

【技术实现步骤摘要】
一种队列调度方法、装置及相关设备


[0001]本申请涉及数据处理
,尤其涉及一种队列调度方法、装置及相关设备。

技术介绍

[0002]队列是一种常见的数据结构,具有先进先出的特点。队列调度是指将队列中的元素在多个队列之间进行调度。在多线程的应用场景下,可以通过多个队列对任务进行处理。具体地,多个线程中每个线程可以独立地对待处理任务进行处理,每个线程可以对应一个队列。在获取到新的待处理任务之后,可以将待处理任务添加到一个队列中。线程按顺序处理队列中的任务。这样,不同的线程可以按顺序对多个待处理任务进行处理。
[0003]随着线程的运行,可能出现队列中待处理任务分配不均的情况。例如,可能存在某个队列中的待处理任务被处理速度较快,而其他队列中待处理任务被处理的速度则相对较慢。这样,处理较快的线程对应的队列中待处理任务的数量就会相对较少,而处理较慢的线程对应的队列中待处理任务的数量会相对较多。如此,可能导致部分待处理任务的处理时间较长,影响任务的正常处理。
[0004]为了解决上述问题,可以在多个队列之间调度待处理任务。具体地,可以将待处理任务的数量较多的队列中的待处理任务,转移到待处理任时务的数量较少的队列中。如此,可以平衡不同队列之间待处理任务的数量。但是,队列中的待处理任务可能与线程之间存在依赖关系。如此,将待处理任务从一个队列调整到另一个队列可能影响待处理任务的正常进行。

技术实现思路

[0005]有鉴于此,本申请提供了一种队列调度方法,用于在不影响待处理任务的正常执行的基础上提高线程的利用率。本申请还提供了对应的装置、计算设备集群、芯片、计算机可读存储介质以及计算机程序产品。
[0006]第一方面,本申请提供了一种队列调度方法,该方法可以应用于队列调度装置,用于对线程池中线程对应的队列进行调度。其中,线程池包括处于执行状态的多个线程,多个线程中每个线程都对应至少两个队列。至少两个队列中包括一个主用队列和至少一个备用队列。线程运行过程中可以从主用队列取出待处理任务并进行处理。上述多个线程包括第一线程和第二线程。具体地,在执行本申请提供的队列调度方法时,队列调度装置首先可以将第一队列与第一线程解耦。其中,第一队列是第一线程的备用队列,第一队列中包括多个待处理任务。在解耦了第一队列与第一线程之后,队列调度装置可以将与第一队列相关联的线程调整为第二线程。其中,第二线程对应的多个队列中待处理任务的总数量小于或等于第一阈值。如果确定第二线程对应的多个队列中待处理任务的总数量小于或等于第一阈值,说明第二队列存在空转的可能性,可能出现计算资源的浪费。那么队列调度装置将第一队列与第二线程相关联,第二线程就可以从第一队列中获取待处理任务并进行处理。由于有足够的待处理任务,第二线程不会处于空转状态。如此,避免了计算资源的浪费。另一方
面,即使加入第一队列的待处理任务生成了与第一队列之间的依赖关系,上述方法将第一队列整体与第二线程相关联,也可以维持第一队列中待处理任务与第一队列之间的依赖关系。也就是说,本申请通过解耦第一队列与第一线程,并调整与第一队列关联的线程,使得第一队列以及第一队列中的所有待处理任务,被整体迁移到第二线程下。如此,一方面可以保证队列中待处理任务的正常执行,另一方面可以避免线程空转,提高计算资源的利用率。
[0007]在一些可能的实施方式中,队列调度装置可以在确定第二线程对应的多个队列中待处理任务的总数量小于或等于第一阈值。具体地,队列调度装置可以周期性或非周期性获取线程池内每个线程对应的多个队列中待处理任务的总数量,并分别判断每个队列对应的多个队列中待处理任务的总数量是否小于或等于第一阈值。在确定第二队列对应的多个队列中待处理任务的总数量小于或等于第一阈值之后,队列调度装置可以开始解耦第一队列和第一线程。
[0008]在一些可能的实施方式中,队列调度装置也可以根据线程的工作状态开始为线程调度新的队列。例如,在解耦第一队列与第一线程并将第一队列调度给第二线程之后,队列调度装置可以获取线程池内每个线程的工作状态,并判断线程的工作状态是否为空转状态。如果某个线程,例如第二线程,处于空转状态,队列调度装置就可以为该装置调度存在待处理任务的队列。
[0009]在一些可能的实施方式中,队列调度装置可以将第一队列设置为第二线程的主用队列。例如,如果第二线程对应的多个队列中均不存在待处理任务,队列调度装置就可以将第一队列设置为第二线程的主用队列,以便第二线程对第一队列中的待处理任务进行处理。或者,如果第二程对应的主用队列中不存在待处理任务,队列调度装置就可以将第一队列设置为第二线程的主用队列。
[0010]在一些可能的实施方式中,队列调度装置也可以将第一队列设置为第二线程的备用队列。例如,如果第二程对应的主用队列中存在待处理任务,队列调度装置就可以将第一队列设置为第二线程的备用队列。
[0011]在一些可能的实施方式中,队列调度装置可以切换线程对应的多个队列的角色,以便线程对不同队列中的待处理任务进行处理。例如,假设第一线程还分别与第二队列和第三队列相对应。其中第二队列是第一线程的主用队列,第三队列是第一线程的备用队列,且第三队列中包括至少一个待处理任务。那么第一线程首先可以对第二队列中的待处理任务进行处理。如果第二队列中不存在待处理任务,队列调度装置可以将第二队列调整为第一线程的备用队列,并将第三队列调整为第一线程的主用队列。这样,第一线程就可以对第三队列中的待处理任务进行处理。可选地,如果第一队列为第一线程的备用队列,队列调度装置也可以将第一队列调整为第一线程的主用队列。
[0012]在一些可能的实施方式中,队列调度装置可以根据线程的主用队列的数量将待处理任务加入线程的主用队列或备用队列。具体地,以待加入目标线程的第一待处理任务为例,在接收到用于将第一待处理任务加入目标线程的任务添加请求之后,队列调度装置可以判断目标线程的主用队列中待处理任务的数量是否小于第二阈值。如果目标线程的主用队列中待处理任务的数量小于第二阈值,队列调度装置可以将第一待处理任务添加到目标线程的主用队列中。如果目标线程的主用队列中待处理任务的数量不小于第二阈值,队列调度装置可以将第一待处理任务添加到目标线程的备用队列中。
[0013]第二方面,本申请提供了一种队列调度装置,所述装置用于对线程池中线程对应的队列进行调度,所述线程池包括处于执行状态的多个线程,所述多个线程中每个线程对应至少两个队列,所述多个线程包括第一线程和第二线程,所述装置包括:解耦模块,用于解耦第一队列与所述第一线程,所述第一队列为所述第一线程的备用队列,所述第一队列中包括多个待处理任务;关联模块,用于将与所述第一队列关联的线程调整为所述第二线程,所述第二线程对应的多个队列中待处理任务的总数量小于或等于第一阈值。
[0014]在一些可能的实施方式中,所述装置还包括第一调度启动模块,所述第一调度启动模块,用于获取所述多个线程中每个线程对应的多个队列中待处理任务的总数量;根据所述每个线程对应的多个队列中待处理任本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种队列调度方法,其特征在于,所述方法用于对线程池中线程对应的队列进行调度,所述线程池包括处于执行状态的多个线程,所述多个线程中每个线程对应至少两个队列,所述多个线程包括第一线程和第二线程,所述方法包括:解耦第一队列与所述第一线程,所述第一队列为所述第一线程的备用队列,所述第一队列中包括多个待处理任务;将与所述第一队列关联的线程调整为所述第二线程,所述第二线程对应的多个队列中待处理任务的总数量小于或等于第一阈值。2.根据权利要求1所述的方法,其特征在于,在解耦所述第一队列与所述第一线程之前,所述方法还包括:获取所述多个线程中每个线程对应的多个队列中待处理任务的总数量;根据所述每个线程对应的多个队列中待处理任务的总数量确定所述第二线程对应的多个队列中待处理任务的总数量小于或等于第一阈值。3.根据权利要求1所述的方法,其特征在于,在解耦所述第一队列与所述第一线程之前,所述方法还包括:确定所述第二线程处于空转状态。4.根据权利要求1

3任一项所述的方法,其特征在于,所述第二线程对应的多个队列中待处理任务的总数量为零;所述将与所述第一队列关联的线程调整为所述第二线程包括:将所述第一队列设置为所述第二线程对应的主用队列。5.根据权利要求1

4任一项所述的方法,其特征在于,所述第一线程的主用队列为第二队列,所述第一线程的备用队列还包括第三队列,所述第三线程中包括至少一个待处理任务,所述方法还包括:响应于所述第二队列中的待处理任务被所述第一线程处理完成,将所述第三队列设置为所述第一线程的主用队列。6.根据权利要求1

5任一项所述的方法,其特征在于,所述方法还包括:获取任务添加请求,所述任务添加请求用于将第一待处理任务添加到目标线程对应的队列;如果所述目标线程的主用队列中待处理任务的数量小于第二阈值,将所述第一待处理任务添加到所述目标线程的主用队列中;如果所述目标线程的主用队列中待处理任务的数量不小于第二阈值,将所述第一待处理任务添加到所述目标线程的备用队列中。7.一种队列调度装置,其特征在于,所述装置用于对线程池中线程对应的队列进行调度,所述线程池包括处于执行状态的多个线程,所述多个线程中每个线程对应至少两个队列,所述多个线程包括第一线程和第二线程,所述装置包括:解耦模块,用于解耦第一队列与所述第一线程,所述第一队列为所述第一线程的备用队列,所述第一队列中包括多个待处理任务;关联模块,用于将与所述第一队列关联的线程调整为所述第二线...

【专利技术属性】
技术研发人员:郭小源
申请(专利权)人:深圳华为云计算技术有限公司
类型:发明
国别省市:

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

1