一种任务调度方法及装置制造方法及图纸

技术编号:13595942 阅读:29 留言:0更新日期:2016-08-26 13:20
本发明专利技术实施例公开了一种任务调度方法及装置,涉及计算机技术领域,不仅可以避免多个线程并行执行任务时,同时访问一个数据块而引发的数据竞争,还可以避免引入锁带来的额外性能开销,减少并发错误的检测和调试难度。具体方案为:根据待执行的多个任务与多个任务待访问的M个数据块的对应关系,将多个任务中的每个任务添加到与该任务对应的数据块的任务队列;采用N个线程并行执行M个任务队列中N个任务队列中的任务,该N个线程中的每个线程执行N个任务队列中一个任务队列中的任务,N个线程中不同的线程执行不同任务队列中的任务,2≤N≤M。本发明专利技术用于多核系统的任务调度过程中。

【技术实现步骤摘要】

本专利技术涉及计算机
,尤其涉及一种任务调度方法及装置
技术介绍
随着处理器技术的发展,多核处理器的使用越来越广泛,市场上大多数处理器采用多核多线程的体系结构,甚至很多终端配置的处理器已经可以达到4核乃至8核。流式应用是一种常见的应用类型,在采用上述多核处理器处理流式应用的应用数据时,为了充分利用该多核处理器的并行处理能力,可以将流式应用的应用数据划分为多个数据块,由多核处理器并行处理上述多个数据块。其中,多核处理器的并行处理过程中,可能会存在由于采用至少两个线程并行执行任务时,该至少两个线程同时访问一个数据块,而引发数据竞争。现有技术中,为了避免上述数据竞争,在多核处理器的并行处理过程引入了“锁”。其中,线程在访问一个数据块之前,需要先获得该数据块的锁,并在访问完成后,需要释放该数据块的锁。如此在一个线程访问该数据块的过程中,其他线程则不能同时访问该数据块,则可以避免采用多个线程并行执行任务时,多个线程同时访问一个数据块而引发的数据竞争。但是,存在的问题是:在多核处理器的并行处理过程引入了“锁”后,虽然可以避免多个线程并行执行任务时,同时访问一个数据块,但是在多线程并行执行任务的过程中,仍旧存在多个线程同时竞争一个数据块的锁的问题,锁的竞争会带来额外的性能开销。
技术实现思路
本专利技术的实施例提供一种任务调度方法及装置,不仅可以减少多个线程并行执行任务时,同时访问一个数据块而引发的数据竞争,从而可以提高任务调度的效率。为达到上述目的,本专利技术的实施例采用如下技术方案:本专利技术实施例的第一方面,提供一种任务调度方法,该任务调度方法包括:根据待执行的多个任务与该多个任务待访问的M个数据块的对应关系,将上述多个任务中的每个任务添加到与该任务对应的数据块的任务队列,其中,该M个数据块与M个任务队列一一对应;采用N个线程并行执行该M个任务队列中N个任务队列中的任务,其中,该N个线程中的每个线程执行该N个任务队列中一个任务队列中的任务,该N个线程中不同的线程执行不同任务队列中的任务,2≤N≤M。本专利技术实施例提供的任务调度方法,可以以数据块为中心,多个任务中的每个任务分别添加到与该任务对应的数据块的任务队列;然后采用N个线程中的每个线程分别执行一个任务队列中的任务。如此,即使多个线程并行运行,由于采用该多个线程中每一个线程针对不同的数据块,执行不同数据块的任务队列中的任务;因此,不会存在多个线程同时竞争一个数据块或者竞争一个数据块的锁的问题。通过本方案,可以减少采用多个线程并行执行任务时,多个线程同时访问一个数据块而引发的数据竞争,从而可以提高任务调度的效率。并且,由于本方案中无需引入锁机制,因此可以避免引入锁带来的额外性能开销,降低并发错误的检测和调试难度。可以想到的是,由于系统性能或者系统配置的制约,系统中创建的线程的数量有限;当没有空闲的线程来执行刚刚生成的数据块的任务队列中的任务时,该数据块的任务队列则需要等待线程执行完其他数据块的任务队列中的任务后,再执行该数据块对应的任务队列中的任务。例如,当系统中创建了N个线程,而当前存在M(2≤N≤M)个数据块的任务队列中的任务需要被执行时,该N个线程则只能够并行执行M个任务队列中N个任务队列中的任务。据此,本专利技术实施例的方法还可以包括:将M个任务队列中的至少一
个任务队列添加至等待队列组,该至少一个任务队列中的每个任务队列中包含至少一个任务,且该至少一个任务未被N个线程中的线程执行。其中,该等待队列组用于按照先进先出的原则存放上述M个任务队列中的任务队列。通过本方案,可以将M个任务队列中的至少一个任务队列添加至等待队列组,如此,上述N个线程中的任一线程便可以在空闲后依据等待队列组中存放任务队列的原则,执行等待队列组中存放任务队列中的任务。可选的,本专利技术实施例中,采用N个线程并行执行M个任务队列中N个任务队列中的任务的方法具体可以包括:采用该N个线程,并行执行上述等待队列组中的前N个任务队列中的任务。其中,该前N个任务队列为该等待队列组中最先添加的N个任务队列,该N个线程中的每个线程按照先进先出原则执行该前N个任务队列中一相应的任务队列中的任务。进一步的,系统中的任一线程可能会因为执行完一个数据块的任务队列中的所有任务而处于空闲状态,或者该线程可能会因为退出执行一个数据块的任务队列中的任务而处于空闲状态,即该线程为空闲线程。此时,该空闲线程则可以执行在上述前N个任务队列后被添加到上述等待队列组的首个任务队列中的任务。具体的,本专利技术实施例的方法还可以包括:采用一空闲线程执行等待队列组中第一队列中的任务,第一队列为在上述前N个任务队列后被添加到该等待队列组的首个任务队列。并且,为了实时更新该等待队列组中的任务队列,本专利技术实施例的方法还可以包括:将被执行的第一队列从该等待队列组中删除。示例性的,在本专利技术实施例中,上述N个线程中的任一线程执行一任务队列中的任务的方法可以包括:该线程逐个执行该任务队列中的每个任务。具体的,任务调度装置采用一个线程(第一线程)执行一个任务队列(第二队列)中的任务的方法,包括:采用第一线程读取第二队列中的第
k个任务,并切换到第二队列中的第k个任务的上下文开始执行,1≤k<K,K为第二队列中的任务总数;若采用第一线程执行完第二队列中的第k个任务,则将第一线程退出第二队列中的第k个任务,并采用第一线程读取第一队列中的第k+1个任务,并切换到第二队列中的第k+1个任务的上下文开始执行,直至第二队列中的K个任务执行完毕。可以想到的是,上述线程可能会因为第二队列中的第k个任务等待来自其他任务队列(第三队列)的任务执行结果,而退出执行第k个任务。此时,则可以将退出执行的第k个任务添加至第三队列,并在该第k个任务获得该任务执行结果后,采用其他线程(第二线程)执行第三队列中的该第k个任务。具体的,上述多个任务包括属于第二队列的第一任务,该第一任务在被第一线程执行的过程中等待来自第三队列的任务执行结果,该第一线程为上述N个线程中用于执行该第二队列中的任务的线程,该第二队列为上述等待队列组中的任一任务队列,该第三队列为等待队列组中不同于该第二队列的任务队列。本专利技术实施例的方法还可以包括:将第一线程退出执行正在等待上述任务执行结果的第一任务;将退出执行的第一任务添加至上述第三队列;待该第一任务获得任务执行结果后,采用第二线程执行第二队列中的第一任务。其中,上述第二线程可以为N个线程中执行完相应的任务队列中的任务的线程;或者,上述第二线程为N个线程中退出执行相应的任务队列中的任务的线程。上述第一任务即为第二队列中的第k个任务。通过上述方案,即使一线程因为该线程正在执行的任务队列中的一任务等待其他任务队列的任务执行结果,而退出执行该任务,也可以将该任务添加至上述其他任务队列中。如此,便可以在该任务获得上述其他任务队列的任务执行结果后,采用一个空闲线程执行该任务队列中的该任务。优选的,当一线程开始执行等待队列组中的一个任务队列后,则表示该任务队列当前不处于等待执行状态。为了及时更新等待队列组中的任务队列,使得该等待队列组中仅包括未被线程执行的任务所在的任务队列,
本专利技术实施例的方法还可以包括:将等待队列组中被N个线程中的线程执行的本文档来自技高网
...

