一种多线程任务调度方法、装置、设备及可读介质制造方法及图纸

技术编号:23342905 阅读:25 留言:0更新日期:2020-02-15 03:44
本申请公开了一种多线程任务调度方法、装置、设备及计算机可读存储介质,方法包括:根据CPU核数创建固定数目的工作线程;设置N×N型的矩阵模型;N等于工作线程的数目,每一行为一个任务队列,每个任务队列对应一个工作线程,每一列为一个资源池,资源池与业务模块相对应;利用业务模块向资源池中添加任务,以使任务被添加到任务队列中;利用与任务队列对应的工作线程对任务队列进行轮询,执行任务队列中包含的任务,并将执行完的任务从任务队列中删除。本申请公开的上述技术方案,降低工作线程的数量,以降低锁竞争的几率,并通过工作线程所负责的任务队列中任务的切换来实现任务的处理,以降低线程上下文切换的开销,提高任务的处理效率。

A multithreaded task scheduling method, device, device and readable medium

【技术实现步骤摘要】
一种多线程任务调度方法、装置、设备及可读介质
本申请涉及存储
,更具体地说,涉及一种多线程任务调度方法、装置、设备及计算机可读存储介质。
技术介绍
随着存储系统要处理的IO请求(即所要执行的任务)越来越多,对存储系统的性能要求也越来越高。在所要执行的任务越来越多的情况下,为了提高任务处理性能,目前,常采用的作用是创建尽可能多的线程来增加并发度。但是,随着线程数量的增多,线程之间锁竞争的可能性就会增大,并且线程间的上下文切换也就越频繁,此时,则会导致切换开销的增大。另外,由于线程切换涉及到用户空间到内核空间的切换、上下文的保护和恢复,因此,为了执行线程切换,则大约需要调用上千行的代码,而这会对任务处理性能造成很大的影响,很有可能会造成不必要的延迟。综上所述,如何降低锁竞争的几率和线程上下文切换的开销,并提高任务的处理效率,是目前本领域技术人员亟待解决的技术问题。
技术实现思路
有鉴于此,本申请的目的是提供一种多线程任务调度方法、装置、设备及计算机可读存储介质,用于降低锁竞争的几率和线程上下文切换的开销,并提高任务的处理效率。为了实现上述目的,本申请提供如下技术方案:一种多线程任务调度方法,包括:根据CPU核数创建固定数目的工作线程;设置一N×N型的矩阵模型;其中,N等于所述工作线程的数目,且每一行为一个任务队列,每个所述任务队列对应一个所述工作线程,每一列为一个资源池,所述资源池与业务模块相对应;利用所述业务模块向所述资源池中添加任务,以使所述任务被添加到所述任务队列中;利用与所述任务队列对应的所述工作线程对所述任务队列进行轮询,执行所述任务队列中包含的任务,并将执行完的任务从所述任务队列中删除。优选的,在利用所述业务模块向所述资源池中添加任务之前,还包括:选定M列所述资源池作为与所述资源池对应的业务模块的私有资源池,并将剩余N-M列所述资源池作为各所述业务模块的共享资源池;其中,M大于0且小于等于N;相应地,在利用所述业务模块向所述资源池中添加任务时,还包括:若所述资源池为所述共享资源池,则对所述任务进行加锁。优选的,利用所述业务模块向所述资源池中添加任务,以使所述任务被添加到所述任务队列中,包括:利用所述业务模块向指定的任务队列中添加所述任务。优选的,利用所述业务模块向所述资源池中添加任务,以使所述任务被添加到所述任务队列中,包括:利用所述业务模块向所述资源池中添加任务,并通过所述矩阵模型基于负载均衡算法将所述任务分配到所述任务队列中。优选的,在设置一N×N型的矩阵模型之后,还包括:选定K行所述任务队列作为快任务队列,并将剩余N-K行所述任务队列作为慢任务队列;其中,K大于等于0且小于等于N,且所述快任务队列中包含的任务对执行时间的要求高于所述慢任务队列中包含的任务对执行时间的要求;相应地,在将执行完的任务从所述任务队列中删除之前,还包括:若所述任务队列为所述快任务队列,则获取所述快任务队列中包含的任务的执行时间;判断所述执行时间是否超过预定值,若是,则发出任务执行失败的提示。优选的,根据CPU核数创建固定数目的工作线程,包括:创建与所述CPU核数相同数目的所述工作线程。一种多线程任务调度装置,包括:创建模块,用于根据CPU核数创建固定数目的工作线程;设置模块,用于设置一N×N型的矩阵模型;其中,N等于所述工作线程的数目,且每一行为一个任务队列,每个所述任务队列对应一个所述工作线程,每一列为一个资源池,所述资源池与业务模块相对应;添加模块,用于利用所述业务模块向所述资源池中添加任务,以使所述任务被添加到所述任务队列中;执行模块,用于利用与所述任务队列对应的所述工作线程对所述任务队列进行轮询,执行所述任务队列中包含的任务,并将执行完的任务从所述任务队列中删除。优选的,还包括:选定模块,用于在利用所述业务模块向所述资源池中添加任务之前,选定M列所述资源池作为与所述资源池对应的业务模块的私有资源池,并将剩余N-M列所述资源池作为各所述业务模块的共享资源池;其中,M大于0且小于等于N;相应地,还包括:加锁模块,用于在利用所述业务模块向所述资源池中添加任务时,若所述资源池为所述共享资源池,则对所述任务进行加锁。一种多线程任务调度设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上述任一项所述的多线程任务调度方法的步骤。一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的多线程任务调度方法的步骤。本申请提供了一种多线程任务调度方法、装置、设备及计算机可读存储介质,其中,该方法包括:根据CPU核数创建固定数目的工作线程;设置一N×N型的矩阵模型;其中,N等于工作线程的数目,且每一行为一个任务队列,每个任务队列对应一个工作线程,每一列为一个资源池,资源池与业务模块相对应;利用业务模块向资源池中添加任务,以使任务被添加到任务队列中;利用与任务队列对应的工作线程对任务队列进行轮询,执行任务队列中包含的任务,并将执行完的任务从任务队列中删除。本申请公开的上述技术方案,根据CPU核数创建固定数目的工作线程,且设置行为任务队列、列为资源池的N×N型矩阵模型,由每个工作线程负责一个任务队列,利用工作线程对其负责的任务队列进行轮询,执行任务队列中的任务并删除所执行完的任务,且通过业务模块向资源池中添加任务,即通过工作线程所负责的任务队列中任务的切换来实现任务的处理而无需通过工作线程进行上下文的切换来实现任务的处理,从而降低线程上下文切换的开销,并减少代码的调用数量,以提高任务的处理效率,尽量避免造成不必要的延迟,同时,由于可以直接根据CPU核数创建固定数目的工作线程,因此,可以降低工作线程的数量,从而可以降低锁竞争的几率,以提高存储系统的整体性能。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本申请实施例提供的一种多线程任务调度方法的流程图;图2为本申请实施例提供的所设置的矩阵模型的一具体实施例的结构示意图;图3为本申请实施例提供的一种多线程任务调度装置的结构示意图;图4为本申请实施例提供的一种多线程任务调度设备的结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施本文档来自技高网...

