CN106155796A - 一种基于队列的线程调度方法及装置 - Google Patents

一种基于队列的线程调度方法及装置 Download PDF

Info

Publication number
CN106155796A
CN106155796A CN201610592066.3A CN201610592066A CN106155796A CN 106155796 A CN106155796 A CN 106155796A CN 201610592066 A CN201610592066 A CN 201610592066A CN 106155796 A CN106155796 A CN 106155796A
Authority
CN
China
Prior art keywords
thread
queue
pending task
task
defined rule
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610592066.3A
Other languages
English (en)
Inventor
姜怡坤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Beijing Electronic Information Industry Co Ltd
Original Assignee
Inspur Beijing Electronic Information Industry Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur Beijing Electronic Information Industry Co Ltd filed Critical Inspur Beijing Electronic Information Industry Co Ltd
Priority to CN201610592066.3A priority Critical patent/CN106155796A/zh
Publication of CN106155796A publication Critical patent/CN106155796A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/485Resource constraint

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种基于队列的线程调度方法,包括:检测当前系统中的线程拓扑结构的参数,并按照检测结果设置多个线程和存放待执行任务的多个队列;当有任务加入请求时,按照预定规则将待执行任务加入到所述队列中时,并调度对应的线程以执行所述待执行任务。由此可见,本方法无需太多线程,无需增加硬件资源,能够显著降低系统的负载,因此提高了系统的性能。此外,本发明还公开一种基于队列的线程调度装置,效果如上所述。

Description

