基于多核处理器的线程调度方法及装置制造方法及图纸

技术编号:21612301 阅读:22 留言:0更新日期:2019-07-13 20:42
本发明专利技术公开了一种基于多核处理器的线程调度方法,所述方法应用于包括一个无锁调度器及多个线程处理器的多核环境中;无锁调度器配置一个调度队列,每个线程处理器配置一个插入PUT队列和一个删除GET队列;所述方法,包括:无锁调度器按照预设周期对所有的PUT队列进行循环遍历,每次从一个PUT队列中读取一个线程,写入所述调度队列;以及无锁调度器按照所述预设周期读取所述调度队列,将读出的线程循环写入GET队列中。本发明专利技术实施例提供的基于多核处理器的线程调度方法能够解决现有技术中多核处理器在线程调度时由于锁冲突影响CPU性能的问题。

Thread Scheduling Method and Device Based on Multi-Core Processor

【技术实现步骤摘要】
基于多核处理器的线程调度方法及装置
本专利技术涉及通信
,尤指一种基于多核处理器的线程调度方法及装置。
技术介绍
转发性能是衡量路由设备好坏的一个重要的功能指标。为了减少转发数据包的处理环节,路由器通常采用快转来提高转发性能,这里,快转数据包转发流程:物理层接收→链路层处理→物理层发送,处理快转报文将会占用部分处理器(CPU)资源。因此,多核CPU应运而生。在多核CPU中的快转框架中,通常有多个要处理的线程,这些线程需要通过多核调度器公平地分发到多个核上执行,以提高整体的转发性能。目前在公平调度器中,有一个Ready队列,这个队列中存放的是需要调度的线程,多个核都要访问这个Ready队列,但Ready队列一次只能让一个核访问,所以需要多核锁,取得锁的核访问队列,访问结束后释放锁。没有取得锁的核空轮等待锁的释放。在多核CPU中,为了实现线程的公平调度。多个核需要将处理完了的线程,入队到同一个Ready队列。线程出队按先进先出的方式,出队时多个核访问同一个Ready队列,从Ready队列中获取线程并执行。如此,则会存在多个核同时访问同一个Ready队列,需要使用多核锁,产生多核锁竞争的情况,尤其在48核的情况下,如果出现锁冲突则会严重影响CPU整体性能。
技术实现思路
本专利技术实施例提供一种基于多核处理器的线程调度方法及装置,用以解决现有技术中多核处理器在线程调度时由于锁冲突影响CPU性能的问题。一种基于多核处理器的线程调度方法,所述方法应用于包括一个无锁调度器及多个线程处理器的多核环境中;无锁调度器配置有一个调度队列,每个线程处理器配置有一个插入PUT队列和一个删除GET队列;所述方法,包括:无锁调度器按照预设周期对所有的PUT队列进行循环遍历,每次从一个PUT队列中读取一个线程,写入所述调度队列;以及无锁调度器按照所述预设周期读取所述调度队列,将读出的线程循环写入GET队列中供所述线程处理器读取。进一步地,所述方法,还包括:每个线程处理器,执行如下操作:线程处理器依次读取对应的GET队列中的线程并执行;线程处理器将已执行结束的线程依次写入对应的PUT队列;其中,所述GET队列为双端口环形先入先出FIFO队列,用于缓存即将执行的线程;所述PUT队列为双端口环形FIFO队列,用于缓存已执行结束的线程。其中,所述调度队列为双端口环形FIFO队列,所述双端口包括IN端口和OUT端口。其中,所述无锁调度器从一个PUT队列中读取一个线程,写入所述调度队列,包括:所述无锁调度器从一个PUT队列中读取一个线程,通过IN端口将所述线程写入所述调度队列。其中,所述无锁调度器按照所述预设周期读取所述调度队列,包括:所述无锁调度器按照所述预设周期,通过所述OUT端口读出即将执行的线程。一种基于多核处理器的线程调度装置,所述装置包括无锁调度单元和多个线程处理单元;所述无锁调度单元配置有一个调度队列,每个线程处理单元配置有一个PUT队列和一个GET队列;其中,所述无锁调度单元,用于按照预设周期对所有的PUT队列进行循环遍历,每次从一个PUT队列中读取一个线程,写入所述调度队列;并按照所述预设周期读取所述调度队列,将读出的线程循环写入GET队列中;所述线程处理单元,用于读取所述GET队列中的线程。其中,所述线程处理单元,用于依次读取对应的GET队列中的线程并执行;并将已执行结束的线程依次写入对应的PUT队列;其中,所述GET队列为双端口环形先入先出FIFO队列,用于缓存即将执行的线程;所述PUT队列为双端口环形FIFO队列,用于缓存已执行结束的线程。其中,所述调度队列为双端口环形FIFO队列,所述双端口包括IN端口和OUT端口。其中,所述无锁调度单元,具体用于:从一个PUT队列中读取一个线程,通过IN端口将所述线程写入所述调度队列,并按照所述预设周期读取所述调度队列,将读出的线程循环写入GET队列中。其中,所述无锁调度单元,具体用于:按照所述预设周期,通过所述OUT端口读出即将执行的线程,并将读出的线程循环写入GET队列中。本专利技术有益效果如下:本专利技术实施例提供的基于多核处理器的线程调度方法及装置,通过为每个线程处理器配置两个队列,为无锁调度器配置一个调度队列,且配置的队列为可以同时支持两个处理器同时读写的双端口环形FIFO队列,实现多个线程处理器无锁获取和释放线程,并通过周期性的写入读取操作将PUT队列中的线程公平分发到GET队列,进而实现多核处理器的线程持续调度,整个调度过程不需要多核锁,避免了锁冲突的出现,并且处理器不需要空等锁,提高了CPU的利用率和性能。附图说明图1为本专利技术实施例中基于多核处理器的线程调度方法的流程图;图2为本专利技术实施例中基于多核处理器的线程调度方法的另一流程图图3为本专利技术实施例中基于多核处理器的线程调度装置的结构示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。针对现有技术中存在的多核处理器在线程调度时由于锁冲突影响CPU性能的问题,本专利技术实施例提供的基于多核处理器的线程调度方法,通过为每个线程处理器配置两个队列,为无锁调度器配置一个调度队列,且配置的队列为可以同时支持两个处理器同时读写的双端口环形先入先出(FirstInputFirstOutput,FIFO)队列,以实现无锁的线程调度;所述方法应用于包括一个无锁调度器及多个线程处理器的多核环境中;无锁调度器配置有一个调度队列,每个线程处理器配置有一个插入(PUT)队列和一个删除(GET)队列。本专利技术方法的流程如图1所示,执行步骤如下:步骤101,无锁调度器按照预设周期对所有的PUT队列进行循环遍历,每次从一个PUT队列中读取一个线程,写入所述调度队列;以及步骤102,无锁调度器按照所述预设周期读取所述调度队列,将读出的线程循环写入GET队列中供所述线程处理器读取。这里,所述预设周期按照实际需要进行设定,具体设定的原则是保证在PUT队列中不能有线程堆积,而GET队列中的线程不能为空。进一步地,如图2所示,所述方法还包括:每个线程处理器,执行如下操作:步骤201,线程处理器依次读取对应的GET队列中的线程并执行;步骤202,线程处理器将已执行结束的线程依次写入对应的PUT队列;其中,所述GET队列为双端口环形FIFO队列,用于缓存即将执行的线程;所述PUT队列为双端口环形FIFO队列,用于缓存已执行结束的线程。双端口环形FIFO队列,包括一个写端口和一个读端口。写端口同时只支持一个线程处理器向FIFO中写入数据。读端口同时只支持一个线程处理器从FIFO中读取数据。双端口环形FIFO,支持在写FIFO的同时读FIFO,且不需要加互斥锁,如此可以实现两个线程处理器同时分别进行写和读FIFO,而不需要多核锁。综上,上述步骤201和步骤202是两个独立的过程,并没有必然的先后顺序。进一步地,所述调度队列为双端口环形FIFO队列,所述双端口包括IN端口和OUT端口。所述调度队列用于对线程进行排队本文档来自技高网...