【技术保护点】
1.一种多线程任务调度方法,其特征在于,包括:/n根据CPU核数创建固定数目的工作线程;/n设置一N×N型的矩阵模型;其中,N等于所述工作线程的数目,且每一行为一个任务队列,每个所述任务队列对应一个所述工作线程,每一列为一个资源池,所述资源池与业务模块相对应;/n利用所述业务模块向所述资源池中添加任务,以使所述任务被添加到所述任务队列中;/n利用与所述任务队列对应的所述工作线程对所述任务队列进行轮询,执行所述任务队列中包含的任务,并将执行完的任务从所述任务队列中删除。/n

【技术特征摘要】
1.一种多线程任务调度方法,其特征在于,包括:
根据CPU核数创建固定数目的工作线程;
设置一N×N型的矩阵模型;其中,N等于所述工作线程的数目,且每一行为一个任务队列,每个所述任务队列对应一个所述工作线程,每一列为一个资源池,所述资源池与业务模块相对应;
利用所述业务模块向所述资源池中添加任务,以使所述任务被添加到所述任务队列中;
利用与所述任务队列对应的所述工作线程对所述任务队列进行轮询,执行所述任务队列中包含的任务,并将执行完的任务从所述任务队列中删除。


2.根据权利要求1所述的多线程任务调度方法,其特征在于,在利用所述业务模块向所述资源池中添加任务之前,还包括:
选定M列所述资源池作为与所述资源池对应的业务模块的私有资源池,并将剩余N-M列所述资源池作为各所述业务模块的共享资源池;其中,M大于0且小于等于N;
相应地,在利用所述业务模块向所述资源池中添加任务时,还包括:
若所述资源池为所述共享资源池,则对所述任务进行加锁。


3.根据权利要求1所述的线程任务调度方法,其特征在于,利用所述业务模块向所述资源池中添加任务,以使所述任务被添加到所述任务队列中,包括:
利用所述业务模块向指定的任务队列中添加所述任务。


4.根据权利要求1所述的线程任务调度方法,其特征在于,利用所述业务模块向所述资源池中添加任务,以使所述任务被添加到所述任务队列中,包括:
利用所述业务模块向所述资源池中添加任务,并通过所述矩阵模型基于负载均衡算法将所述任务分配到所述任务队列中。


5.根据权利要求1至4任一项所述的线程任务调度方法,其特征在于,在设置一N×N型的矩阵模型之后,还包括:
选定K行所述任务队列作为快任务队列,并将剩余N-K行所述任务队列作为慢任务队列;其中,K大于等于0且小于等于N,且所述快任务队列中包含的任务对执行时间的要求高于所述慢任务队列中包含的任务对执行时间的要求;
相应地,在将执行完的任务从所...

【专利技术属性】
技术研发人员:郭强
申请(专利权)人:北京浪潮数据技术有限公司
类型:发明
国别省市:北京;11

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

1