一种基于队列的线程调度方法及装置
技术领域
本发明涉及计算机技术领域,特别是涉及一种基于队列的线程调度方法及装置。
背景技术
现在很多程序设计中,多线程的使用非常广泛,一个常见的例子就是网络服务器。当有新的连接进来的时候,网络服务器就会创建一个线程去完成当前连接的任务,而网络服务器继续保持监听状态。
但是随着连接数量的增加,线程的频繁调度引起的负载就超过了多线程处理带来的好处,造成系统的性能下降。
因此,如何充分利用多线程的优势,但是又避免线程频繁的调度带来的负载是本领域技术人员亟待解决的问题。
发明内容
本发明的目的是提供一种基于队列的线程调度方法及装置,用于充分利用多线程的优势,但是又避免线程频繁的调度带来的负载。
为解决上述技术问题,本发明提供一种基于队列的线程调度方法,包括:
检测当前系统中的线程拓扑结构的参数,并按照检测结果设置多个线程和存放待执行任务的多个队列;
当有任务加入请求时,按照预定规则将待执行任务加入到所述队列中时,并调度对应的线程以执行所述待执行任务。
优选地,所述检测当前系统中的线程拓扑结构的参数,并按照检测结果设置多个线程和存放待执行任务的多个队列具体包括:
检测所述线程拓扑结构中的逻辑核的数量,并按照所述逻辑核的数量设置相同数量的线程和相同数量的队列。
优选地,所述预定规则包括:
当有所述待执行任务时,按照Round Robin算法把所述待执行任务分配至所述队列中。
优选地,所述预定规则还包括:
当同时有多个待执行任务加入时,按照待执行任务的优先级把所述待执行任务分配至所述队列中。
一种基于队列的线程调度装置,包括:
设置单元,用于检测当前系统中的线程拓扑结构的参数,并按照检测结果设置多个线程和存放待执行任务的多个队列;
执行单元,用于当有任务加入请求时,按照预定规则将待执行任务加入到所述队列中时,并调度对应的线程以执行所述待执行任务。
优选地,所述设置单元具体用于检测所述线程拓扑结构中的逻辑核的数量,并按照所述逻辑核的数量设置相同数量的线程和相同数量的队列。
优选地,所述预定规则包括:
当有所述待执行任务时,按照Round Robin算法把所述待执行任务分配至所述队列中。
优选地,所述预定规则还包括:
当同时有多个待执行任务加入时,按照待执行任务的优先级把所述待执行任务分配至所述队列中。
本发明所提供的基于队列的线程调度方法及装置,首先根据当前系统中的线程拓扑结构的参数设置多个线程和存放待执行任务的多个队列,当有任务加入请求时,按照预定规则将待执行任务加入到队列中,并调度对应的线程以执行待执行任务。由此可见,本方法无需太多线程,无需增加硬件资源,能够显著降低系统的负载,因此提高了系统的性能。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种基于队列的线程调度方法的流程图;
图2为本发明提供的一种基于队列的线程调度装置的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
本发明的核心是提供一种基于队列的线程调度方法及装置。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
图1为本发明提供的一种基于队列的线程调度方法的流程图。如图1所示,基于队列的线程调度方法包括:
S10:检测当前系统中的线程拓扑结构的参数,并按照检测结果设置多个线程和存放待执行任务的多个队列。
在具体实施中,如果设置的线程太多,虽然能够加快任务处理的速度,但是给系统的调度增加了太多的负载,严重时容易导致宕机。考虑到这一因素,本步骤中,首先检测当前系统中的线程拓扑结构的参数,依据检测结果设置多个线程和多个队列。由于考虑到系统本身的线程拓扑结构才这是的线程数量和队列数量,因此能够降低过多线程给系统造成的调度压力。
可以理解的是,线程拓扑结构的参数的选取可以有很多种,例如CPU数量、逻辑核数量等。作为优选地实施方式,可以以逻辑核数量作为参数来选取,即检测线程拓扑结构中的逻辑核的数量,并按照逻辑核的数量设置相同数量的线程和相同数量的队列。因为线程数和系统逻辑核的数量一一对应,因此每个线程都会被尽量保证与CPU亲和性(某个线程一直在某个CPU上运行的能力),从而避免了线程调度和迁移。
S11:当有任务加入请求时,按照预定规则将待执行任务加入到队列中时,并调度对应的线程以执行待执行任务。
通过步骤S10设置好了线程和队列,当有待执行任务时,有可能当前的线程无法同时处理完毕,因此,需要将待执行任务按照预定规则分配到队列中,最后按照队列中的顺序执行即可。具体是队列用于存放待执行任务起到一个缓存的作用。当某个队列中的待执行任务达到执行时间时,则调度对应的线程执行该任务即可。
本实施例提供的基于队列的线程调度方法,首先根据当前系统中的线程拓扑结构的参数设置多个线程和存放待执行任务的多个队列,当有任务加入请求时,按照预定规则将待执行任务加入到队列中,并调度对应的线程以执行待执行任务。由此可见,本方法无需太多线程,无需增加硬件资源,能够显著降低系统的负载,因此提高了系统的性能。
在上述实施例的基础上,预定规则包括:
当有待执行任务时,按照Round Robin算法把待执行任务分配至队列中。
在具体实施中,当有新的任务时,需要将该任务分配至上述步骤设置的队列中,这里采用的是Round Robin算法,可以理解的是,如何将待执行任务分配到队列中有多种方法可以按照时间的先后等进行分配,并不是只有这一种分配方法。
在上述实施例的基础上,预定规则还包括:
当同时有多个待执行任务加入时,按照待执行任务的优先级把待执行任务分配至队列中。
如果同时又多个待执行任务加入,则每个队列中就会包含多个待处理的任务,但是有的待执行任务的优先级较高,为了保证优先级较高的待执行任务尽早执行,本实施例中,按照优先级分配至队列中,即优先级高的待执行任务排列在优先级低的待执行任务的前面。
图2为本发明提供的一种基于队列的线程调度装置的结构图。如图2所示,基于队列的线程调度装置包括:
设置单元10,用于检测当前系统中的线程拓扑结构的参数,并按照检测结果设置多个线程和存放待执行任务的多个队列。
在具体实施中,如果设置的线程太多,虽然能够加快任务处理的速度,但是给系统的调度增加了太多的负载,严重时容易导致宕机。考虑到这一因素,本实施例中,首先设置单元10检测当前系统中的线程拓扑结构的参数,依据检测结果设置多个线程和多个队列。由于考虑到系统本身的线程拓扑结构才这是的线程数量和队列数量,因此能够降低过多线程给系统造成的调度压力。
可以理解的是,线程拓扑结构的参数的选取可以有很多种,例如CPU数量、逻辑核数量等。作为优选地实施方式,可以以逻辑核数量作为参数来选取,即检测线程拓扑结构中的逻辑核的数量,并按照逻辑核的数量设置相同数量的线程和相同数量的队列。因为线程数和系统逻辑核的数量一一对应,因此每个线程都会被尽量保证与CPU亲和性(某个线程一直在某个CPU上运行的能力),从而避免了线程调度和迁移。
执行单元11,用于当有任务加入请求时,按照预定规则将待执行任务加入到队列中时,并调度对应的线程以执行待执行任务。
设置单元10设置好了线程和队列,当有待执行任务时,有可能当前的线程无法同时处理完毕,因此,需要将待执行任务按照预定规则分配到队列中,最后按照队列中的顺序执行即可。具体是队列用于存放待执行任务起到一个缓存的作用。当某个队列中的待执行任务达到执行时间时,则调度对应的线程执行该任务即可。
本实施例提供的基于队列的线程调度装置,首先根据当前系统中的线程拓扑结构的参数设置多个线程和存放待执行任务的多个队列,当有任务加入请求时,按照预定规则将待执行任务加入到队列中,并调度对应的线程以执行待执行任务。由此可见,本装置无需太多线程,无需增加硬件资源,能够显著降低系统的负载,因此提高了系统的性能。
作为优选地实施方式,设置单元10具体用于检测线程拓扑结构中的逻辑核的数量,并按照逻辑核的数量设置相同数量的线程和相同数量的队列。
作为优选地实施方式,预定规则包括:当有待执行任务时,按照Round Robin算法把待执行任务分配至队列中。
作为优选地实施方式,预定规则还包括:当同时有多个待执行任务加入时,按照待执行任务的优先级把待执行任务分配至队列中。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
以上对本发明所提供的基于队列的线程调度方法及装置进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