【技术保护点】
一种任务调度方法,其特征在于,所述方法包括:根据待执行的多个任务与所述多个任务待访问的M个数据块的对应关系,将所述多个任务中的每个任务添加到与该任务对应的数据块的任务队列,其中,所述M个数据块与M个任务队列一一对应;采用N个线程并行执行所述M个任务队列中N个任务队列中的任务,其中,所述N个线程中的每个线程执行所述N个任务队列中一个任务队列中的任务,所述N个线程中不同的线程执行不同任务队列中的任务,2≤N≤M。

【技术特征摘要】
1.一种任务调度方法,其特征在于,所述方法包括:根据待执行的多个任务与所述多个任务待访问的M个数据块的对应关系,将所述多个任务中的每个任务添加到与该任务对应的数据块的任务队列,其中,所述M个数据块与M个任务队列一一对应;采用N个线程并行执行所述M个任务队列中N个任务队列中的任务,其中,所述N个线程中的每个线程执行所述N个任务队列中一个任务队列中的任务,所述N个线程中不同的线程执行不同任务队列中的任务,2≤N≤M。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:将所述M个任务队列中的至少一个任务队列添加至等待队列组,所述至少一个任务队列中的每个任务队列中包含至少一个任务,且所述至少一个任务未被所述N个线程中的线程执行;其中,所述等待队列组用于按照先进先出的原则存放所述M个任务队列中的任务队列。3.根据权利要求2所述的方法,其特征在于,所述采用N个线程并行执行所述M个任务队列中N个任务队列中的任务,包括:采用所述N个线程,并行执行所述等待队列组中的前N个任务队列中的任务;其中,所述前N个任务队列为所述等待队列组中最先添加的N个任务队列,所述N个线程中的每个线程按照所述先进先出原则执行所述前N个任务队列中一相应的任务队列中的任务。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:采用一空闲线程执行所述等待队列组中第一队列中的任务,所述第一队列为在所述前N个任务队列后被添加到所述等待队列组的首个任务队列;将被执行的所述第一队列从所述等待队列组中删除;其中,所述空闲线程为所述N个线程中执行完相应的任务队列中的任务的线程;或者,所述空闲线程为所述N个线程中退出执行相应的任务队列中的任务的线程。5.根据权利要求1-4中任一项所述的方法,其特征在于,所述多个任务包括属于第二队列的第一任务,所述第一任务在被第一线程执行的过程中
\t等待来自第三队列的任务执行结果,所述第一线程为所述N个线程中用于执行所述第二队列中的任务的线程,所述第二队列为所述等待队列组中的任一任务队列,所述第三队列为所述等待队列组中不同于所述第二队列的任务队列;所述方法还包括:将所述第一线程退出执行正在等待所述任务执行结果的所述第一任务;将退出执行的所述第一任务添加至所述第三队列;待所述第一任务获得所述任务执行结果后,采用第二线程执行所述第二队列中的所述第一任务;其中,所述第二线程为所述N个线程中执行完相应的任务队列中的任务的线程;或者,所述第二线程为所述N个线程中退出执行相应的任务队列中的任务的线程。6.根据权利要求2-4中任一项所述的方法,其特征在于,所述方法还包括:将所述等待队列组中被所述N个线程中的线程执行的任务所在的任务队列删除。7.一种任务调度装置,其特征在于,所述装置包括:任务添加模块,用于根据待执行的多个任务与所述多个任务待访问的M个数据块的对应关系,将所述多个任务中的每个任务添加到与该任务对应的数据块的任务队列,其中,所述M个数据块与M个任务队列一一对应;任...

【专利技术属性】
技术研发人员:赵鹏刘雷曹玮
申请(专利权)人:华为技术有限公司中国科学院计算技术研究所
类型:发明
国别省市:广东;44

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

1