【技术保护点】
1.一种基于多核处理器的线程调度方法,其特征在于,所述方法应用于包括一个无锁调度器及多个线程处理器的多核环境中;无锁调度器配置有一个调度队列,每个线程处理器配置有一个插入PUT队列和一个删除GET队列;所述方法,包括:无锁调度器按照预设周期对所有的PUT队列进行循环遍历,每次从一个PUT队列中读取一个线程,写入所述调度队列;以及无锁调度器按照所述预设周期读取所述调度队列,将读出的线程循环写入GET队列中供所述线程处理器读取。

【技术特征摘要】
1.一种基于多核处理器的线程调度方法,其特征在于,所述方法应用于包括一个无锁调度器及多个线程处理器的多核环境中;无锁调度器配置有一个调度队列,每个线程处理器配置有一个插入PUT队列和一个删除GET队列;所述方法,包括:无锁调度器按照预设周期对所有的PUT队列进行循环遍历,每次从一个PUT队列中读取一个线程,写入所述调度队列;以及无锁调度器按照所述预设周期读取所述调度队列,将读出的线程循环写入GET队列中供所述线程处理器读取。2.根据权利要求1所述的方法,其特征在于,所述方法,还包括:每个线程处理器,执行如下操作:线程处理器依次读取对应的GET队列中的线程并执行;线程处理器将已执行结束的线程依次写入对应的PUT队列;其中,所述GET队列为双端口环形先入先出FIFO队列,用于缓存即将执行的线程;所述PUT队列为双端口环形FIFO队列,用于缓存已执行结束的线程。3.根据权利要求1或2所述的方法,其特征在于,所述调度队列为双端口环形FIFO队列,所述双端口包括IN端口和OUT端口。4.根据权利要求3所述的方法,所述无锁调度器从一个PUT队列中读取一个线程,写入所述调度队列,包括:所述无锁调度器从一个PUT队列中读取一个线程,通过IN端口将所述线程写入所述调度队列。5.根据权利要求3所述的方法,其特征在于,所述无锁调度器按照所述预设周期读取所述调度队列,包括:所述无锁调度器按照所述预设周期,通过所述OUT端口读出即将执行...

【专利技术属性】
技术研发人员:秦海洋
申请(专利权)人:北京星网锐捷网络技术有限公司
类型:发明
国别省市:北京,11

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

1