Claims (8)

1.一种基于队列的线程调度方法,其特征在于,包括:
检测当前系统中的线程拓扑结构的参数,并按照检测结果设置多个线程和存放待执行任务的多个队列;
当有任务加入请求时,按照预定规则将待执行任务加入到所述队列中时,并调度对应的线程以执行所述待执行任务。
2.根据权利要求1所述的基于队列的线程调度方法,其特征在于,所述检测当前系统中的线程拓扑结构的参数,并按照检测结果设置多个线程和存放待执行任务的多个队列具体包括:
检测所述线程拓扑结构中的逻辑核的数量,并按照所述逻辑核的数量设置相同数量的线程和相同数量的队列。
3.根据权利要求1所述的基于队列的线程调度方法,其特征在于,所述预定规则包括:
当有所述待执行任务时,按照Round Robin算法把所述待执行任务分配至所述队列中。
4.根据权利要求3所述的基于队列的线程调度方法,其特征在于,所述预定规则还包括:
当同时有多个待执行任务加入时,按照待执行任务的优先级把所述待执行任务分配至所述队列中。
5.一种基于队列的线程调度装置,其特征在于,包括:
设置单元,用于检测当前系统中的线程拓扑结构的参数,并按照检测结果设置多个线程和存放待执行任务的多个队列;
执行单元,用于当有任务加入请求时,按照预定规则将待执行任务加入到所述队列中时,并调度对应的线程以执行所述待执行任务。
6.根据权利要求5所述的基于队列的线程调度装置,其特征在于,所述设置单元具体用于检测所述线程拓扑结构中的逻辑核的数量,并按照所述逻辑核的数量设置相同数量的线程和相同数量的队列。
7.根据权利要求5所述的基于队列的线程调度装置,其特征在于,所述预定规则包括:
当有所述待执行任务时,按照Round Robin算法把所述待执行任务分配至所述队列中。
8.根据权利要求7所述的基于队列的线程调度装置,其特征在于,所述预定规则还包括:
当同时有多个待执行任务加入时,按照待执行任务的优先级把所述待执行任务分配至所述队列中。
CN201610592066.3A 2016-07-25 2016-07-25 一种基于队列的线程调度方法及装置 Pending CN106155796A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610592066.3A CN106155796A (zh) 2016-07-25 2016-07-25 一种基于队列的线程调度方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610592066.3A CN106155796A (zh) 2016-07-25 2016-07-25 一种基于队列的线程调度方法及装置

Publications (1)

Publication Number Publication Date
CN106155796A true CN106155796A (zh) 2016-11-23

Family

ID=58059792

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610592066.3A Pending CN106155796A (zh) 2016-07-25 2016-07-25 一种基于队列的线程调度方法及装置

Country Status (1)

Country Link
CN (1) CN106155796A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107133332A (zh) * 2017-05-11 2017-09-05 广州视源电子科技股份有限公司 一种查询任务的分配方法及装置
CN109032779A (zh) * 2018-07-09 2018-12-18 广州酷狗计算机科技有限公司 任务处理方法、装置、计算机设备及可读存储介质
CN110633106A (zh) * 2019-11-19 2019-12-31 北京中科寒武纪科技有限公司 算法自适应装置和算法自适应方法
CN111209112A (zh) * 2019-12-31 2020-05-29 杭州迪普科技股份有限公司 一种异常处理方法及装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719079A (zh) * 2009-12-17 2010-06-02 中国电力科学研究院 一种处理任务的方法及装置
CN101739293A (zh) * 2009-12-24 2010-06-16 航天恒星科技有限公司 一种基于多线程的卫星数据产品生产任务并行调度方法
CN101923491A (zh) * 2010-08-11 2010-12-22 上海交通大学 多核环境下线程组地址空间调度和切换线程的方法
CN102541653A (zh) * 2010-12-24 2012-07-04 新奥特(北京)视频技术有限公司 一种多任务线程池调度方法和系统
CN102591721A (zh) * 2011-12-30 2012-07-18 北京新媒传信科技有限公司 一种分配线程执行任务的方法和系统
CN104063279A (zh) * 2013-03-20 2014-09-24 腾讯科技(深圳)有限公司 任务调度方法、装置和终端
CN104102546A (zh) * 2014-07-23 2014-10-15 浪潮(北京)电子信息产业有限公司 一种实现cpu和gpu负载均衡的方法及系统
CN104899099A (zh) * 2015-05-26 2015-09-09 北京金和网络股份有限公司 一种基于线程池的任务分配方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719079A (zh) * 2009-12-17 2010-06-02 中国电力科学研究院 一种处理任务的方法及装置
CN101739293A (zh) * 2009-12-24 2010-06-16 航天恒星科技有限公司 一种基于多线程的卫星数据产品生产任务并行调度方法
CN101923491A (zh) * 2010-08-11 2010-12-22 上海交通大学 多核环境下线程组地址空间调度和切换线程的方法
CN102541653A (zh) * 2010-12-24 2012-07-04 新奥特(北京)视频技术有限公司 一种多任务线程池调度方法和系统
CN102591721A (zh) * 2011-12-30 2012-07-18 北京新媒传信科技有限公司 一种分配线程执行任务的方法和系统
CN104063279A (zh) * 2013-03-20 2014-09-24 腾讯科技(深圳)有限公司 任务调度方法、装置和终端
CN104102546A (zh) * 2014-07-23 2014-10-15 浪潮(北京)电子信息产业有限公司 一种实现cpu和gpu负载均衡的方法及系统
CN104899099A (zh) * 2015-05-26 2015-09-09 北京金和网络股份有限公司 一种基于线程池的任务分配方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107133332A (zh) * 2017-05-11 2017-09-05 广州视源电子科技股份有限公司 一种查询任务的分配方法及装置
CN107133332B (zh) * 2017-05-11 2020-10-16 广州视源电子科技股份有限公司 一种查询任务的分配方法及装置
CN109032779A (zh) * 2018-07-09 2018-12-18 广州酷狗计算机科技有限公司 任务处理方法、装置、计算机设备及可读存储介质
CN109032779B (zh) * 2018-07-09 2020-11-24 广州酷狗计算机科技有限公司 任务处理方法、装置、计算机设备及可读存储介质
CN110633106A (zh) * 2019-11-19 2019-12-31 北京中科寒武纪科技有限公司 算法自适应装置和算法自适应方法
CN111209112A (zh) * 2019-12-31 2020-05-29 杭州迪普科技股份有限公司 一种异常处理方法及装置

Similar Documents

Publication Publication Date Title
TWI694339B (zh) 一種區塊鏈共識方法、設備及系統
US9733987B2 (en) Techniques to dynamically allocate resources of configurable computing resources
Calheiros et al. Energy-efficient scheduling of urgent bag-of-tasks applications in clouds through DVFS
CN106293950B (zh) 一种面向集群系统的资源优化管理方法
CN106155796A (zh) 一种基于队列的线程调度方法及装置
CN106897132A (zh) 一种服务器任务调度的方法以及装置
CN105893126A (zh) 一种任务调度方法及装置
CN102662740B (zh) 非对称多核系统及其实现方法
CN107526645B (zh) 一种通信优化方法及系统
CN108804211A (zh) 线程调度方法、装置、电子设备及存储介质
US20120066688A1 (en) Processor thread load balancing manager
CN104239154B (zh) 一种Hadoop集群中的作业调度方法和作业调度器
CN102855173B (zh) 一种软件性能测试方法和装置
CN103502944A (zh) 虚拟机内存调整方法和设备
CN104753711B (zh) 调整网络设备资源配置的方法及装置
CN104407921A (zh) 一种基于时间的yarn任务资源动态调度方法
CN106407231A (zh) 一种数据多线程导出方法及系统
CN103617088A (zh) 在处理器不同类型线程中分配内核资源的方法、装置及其处理器
CN106383742A (zh) 一种基于linux的IO调度方法
CN109992366A (zh) 任务调度方法及调度装置
CN107193649A (zh) 一种基于numa系统的任务调度方法及装置
CN113986497B (zh) 基于多租户技术的队列调度方法、装置及系统
CN107506286A (zh) Cpu和内存块的自动上下线方法和系统
CN109002286A (zh) 基于同步编程的数据异步处理方法及装置
CN103617048B (zh) 一种虚拟机连接池分组系统及分组连接方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20161123