CN105528330A - 负载均衡的方法、装置、丛集和众核处理器 - Google Patents
负载均衡的方法、装置、丛集和众核处理器 Download PDFInfo
- Publication number
- CN105528330A CN105528330A CN201410521368.2A CN201410521368A CN105528330A CN 105528330 A CN105528330 A CN 105528330A CN 201410521368 A CN201410521368 A CN 201410521368A CN 105528330 A CN105528330 A CN 105528330A
- Authority
- CN
- China
- Prior art keywords
- processor core
- processor
- thread
- core
- load
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 230000004044 response Effects 0.000 claims description 84
- 238000013508 migration Methods 0.000 claims description 67
- 230000005012 migration Effects 0.000 claims description 67
- 238000012545 processing Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- IERHLVCPSMICTF-XVFCMESISA-N CMP group Chemical group P(=O)(O)(O)OC[C@@H]1[C@H]([C@H]([C@@H](O1)N1C(=O)N=C(N)C=C1)O)O IERHLVCPSMICTF-XVFCMESISA-N 0.000 description 4
- 239000013317 conjugated microporous polymer Substances 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 4
- 210000003643 myeloid progenitor cell Anatomy 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000032258 transport Effects 0.000 description 1
Landscapes
- Multi Processors (AREA)
Abstract
本发明实施例提供了一种负载均衡的方法、装置和丛集,该方法应用于众核处理器内的丛集,该方法包括:获取该丛集的多个处理器核中每一个处理器核的负载量,该处理器核的负载量由该处理器核的至少一种待执行线程确定;根据该丛集的多个处理器核中每一个处理器核的负载量确定第一处理器核和第二处理器核,其中,该第一处理器核为待迁出线程的处理器核,该第二处理器核为待迁入线程的处理器核;将该第一处理器核中的一个或多个待执行线程迁入到该第二处理器核中。
Description
技术领域
本发明实施例涉及计算机领域,并且更具体地,涉及一种负载均衡的方法、装置、丛集和众核处理器。
背景技术
在传统的片上多处理器系统(on-ChipMultipleProcessorSystem,CMPs)系统中,当所需要的数据不在本地存储中,本地线程将访问远端节点,将数据通过片上网络搬运回本地,同时进行数据的一致性维护。CMPs系统的功耗,主要由节点间的数据交互,以及数据一致性维护产生的数据通信开销(Traffic)构成。为了降低CMPs系统的功耗,提高CMPs系统的性能,当线程执行所需的数据不在本地,并且该线程需要对数据进行连续或者频繁得访问时,通过将线程迁移到数据所在的核上,可以大大减少片上的Traffic。
大部分硬件级的线程迁移产生的Traffic以及延迟都低于传统的远端节点访问。通过线程迁移可以大大减少片上的Traffic。
众核处理器中,包括多个丛集(Cluster),每个Cluster由多个处理器核互连构成,并且处理器核与处理器核之间维护缓存一致性的架构。处理器核也被称为内核或核(core),是CPU最重要的组成部分,CPU所有的计算、接收/存储命令、处理数据都由处理器核执行。各种CPU处理器核都具有固定的逻辑结构,一级缓存、二级缓存、执行单元、指令级单元和总线接口等。
现有的众核处理器负载均衡策略中,操作系统按处理器核,将底层的处理器资源划分为多个调度域,每个调度域可包括多个处理器核,然后根据设置的调度域失衡阈值和处理器核失衡阈值,判断调度域之间及调度域内是否负载失衡,其中,调度域失衡阈值用于判断调度域之间是否负载失衡,处理器核失衡阈值用于判断调度域内的处理器核是否负载失衡。由于需要通过操作系统进行监控调度,线程迁移的延迟较大,系统性能还有待提高。
发明内容
本发明实施例提供一种负载均衡的方法、装置、丛集和众核处理器,通过细粒度的硬件线程迁移来简单快速地实现Cluster内的负载均衡,可以减小线程迁移的延迟,加速数据处理,提高众核处理器系统的系统性能。
第一方面,提供了一种硬件线程负载均衡的方法,应用于众核处理器内的丛集Cluster,该方法包括:获取该Cluster的多个处理器核中每一个处理器核的负载量,该处理器核的负载量由该处理器核的至少一种待执行线程确定;根据该Cluster的多个处理器核中每一个处理器核的负载量确定第一处理器核和第二处理器核,其中,该第一处理器核为待迁出线程的处理器核,该第二处理器核为待迁入线程的处理器核;将该第一处理器核中的一个或多个待执行线程迁入到该第二处理器核中。
结合第一方面,在第一种可能的实现方式中,根据该Cluster的多个处理器核中每一个处理器核的负载量确定第一处理器核和第二处理器核具体实现为:根据该Cluster的多个处理器核中每一个处理器核的负载量,确定该多个处理器核之间的负载差值,并且当该多个处理器核中两个处理器核的负载差值大于第一预定阈值时,确定该两个处理器核中负载量高的处理器核为该第一处理器核,该两个处理器核中负载量低的处理器核为该第二处理器核。
结合第一方面,在第二种可能的实现方式中,根据该Cluster的多个处理器核中每一个处理器核的负载量确定第一处理器核和第二处理器核具体实现为:根据该Cluster的多个处理器核中每一个处理器核的负载量确定第一处理器核,该第一处理器核的负载量大于第二预定阈值;向该多个处理器核中第一处理器核以外的其它处理器核发送线程迁出请求,该线程迁出请求携带该第一处理器核的负载量;接收该多个处理器核中第一处理器核以外的其它处理器核根据自身的负载量与该第一处理器核的负载量反馈的应答信号,该应答信号用于指示接收到该线程迁出请求的处理器核是否具备迁入线程的能力;根据该多个处理器核中第一处理器核以外的其它处理器核反馈的应答信号确定第二处理器核,其中,该第二处理器核反馈的应答信号指示该第二处理器核具备迁入线程的能力。
结合第一方面,在第三种可能的实现方式中,根据该Cluster的多个处理器核中每一个处理器核的负载量确定第一处理器核和第二处理器核具体实现为:根据该Cluster的多个处理器核中每一个处理器核的负载量确定第二处理器核,该第二处理器核的负载量小于第三预定阈值;向该多个处理器核中第二处理器核以外的其它处理器核发送线程迁入请求,该线程迁入请求携带该第二处理器核的负载量;接收该多个处理器核中第二处理器核以外的其它处理器核根据自身的负载量与该第二处理器核的负载量反馈的应答信号,该应答信号用于指示收到该线程迁入请求的处理器核是否需要迁出线程;根据该多个处理器核中第二核以外的其它处理器核反馈的应答信号确定第一处理器核,其中,该第一处理器核反馈的应答信号指示该第一处理器核需要迁出线程。
结合第一方面或第一方面的第一种可能的实现方式至第一方面的第四种可能的实现方式中任一种可能的实现方式,在第五种可能的实现方式中,具体实现为:该处理器核的至少一种待执行线程中,不同类型的待执行线程在该处理器核的负载量中具有不同的加权系数。
结合第一方面或第一方面的第一种可能的实现方式至第一方面的第五种可能的实现方式中任一种可能的实现方式,在第六种可能的实现方式中,具体实现为:该处理器核的至少一种待执行线程包括以下至少一种线程:该处理器核的迁入线程、该处理器核的本地线程。
第二方面,提供了一种硬件线程负载均衡的装置,位于众核处理器内的丛集Cluster,该装置包括:获取单元,用于获取该装置所在的Cluster中的多个处理器核中每一个处理器核的负载量,该处理器核的负载量由该处理器核的至少一种待执行线程确定;确定单元,用于根据该Cluster的多个处理器核中每一个处理器核的负载量确定第一处理器核和第二处理器核,其中,该第一处理器核为待迁出线程的处理器核,该第二处理器核为待迁入线程的处理器核;线程迁移单元,用于将该第一处理器核中的一个或多个待执行线程迁入到该第二处理器核中。
结合第二方面,在第一种可能的实现方式中,该确定单元具体用于:根据该Cluster的多个处理器核中每一个处理器核的负载量,确定该多个处理器核之间的负载差值,并且当该多个处理器核中两个处理器核的负载差值大于第一预定阈值时,确定该两个处理器核中负载量高的处理器核为该第一处理器核,该两个处理器核中负载量低的处理器核为该第二处理器核。
结合第二方面,在第二种可能的实现方式中,该装置还包括接收单元和发送单元,该确定单元具体用于根据该Cluster的多个处理器核中每一个处理器核的负载量确定第一处理器核,该第一处理器核的负载量大于第二预定阈值;该发送单元用于向该多个处理器核中第一处理器核以外的其它处理器核发送线程迁出请求,该线程迁出请求携带该第一处理器核的负载量;该接收单元用于接收该多个处理器核中第一处理器核以外的其它处理器核根据自身的负载量与该第一处理器核的负载量反馈的应答信号,该应答信号用于指示接收到该线程迁出请求的处理器核是否具备迁入线程的能力;该确定单元具体还用于根据该多个处理器核中第一处理器核以外的其它处理器核反馈的应答信号确定第二处理器核,其中,该第二处理器核反馈的应答信号指示该第二处理器核具备迁入线程的能力。
结合第二方面,在第三种可能的实现方式中,该装置还包括接收单元和发送单元,该确定单元具体用于根据该Cluster的多个处理器核中每一个处理器核的负载量确定第二处理器核,该第二处理器核的负载量小于第三预定阈值;该发送单元用于向该多个处理器核中第二处理器核以外的其它处理器核发送线程迁入请求,该线程迁入请求携带该第二处理器核的负载量;该接收单元用于接收该多个处理器核中第二处理器核以外的其它处理器核根据自身的负载量与该第二处理器核的负载量反馈的应答信号,该应答信号用于指示收到该线程迁入请求的处理器核是否需要迁出线程;该确定单元具体还用于根据该多个处理器核中第二核以外的其它处理器核反馈的应答信号确定第一处理器核,其中,该第一处理器核反馈的应答信号指示该第一处理器核需要迁出线程。
结合第二方面或第二方面的第一种可能的实现方式至第二方面的第三种可能的实现方式中任一种可能的实现方式,在第四种可能的实现方式中,具体实现为:该处理器核的至少一种待执行线程中,不同类型的待执行线程在该处理器核的负载量中具有不同的加权系数。
结合第二方面或第二方面的第一种可能的实现方式至第二方面的第四种可能的实现方式中任一种可能的实现方式,在第五种可能的实现方式中,具体实现为:该处理器核的至少一种待执行线程包括以下至少一种线程:该处理器核的迁入线程、该处理器核的本地线程。
第三方面,提出了一种众核处理器的丛集,该丛集所在的众核处理器包括多个该丛集,该丛集包括路由器和多个处理器核,该多个处理器核连接到该路由器,其中,该路由器用于:获取多个处理器核中每一个处理器核的负载量,其中,该处理器核的负载值由该处理器核的至少一种待执行线程确定;根据该多个处理器核中每一个处理器核的负载量,确定第一处理器核和第二处理器核,其中,该第一处理器核为待迁出线程的处理器核,该第二处理器核为待迁入线程的处理器核;将该第一处理器核中的一个或多个待执行线程迁入到该第二处理器核中。
第四方面,提出了一种众核处理器,包括多个丛集Cluster,该Cluster包括第二方面或第二方面的第一种可能的实现方式至第二方面的第五种可能的实现方式中任一种可能的实现方式中的硬件线程负载均衡装置,或者该Cluster为第三方面中的丛集。
基于以上技术方案,本发明实施例的负载均衡的方法、装置、丛集和众核处理器,通过细粒度的硬件线程迁移来简单快速地实现Cluster内的负载均衡,提高了Cluster内线程的并行度,降低了线程执行的平均等待时间,提高了众核处理器系统的系统性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的众核结构示意图。
图2是本发明实施例丛集内硬件线程负载均衡方法流程图。
图3是本发明实施例丛集内线程迁移场景示意图。
图4是本发明实施例硬件线程负载均衡装置的结构示意图。
图5是本发明实施例众核处理器的结构示意图。
图6是本发明实施例众核处理器的丛集的结构示意图。
图7是本发明实施例众核处理器的丛集的结构示意图。
图8是本发明实施例众核处理器的丛集的结构示意图。
图9是本发明实施例众核处理器的丛集的结构示意图。
图10是本发明实施例众核处理器的丛集的结构示意图。
图11是本发明实施例众核处理器的丛集的结构示意图。
图12是本发明实施例众核处理器的丛集的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了方便理解本发明实施例,首先在此介绍本发明实施例描述中会引入的几个要素。
丛集(Cluster):众核处理器包括多个Cluster,每个Cluster由多个处理器核互连构成,并且每个Cluster维护着Cluster内的处理器核与处理器核之间的缓存一致性。
线程,可包括硬件线程和软件线程。操作系统中每个运行的程序都是一个进程,每个进程会创建一个或多个线程,该线程称为软件线程。每个处理器内核可以提供一个或多个的硬件线程,每个硬件线程都是一个可调度的逻辑处理器,每一个逻辑处理器可以理解为多条指令,运行软件线程的代码。本发明的实施例中所提到的迁入线程、本地线程和中断线程,均指硬件线程,该硬件线程包括软件线程的一段执行代码段,该执行代码段可包括多条指令。
迁入线程:指Cluster以外的处理器核迁移到当前Cluster中的线程。迁入线程的指令中,包含Cluster以外的一个处理器核对Cluster的共享缓存的访存指令。
本地线程:Cluster内的处理器核的线程。本地线程的指令中,包含Cluster内的一个处理器核对Cluster的共享缓存的访存指令。
中断线程:中断线程是不同于迁入线程和本地线程以外的线程,操作系统在处理器核中的系统线程,等等。
图1是本发明实施例的众核结构示意图。如图1所示,在面向大数据应用的众核架构中,以丛集(Cluster)为架构单位,Cluster内的共享LLC(LastLevelCache)为Cluster内所有处理器核所共享。如果通过线程迁移的方式减少Cluster之间数据交互的Traffic,将能够降低众核处理器系统的功耗和提高众核处理器系统的性能。
图2是本发明实施例丛集内硬件线程负载均衡方法流程图,图2的方法可应用于众核处理器内的丛集Cluster,由丛集内硬件线程的负载均衡装置执行。
201,获取该Cluster的多个处理器核中每一个处理器核的负载量。
其中,该处理器核的负载量由该处理器核的至少一种待执行线程确定。
一种具体的实现方式,可以根据处理器核的待执行线程的个数计算处理器核的负载量。
应理解,线程的执行指令中,涉及运算的指令的时间开销都较小,一般为一个时钟周期;访存指令时间开销较大,需要占据线程中大部分的时间开销。因此,处理器的待执行线程之间的资源竞争,实际上是对访存资源的竞争。另一种具体的实现方式,还可通过处理器核中访存指令的个数来计算处理器核的负载量。
另外,在对Cluster的处理器核进行负载均衡时,可以考虑对处理器核内的所有线程进行负载均衡,或者对处理器核内的部分类型的线程进行负载均衡。本发明实施例中,处理器核的待执行线程可包括多种不同的类型。例如,可以将处理器核的待执行线程分为本地线程,迁入线程,或中断线程,等等。
在获取处理器核的负载量时,可根据处理器核中待执行线程的类型分别获取各种待执行线程的负载量。例如,在获取处理器核中本地线程的负载量时,可根据处理器核中本地Load/Store队列中等待的访存指令的数量,获取本地线程的负载量;在获取处理器核中迁入线程的负载量时,可根据处理器核中线程栈信息的数量,获取迁入线程的负载量;在获取处理器核中中断线程的负载量时,可根据处理器核的中断等待队列的中断个数,获取中断线程的负载量,等等。
202,根据该Cluster的多个处理器核中每一个处理器核的负载量确定第一处理器核和第二处理器核。
其中,该第一处理器核为待迁出线程的处理器核,该第二处理器核为待迁入线程的处理器核。
203,将该第一处理器核中的一个或多个待执行线程迁入到该第二处理器核中。
本发明实施例中,通过细粒度的硬件线程迁移来简单快速地实现Cluster内的负载均衡,提高了Cluster内线程的并行度,降低了线程执行的平均等待时间,提高了众核处理器系统的系统性能。。
可选地,作为一个实施例,步骤202具体实现为:根据该Cluster的多个处理器核中每一个处理器核的负载量,确定该多个处理器核之间的负载差值,并且当该多个处理器核中两个处理器核的负载差值大于第一预定阈值时,确定该两个处理器核中负载量高的处理器核为该第一处理器核,该两个处理器核中负载量低的处理器核为该第二处理器核。
可选地,作为另一个实施例,步骤202具体实现为:根据该Cluster的多个处理器核中每一个处理器核的负载量确定第一处理器核,该第一处理器核的负载量大于第二预定阈值;向该多个处理器核中第一处理器核以外的其它处理器核发送线程迁出请求,该线程迁出请求携带该第一处理器核的负载量;接收该多个处理器核中第一处理器核以外的其它处理器核根据自身的负载量与该第一处理器核的负载量反馈的应答信号,该应答信号用于指示接收到该线程迁出请求的处理器核是否具备迁入线程的能力;根据该多个处理器核中第一处理器核以外的其它处理器核反馈的应答信号确定第二处理器核,其中,该第二处理器核反馈的应答信号指示该第二处理器核具备迁入线程的能力。
可选地,作为另一个实施例,步骤202具体实现为:根据该Cluster的多个处理器核中每一个处理器核的负载量确定第二处理器核,该第二处理器核的负载量小于第三预定阈值;向该多个处理器核中第二处理器核以外的其它处理器核发送线程迁入请求,该线程迁入请求携带该第二处理器核的负载量;接收该多个处理器核中第二处理器核以外的其它处理器核根据自身的负载量与该第二处理器核的负载量反馈的应答信号,该应答信号用于指示收到该线程迁入请求的处理器核是否需要迁出线程;根据该多个处理器核中第二核以外的其它处理器核反馈的应答信号确定第一处理器核,其中,该第一处理器核反馈的应答信号指示该第一处理器核需要迁出线程。
可选地,作为一个实施例,不同类型的待执行线程,在处理器核的负载量中具有相同的加权系数。例如,处理器核的负载量由处理器核的本地线程和迁入线程决定,本地线程为3,迁入线程为5,则其负载量为8。
可选地,作为另一个实施例,不同类型的待执行线程,在处理器核的负载量中具有不同的加权系数。例如,处理器核的负载量由处理器核的本地线程和迁入线程决定,本地线程的加权系数为1,个数为3,迁入线程的加权系数为0.8,个数为5,则其负载量为7。
下面,将结合具体的实施例,对本发明实施例的方法作进一步的描述。
图3是本发明实施例丛集内线程迁移场景示意图。如图3所示,Cluster内可包括多个处理器核(处理器核1,处理器核2,……处理器核n)和路由器,该处理器核中可包括线程栈信息收集器和线程迁移单元。其中,线程栈信息收集器用于获取处理器核内待执行线程的个数,并汇集到Cluster内的路由器中;线程迁移单元用于向其它处理器核发起线程迁入(或迁出请求),并接收其它处理器核的应答信号;线程迁移单元还用于迁入线程(或迁出线程)。图3中,在迁移之前,处理器核1包括5个迁入线程,5个本地线程和3个中断线程,处理器核2包括1个迁入线程,3个本地线程和3个中断线程,处理器核n包括2个迁入线程,3个本地线程和3个中断线程。应理解,此处提到处理器核所拥有的迁入线程、本地线程和中断线程,都是处理器核的待执行线程。中断线程是迁入线程和本地线程以外的线程,例如,操作系统在处理器核中的系统线程,等等。
以图3所示的应用场景为例,本发明的具体实施例1如下:
本发明实施例中,在计算处理器核的负载量时,需要考虑处理器核的迁入线程、本地线程和中断线程。
第一步,获取每个处理器核的负载量。
路由器可通过线程栈信息收集器获取每个处理器核的栈信息,获取每个处理器核中待执行的迁入线程个数,从而获取每个处理器核中待执行的迁入线程的负载量。
例如,在图3所示的场景中,路由器可以获知,处理器核1包括5个迁入线程,处理器核2包括1个迁入线程,处理器核n包括2个迁入线程,等等。
路由器可根据处理器核的Load/Store队列,获取处理器核中待执行的本地线程的个数。
例如,在图3所示的场景中,路由器可以获知,处理器核1包括5个本地线程,处理器核2包括3个本地线程,处理器核n包括3个本地线程,等等。
应理解,在评价处理器核的负载量时,对处理器核中待执行的本地线程的负载量的评估,等价于对处理器核的Load/Store队列中待执行的本地访存指令的负载量的评估。因此,在获取处理器核的负载量时,可根据处理器核的Load/Store队列中待执行的本地访存指令的个数,来获取处理器核中待执行的本地线程的负载量。
另外,路由器还可得到处理器核的中断线程的负载量。例如,路由器可通过获取处理器核的中断队列的中断个数,来获取处理器核的中断线程的个数,进而获取处理器核的中断线程的负载量。
例如,在图3所示的场景中,路由器可以获知,处理器核1包括5个中断线程,处理器核2包括3个中断线程,处理器核n包括3个中断线程,等等。
不妨假设迁入线程、本地线程和中断线程在处理器核的负载量中的加权系数都为1,则此时可以得到,处理器核1的负载量为12,处理器核2的负载量为7,处理器核n的负载量为8,等等。
应理解,在评价处理器核的负载量时,对处理器核中待执行的中断线程的负载量的评估,等价于对处理器核的中断队列的中断个数的负载量的评估。因此,在获取处理器核的负载量时,可根据处理器核的中断队列的中断个数,来获取处理器核中待执行的本地线程的负载量。
当然,应理解,本发明实施例中,影响处理器核的负载量的线程类型,并不限于上述列举的线程类型。
第二步,确定Cluster内多个处理器核的负载差值。
路由器根据各个处理器核的负载量,可确定处理器核之间的负载差值。
此时,路由器可确定处理器核1和处理器核2的负载差值为5,处理器核1和处理器核n的负载差值为4,处理器核2和处理器核n的负载差值为1,等等。
第三步,根据负载差值确定第一处理器核和第二处理器核。
其中,该第一处理器核为待迁出线程的处理器核,该第二处理器核为待迁入线程的处理器核。
如果两个处理器核之间的负载差值大于第一预定阈值,则将这两个处理器核中负载量大的处理器核作为第一处理器核,负载量小的处理器核作为第二处理器核。
不妨假设该第一预定阈值为4,则路由器可确定负载差值符合条件的两个处理器核为处理器核1和处理器核2。此时,处理器核1为第一处理器核,处理器核2为第二处理器核。
第四步,迁移线程。
此时,可通过线程迁移单元,控制线程迁移逻辑,迁移线程,实现Cluster内处理器核的负载均衡。
例如,在图3所示的场景中,此时,处理器核1可将2个迁入线程迁移到处理器核2中。
本发明实施例中,通过路由器获取Cluster内各个处理核的负载量,并确定第一处理器核(待迁出线程的处理器核)和第二处理器核(待迁入线程的处理器核),再在第一处理器核和第二处理器核进行线程迁移,从而达到Cluster内的负载均衡。
以图3所示的应用场景为例,本发明的具体实施例2如下:
本发明实施例中,在计算处理器核的负载量时,只考虑处理器核的迁入线程和本地线程。
第一步,获取每个处理器核的负载量。
路由器可通过线程栈信息收集器获取每个处理器核的栈信息,从而获取每个处理器核中待执行的迁入线程的个数。
例如,在图3所示的场景中,路由器可以获知,处理器核1包括5个迁入线程,处理器核2包括1个迁入线程,处理器核n包括2个迁入线程,等等。
另外,路由器根据处理器核的Load/Store队列,获取处理器核中待执行的本地线程的个数。
例如,在图3所示的场景中,路由器可以获知,处理器核1包括5个本地线程,处理器核2包括3个本地线程,处理器核n包括3个本地线程,等等。
不妨假设迁入线程的加权系数都为0.8,本地线程的加权系数为1,则此时可以得到,处理器核1的负载量为9,处理器核2的负载量为3.8,处理器核n的负载量为4.6。
第二步,确定第一处理器核。
其中,该第一处理器核为待迁出线程的处理器核。
路由器根据各个处理器核的负载量,可确定第一处理器核。
如果处理器核的负载量大于第二预定阈值,则可确定该处理器核为第一处理器核。
例如,在图3所示的场景中,不妨假设第二预定阈值为5,则此时路由器可确定处理器核1为第一处理器。
另外,当存在多个大于第二预定阈值的处理器核时,可选择其中一个作为第一处理器核。
第三步,第一处理器核向其它处理器核发起线程迁出请求。
第一处理器核可通过线程迁移单元,经过路由器向Cluster内的其它处理器核发送线程迁出请求,该线程迁出请求中携带第一处理器核的负载量。
第四步,其它处理器核反馈应答信号。
其它处理器核根据自身的负载量与第一处理器的负载量,反馈应答信号。该应答信号用于指示该处理器核是否具备迁入线程的能力。
具体地,可设定一个阈值,当第一处理器的负载量减去处理器核自身的负载量大于该阈值时,认为该处理器核具备迁入线程的能力。
例如,在图3所示的场景中,假设该阈值为4,则此时处理器核2和处理器核n都具备迁入线程的能力,处理器核2发送的应答信号指示处理器核2具备迁入线程的能力,处理器核n发送的应答信号指示处理器核n具备迁入线程的能力。
第五步,根据其它处理器核的应答信号确定第二处理器核。
如果应答信号指示该应答信号所对应的处理器核具备迁入线程的能力,则可确认该应答信号所对应的处理器核为第二处理器核。
如果出现多个应答信号指示该应答信号所对应的处理器核具备迁入线程的能力,可从该多个应答信号所对应的处理器核中选择一个处理器核作为第二处理器核。
本发明实施例中,处理器核2的应答信号指示处理器核2可以迁入线程,处理器核n的应答信号指示处理器核n可以迁入线程。此时,可从中选择一个作为第二处理器核,例如,选择处理器核2作为第二处理器核。
第六步,迁移线程。
此时,可通过线程迁移单元,控制线程迁移逻辑,迁移线程,实现Cluster内处理器核的负载均衡。
以图3为例,此时,处理器核1可将2个迁入线程迁移到处理器核2中。
本发明实施例中,通过路由器获取Cluster内各个处理核的负载量,并确定第一处理器核(待迁出线程的处理器核),再通过第一处理器核发送线程迁出请求给其它处理器核,并根据其它处理器核反馈的应答信号确定第二处理器核(待迁入线程的处理器核),再在第一处理器核和第二处理器核进行线程迁移,从而达到Cluster内的负载均衡。
以图3所示的应用场景为例,本发明的具体实施例3如下:
本发明实施例中,在计算处理器核的负载量时,只考虑处理器核的迁入线程和本地线程。
第一步,获取每个处理器核的负载量。
路由器可通过线程栈信息收集器获取每个处理器核的栈信息,从而获取每个处理器核中待执行的迁入线程的个数。
例如,在图3所示的场景中,路由器可以获知,处理器核1包括5个迁入线程,处理器核2包括1个迁入线程,处理器核n包括2个迁入线程,等等。
另外,路由器根据处理器核的Load/Store队列,获取处理器核中待执行的本地线程的个数。
例如,在图3所示的场景中,路由器可以获知,处理器核1包括5个本地线程,处理器核2包括3个本地线程,处理器核n包括3个本地线程,等等。
不妨假设迁入线程的加权系数都为0.8,本地线程的加权系数为1,则此时可以得到,处理器核1的负载量为9,处理器核2的负载量为3.8,处理器核n的负载量为4.6。
第二步,确定第二处理器核。
其中,该第二处理器核为待迁入线程的处理器核。
路由器根据各个处理器核的负载量,可确定第二处理器核。
如果处理器核的负载量小于第三预定阈值,则可确定该处理器核为第二处理器核。
例如,在图3所示的场景中,不妨假设第三预定阈值为4,则此时路由器可确定处理器核2为第二处理器。
另外,当存在多个小于第三预定阈值的处理器核时,选择其中一个作为第二处理器核。
第三步,第二处理器核向其它处理器核发起线程迁入请求。
第二处理器核可通过线程迁移单元,经过路由器向Cluster内的其它处理器核发送线程迁入请求,该线程迁入请求中携带第二处理器核的负载量。
第四步,其它处理器核反馈应答信号。
其它处理器核根据自身的负载量与第二处理器的负载量,反馈应答信号。该应答信号用于指示该处理器核需要迁出线程。
具体地,可设定一个阈值,当处理器核自身的负载量减去第二处理器的负载量大于该阈值时,认为该处理器核需要迁出线程。
例如,在图3所示的场景中,假设该阈值为4,则此时处理器核1需要迁出线程,处理器核1发送的应答信号指示处理器核1需要迁出线程。
第五步,根据其它处理器核的应答信号确定第一处理器核。
如果应答信号指示该应答信号所对应的处理器核需要迁出线程,则可确认该应答信号所对应的处理器核为第一处理器核。
如果出现多个应答信号指示该应答信号所对应的处理器核需要迁出线程,可从该多个应答信号所对应的处理器核中选择一个处理器核作为第一处理器核。
本发明实施例中,处理器核1的应答信号指示处理器核1需要迁出线程,可选择处理器核1作为第一处理器核。
第六步,迁移线程。
此时,可通过线程迁移单元,控制线程迁移逻辑,迁移线程,实现Cluster内处理器核的负载均衡。
以图3为例,此时,处理器核1可将2个迁入线程迁移到处理器核2中。
本发明实施例中,通过路由器获取Cluster内各个处理核的负载量,并确定第二处理器核(待迁入线程的处理器核),再通过第二处理器核发送线程迁入请求给其它处理器核,并根据其它处理器核反馈的应答信号确定第一处理器核(待迁出线程的处理器核),再在第二处理器核和第一处理器核进行线程迁移,从而达到Cluster内的负载均衡。
应理解,在具体的应用中,本发明的具体实施例1-3的路由器执行的功能可以由其它硬件或芯片实现,例如,Cluster的控制器,等等。
应理解,在具体的应用中,本发明的具体实施例1-3的线程栈信息收集器还可以部署在处理器核之外,一个处理器核对应于一个线程栈信息收集器,或者多个处理器核对应于一个线程栈信息收集器,或者是Cluster内的所有处理器核共享一个线程栈信息收集器。
类似地,本发明的具体实施例1-3的线程迁移单元也可部署于处理器核之外,一个处理器核对应于一个线程迁移单元,或者是Cluster内的所有处理器核共享一个线程迁移单元。
图4是本发明实施例硬件线程负载均衡装置400的结构示意图。硬件线程负载均衡装置400位于众核处理器的丛集(Cluster)内。硬件线程负载均衡装置400可包括:获取单元401、确定单元402和线程迁移单元403。其中,
获取单元401,用于获取该装置所在的Cluster中的多个处理器核中每一个处理器核的负载量。
其中,该处理器核的负载量由该处理器核的至少一种待执行线程确定。例如,处理器核的负载量可以等于处理器核的待执行线程的个数。另外,在对Cluster的处理器核进行负载均衡时,可以考虑对处理器核内的所有线程进行负载均衡,或者对处理器核内的部分类型的线程进行负载均衡。
确定单元402,用于根据该Cluster的多个处理器核中每一个处理器核的负载量确定第一处理器核和第二处理器核。
其中,该第一处理器核为待迁出线程的处理器核,该第二处理器核为待迁入线程的处理器核。
线程迁移单元403,用于将该第一处理器核中的一个或多个待执行线程迁入到该第二处理器核中。
本发明实施例中,硬件线程负载均衡装置400通过细粒度的硬件线程迁移来简单快速地实现Cluster内的负载均衡,提高了Cluster内线程的并行度,降低了线程执行的平均等待时间,提高了众核处理器系统的系统性能。。
可选地,作为一个实施例,确定单元402具体用于:根据该Cluster的多个处理器核中每一个处理器核的负载量,确定该多个处理器核之间的负载差值,并且当该多个处理器核中两个处理器核的负载差值大于第一预定阈值时,确定该两个处理器核中负载量高的处理器核为该第一处理器核,该两个处理器核中负载量低的处理器核为该第二处理器核。
可选地,作为另一个实施例,确定单元402具体用于:根据该Cluster的多个处理器核中每一个处理器核的负载量确定第一处理器核,该第一处理器核的负载量大于第二预定阈值;向该多个处理器核中第一处理器核以外的其它处理器核发送线程迁出请求,该线程迁出请求携带该第一处理器核的负载量;接收该多个处理器核中第一处理器核以外的其它处理器核根据自身的负载量与该第一处理器核的负载量反馈的应答信号,该应答信号用于指示接收到该线程迁出请求的处理器核是否具备迁入线程的能力;根据该多个处理器核中第一处理器核以外的其它处理器核反馈的应答信号确定第二处理器核,其中,该第二处理器核反馈的应答信号指示该第二处理器核具备迁入线程的能力。
可选地,作为另一个实施例,确定单元402具体用于:根据该Cluster的多个处理器核中每一个处理器核的负载量确定第二处理器核,该第二处理器核的负载量小于第三预定阈值;向该多个处理器核中第二处理器核以外的其它处理器核发送线程迁入请求,该线程迁入请求携带该第二处理器核的负载量;接收该多个处理器核中第二处理器核以外的其它处理器核根据自身的负载量与该第二处理器核的负载量反馈的应答信号,该应答信号用于指示收到该线程迁入请求的处理器核是否需要迁出线程;根据该多个处理器核中第二核以外的其它处理器核反馈的应答信号确定第一处理器核,其中,该第一处理器核反馈的应答信号指示该第一处理器核需要迁出线程。
可选地,作为一个实施例,不同类型的待执行线程,在处理器核的负载量中具有相同的加权系数。例如,处理器核的负载量由处理器核的本地线程和迁入线程决定,本地线程为3,迁入线程为5,则其负载量为8。
可选地,作为另一个实施例,不同类型的待执行线程,在处理器核的负载量中具有不同的加权系数。例如,处理器核的负载量由处理器核的本地线程和迁入线程决定,本地线程的加权系数为1,个数为3,迁入线程的加权系数为0.8,个数为5,则其负载量为7。
另外,硬件线程负载均衡装置400还可执行图2的方法,并实现硬件线程负载均衡装置在图2所示的实施例或路由器在本发明具体实施例1-3中所具有的功能,本发明实施例在此不再赘述。
图5是本发明实施例众核处理器500的结构示意图。如图5所示,众核处理器500可包括多个丛集510,每个丛集510内可包括图4的实施例中所示的硬件线程负载均衡装置400。
图6是本发明实施例众核处理器的丛集600的结构示意图。如图5所示,丛集600可包括路由器610和多个处理器核620,该多个处理器核620连接到路由器610。其中,
路由器610,用于获取多个处理器核620中每一个处理器核的负载量,处理器核的负载值由该处理器核的至少一种待执行线程确定。
处理器核的至少一种待执行线程中,可包括本地线程、迁入线程或中断线程。
路由器610还用于根据多个处理器核620中每一个处理器核的负载量,确定第一处理器核和第二处理器核。其中,该第一处理器核为待迁出线程的处理器核,该第二处理器核为待迁入线程的处理器核。
路由器610还用于将该第一处理器核中的一个或多个待执行线程迁入到该第二处理器核中。
本发明实施例中,众核处理器中的丛集通过路由器对细粒度的硬件线程迁移,简单快速地实现Cluster内的负载均衡,提高了Cluster内线程的并行度,降低了线程执行的平均等待时间,提高了众核处理器系统的系统性能。
可选地,作为一个实施例,在用于根据多个处理器核620中每一个处理器核的负载量,确定第一处理器核和第二处理器核的过程中,路由器610具体用于:可根据该Cluster的多个处理器核620中每一个处理器核的负载值,确定该多个处理器核之间的负载差值,并且当该多个处理器核620中两个处理器核的负载差值大于第一预定阈值时,确定该两个处理器核620中负载值高的处理器核为该第一处理器核,该两个处理器核620中负载值低的处理器核为该第二处理器核。
可选地,作为另一个实施例,在用于根据多个处理器核620中每一个处理器核的负载量,确定第一处理器核和第二处理器核的过程中,路由器610具体用于:根据该Cluster的多个处理器核620中每一个处理器核的负载值确定第一处理器核,该第一处理器核的负载值大于第二预定阈值;向该多个处理器核620中第一处理器核以外的其它处理器核发送线程迁出请求,该线程迁出请求携带该第一处理器核的负载值;接收该多个处理器核620中第一处理器核以外的其它处理器核根据自身的负载值与该第一处理器核的负载值反馈的应答信号,该应答信号用于指示接收到该线程迁出请求的处理器核是否具备迁入线程的能力;根据该多个处理器核620中第一处理器核以外的其它处理器核反馈的应答信号确定第二处理器核,其中,该第二处理器核反馈的应答信号指示该第二处理器核具备迁入线程的能力。
可选地,作为另一个实施例,在用于根据多个处理器核620中每一个处理器核的负载量,确定第一处理器核和第二处理器核的过程中,路由器610具体用于:根据该Cluster的多个处理器核620中每一个处理器核的负载值确定第二处理器核,该第二处理器核的负载值小于第三预定阈值;向该多个处理器核620中第二处理器核以外的其它处理器核发送线程迁入请求,该线程迁入请求携带该第二处理器核的负载值;接收该多个处理器核620中第二处理器核以外的其它处理器核根据自身的负载值与该第二处理器核的负载值反馈的应答信号,该应答信号用于指示收到该线程迁入请求的处理器核是否需要迁出线程;根据该多个处理器核620中第二核以外的其它处理器核反馈的应答信号确定第一处理器核,其中,该第一处理器核反馈的应答信号指示该第一处理器核需要迁出线程。
可选地,作为一个实施例,不同类型的待执行线程,在处理器核的负载量中具有相同的加权系数。例如,处理器核的负载量由处理器核的本地线程和迁入线程决定,本地线程为3,迁入线程为5,则其负载量为8。
可选地,作为另一个实施例,不同类型的待执行线程,在处理器核的负载量中具有不同的加权系数。例如,处理器核的负载量由处理器核的本地线程和迁入线程决定,本地线程的加权系数为1,个数为3,迁入线程的加权系数为0.8,个数为5,则其负载量为7。
在用于获取多个处理器核620中每一个处理器核的负载量的过程中,路由器610可根据处理器核620中本地Load/Store队列中等待的访存指令数量,得到处理器核620中本地线程的负载量;路由器610可根据处理器核620中线程栈信息的数量,得到处理器核620中迁入线程的负载量路由器610可根据处理器核620中本地Load/Store队列中排队等待的中断次数,得到中断线程的负载量,等等。
本发明的一个实施例,如图7所示,处理器核620中可包括线程栈信息收集器621。其中,线程栈信息收集器621用于收集线程栈信息收集器621所在的处理器620的线程栈信息,并发送给路由器610。
本发明的另一个实施例,如图8所示,丛集600还可包括多个线程栈信息收集器621,线程栈信息收集器621与处理器核620一一对应,每个线程栈信息收集器621都与对应的处理器核620相连,并连接到路由器610中。其中,线程栈信息收集器621用于收集线程栈信息收集器621所对应的处理器620的线程栈信息,并发送给路由器610。
本发明的另一个实施例,如图9所示,丛集600还可包括一个线程栈信息收集器621。其中,线程栈信息收集器621用于丛集600内所有处理器620的线程栈信息,并发送给路由器610。
可选地,作为一个实施例,如图10所示,处理器核620中可包括线程迁移模块622,用于实现处理器核620的线程迁入或迁出。路由器610,通过线程迁移模块622,可实现第一处理器核和第二处理器核之间的线程迁移。
可选地,作为另一个实施例,如图11所示,处理器核620中可包括多个线程迁移模块622,线程迁移模块622与处理器核620一一对应,每个线程迁移模块622都与对应的处理器核620相连,并连接到路由器610中。线程迁移模块622用于实现对应的处理器核620的线程迁入或迁出。路由器610,通过线程迁移模块622,可实现第一处理器核和第二处理器核之间的线程迁移。
可选地,作为另一个实施例,如图12所示,处理器核620中可包括线程迁移模块622,用于实现丛集内多个处理器核620之间的线程迁入或迁出。路由器610,通过线程迁移模块622,可实现第一处理器核和第二处理器核之间的线程迁移。
应理解,本发明实施例中,丛集600可同时包括线程栈信息收集器621和线程迁移模块622。其中,线程栈信息收集器621与处理器核620的关系可如图7、图8或图9的实施例所示,线程迁移模块622与处理器核620的关系可如图10、图11或图12的实施例所示。
另外,路由器610还可执行图2的方法,并实现硬件线程负载均衡装置在图2所示的实施例或路由器在本发明具体实施例1-3中所具有的功能,本发明实施例在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (14)
1.一种硬件线程负载均衡的方法,其特征在于,应用于众核处理器内的丛集Cluster,所述方法包括:
获取所述Cluster的多个处理器核中每一个处理器核的负载量,所述处理器核的负载量由所述处理器核的至少一种待执行线程确定;
根据所述Cluster的多个处理器核中每一个处理器核的负载量确定第一处理器核和第二处理器核,其中,所述第一处理器核为待迁出线程的处理器核,所述第二处理器核为待迁入线程的处理器核;
将所述第一处理器核中的一个或多个待执行线程迁入到所述第二处理器核中。
2.如权利要求1所述的方法,其特征在于,所述根据所述Cluster的多个处理器核中每一个处理器核的负载量确定第一处理器核和第二处理器核包括:
根据所述Cluster的多个处理器核中每一个处理器核的负载量,确定所述多个处理器核之间的负载差值,并且当所述多个处理器核中两个处理器核的负载差值大于第一预定阈值时,确定所述两个处理器核中负载量高的处理器核为所述第一处理器核,所述两个处理器核中负载量低的处理器核为所述第二处理器核。
3.如权利要求1所述的方法,其特征在于,所述根据所述Cluster的多个处理器核中每一个处理器核的负载量确定第一处理器核和第二处理器核包括:
根据所述Cluster的多个处理器核中每一个处理器核的负载量确定第一处理器核,所述第一处理器核的负载量大于第二预定阈值;
向所述多个处理器核中第一处理器核以外的其它处理器核发送线程迁出请求,所述线程迁出请求携带所述第一处理器核的负载量;
接收所述多个处理器核中第一处理器核以外的其它处理器核根据自身的负载量与所述第一处理器核的负载量反馈的应答信号,所述应答信号用于指示接收到所述线程迁出请求的处理器核是否具备迁入线程的能力;
根据所述多个处理器核中第一处理器核以外的其它处理器核反馈的应答信号确定第二处理器核,其中,所述第二处理器核反馈的应答信号指示所述第二处理器核具备迁入线程的能力。
4.如权利要求1所述的方法,其特征在于,所述根据所述Cluster的多个处理器核中每一个处理器核的负载量确定第一处理器核和第二处理器核包括:
根据所述Cluster的多个处理器核中每一个处理器核的负载量确定第二处理器核,所述第二处理器核的负载量小于第二预定阈值;
向所述多个处理器核中第二处理器核以外的其它处理器核发送线程迁入请求,所述线程迁入请求携带所述第二处理器核的负载量;
接收所述多个处理器核中第二处理器核以外的其它处理器核根据自身的负载量与所述第二处理器核的负载量反馈的应答信号,所述应答信号用于指示收到所述线程迁入请求的处理器核是否需要迁出线程;
根据所述多个处理器核中第二核以外的其它处理器核反馈的应答信号确定第一处理器核,其中,所述第一处理器核反馈的应答信号指示所述第一处理器核需要迁出线程。
5.如权利要求1至4任一项所述的方法,其特征在于,所述处理器核的至少一种待执行线程中,不同类型的待执行线程在所述处理器核的负载量中具有不同的加权系数。
6.如权利要求1至5任一项所述的方法,其特征在于,所述处理器核的至少一种待执行线程包括以下至少一种线程:所述处理器核的迁入线程、所述处理器核的本地线程。
7.一种硬件线程负载均衡装置,其特征在于,位于众核处理器内的丛集Cluster,所述装置包括:
获取单元,用于获取所述装置所在的Cluster中的多个处理器核中每一个处理器核的负载量,所述处理器核的负载量由所述处理器核的至少一种待执行线程确定;
确定单元,用于根据所述Cluster的多个处理器核中每一个处理器核的负载量确定第一处理器核和第二处理器核,其中,所述第一处理器核为待迁出线程的处理器核,所述第二处理器核为待迁入线程的处理器核;
线程迁移单元,用于将所述第一处理器核中的一个或多个待执行线程迁入到所述第二处理器核中。
8.如权利要求7所述的装置,其特征在于,所述确定单元具体用于:
根据所述Cluster的多个处理器核中每一个处理器核的负载量,确定所述多个处理器核之间的负载差值,并且当所述多个处理器核中两个处理器核的负载差值大于第一预定阈值时,确定所述两个处理器核中负载量高的处理器核为所述第一处理器核,所述两个处理器核中负载量低的处理器核为所述第二处理器核。
9.如权利要求7所述的装置,其特征在于,所述装置还包括接收单元和发送单元,
所述确定单元具体用于根据所述Cluster的多个处理器核中每一个处理器核的负载量确定第一处理器核,所述第一处理器核的负载量大于第二预定阈值;
所述发送单元用于向所述多个处理器核中第一处理器核以外的其它处理器核发送线程迁出请求,所述线程迁出请求携带所述第一处理器核的负载量;
所述接收单元用于接收所述多个处理器核中第一处理器核以外的其它处理器核根据自身的负载量与所述第一处理器核的负载量反馈的应答信号,所述应答信号用于指示接收到所述线程迁出请求的处理器核是否具备迁入线程的能力;
所述确定单元具体还用于根据所述多个处理器核中第一处理器核以外的其它处理器核反馈的应答信号确定第二处理器核,其中,所述第二处理器核反馈的应答信号指示所述第二处理器核具备迁入线程的能力。
10.如权利要求7所述的装置,其特征在于,所述装置还包括接收单元和发送单元,
所述确定单元具体用于根据所述Cluster的多个处理器核中每一个处理器核的负载量确定第二处理器核,所述第二处理器核的负载量小于第三预定阈值;
所述发送单元用于向所述多个处理器核中第二处理器核以外的其它处理器核发送线程迁入请求,所述线程迁入请求携带所述第二处理器核的负载量;
所述接收单元用于接收所述多个处理器核中第二处理器核以外的其它处理器核根据自身的负载量与所述第二处理器核的负载量反馈的应答信号,所述应答信号用于指示收到所述线程迁入请求的处理器核是否需要迁出线程;
所述确定单元具体还用于根据所述多个处理器核中第二核以外的其它处理器核反馈的应答信号确定第一处理器核,其中,所述第一处理器核反馈的应答信号指示所述第一处理器核需要迁出线程。
11.如权利要求7至10任一项所述的装置,其特征在于,所述处理器核的至少一种待执行线程中,不同类型的待执行线程在所述处理器核的负载量中具有不同的加权系数。
12.如权利要求7至11任一项所述的装置,其特征在于,所述处理器核的至少一种待执行线程包括以下至少一种线程:所述处理器核的迁入线程、所述处理器核的本地线程。
13.一种丛集,其特征在于,所述丛集所在的众核处理器包括多个所述丛集,所述丛集包括路由器和多个处理器核,所述多个处理器核连接到所述路由器,其中,所述路由器用于:
获取多个处理器核中每一个处理器核的负载量,其中,所述处理器核的负载值由所述处理器核的至少一种待执行线程确定;
根据所述多个处理器核中每一个处理器核的负载量,确定第一处理器核和第二处理器核,其中,所述第一处理器核为待迁出线程的处理器核,所述第二处理器核为待迁入线程的处理器核;
将所述第一处理器核中的一个或多个待执行线程迁入到所述第二处理器核中。
14.一种众核处理器,其特征在于,包括多个丛集Cluster,所述Cluster包括如权利要求7至12任一项所述的硬件线程负载均衡装置,或者所述Cluster为权利要求13所述的丛集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410521368.2A CN105528330B (zh) | 2014-09-30 | 2014-09-30 | 负载均衡的方法、装置、丛集和众核处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410521368.2A CN105528330B (zh) | 2014-09-30 | 2014-09-30 | 负载均衡的方法、装置、丛集和众核处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105528330A true CN105528330A (zh) | 2016-04-27 |
CN105528330B CN105528330B (zh) | 2019-05-28 |
Family
ID=55770567
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410521368.2A Expired - Fee Related CN105528330B (zh) | 2014-09-30 | 2014-09-30 | 负载均衡的方法、装置、丛集和众核处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105528330B (zh) |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106227602A (zh) * | 2016-07-26 | 2016-12-14 | 张升泽 | 负载在多核芯片之间的分配方法及系统 |
WO2018018450A1 (zh) * | 2016-07-27 | 2018-02-01 | 李媛媛 | 电流限制在多核芯片中的应用方法及系统 |
WO2018018449A1 (zh) * | 2016-07-27 | 2018-02-01 | 李媛媛 | 基于多核芯片的电压降低方法及系统 |
WO2018018452A1 (zh) * | 2016-07-27 | 2018-02-01 | 李媛媛 | 负载均衡在多核芯片中的应用方法及系统 |
CN107656813A (zh) * | 2017-09-29 | 2018-02-02 | 上海联影医疗科技有限公司 | 一种负载调度的方法、装置及终端 |
CN108156207A (zh) * | 2016-12-02 | 2018-06-12 | 航天星图科技(北京)有限公司 | 一种多节点系统的数据处理方法 |
CN108549574A (zh) * | 2018-03-12 | 2018-09-18 | 深圳市万普拉斯科技有限公司 | 线程调度管理方法、装置、计算机设备和存储介质 |
CN108897622A (zh) * | 2018-06-29 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种任务运行的调度方法以及相关装置 |
CN109508237A (zh) * | 2018-12-18 | 2019-03-22 | 北京神州绿盟信息安全科技股份有限公司 | 一种长期演进lte协议栈数据交互的处理方法及装置 |
CN109634745A (zh) * | 2018-12-03 | 2019-04-16 | 郑州云海信息技术有限公司 | 一种基于时间轴的动态调节cpu核负载的方法及系统 |
CN109947569A (zh) * | 2019-03-15 | 2019-06-28 | Oppo广东移动通信有限公司 | 绑定核心的方法、装置、终端及存储介质 |
CN110321266A (zh) * | 2019-06-05 | 2019-10-11 | 上海易点时空网络有限公司 | 用于单台服务器的cpu多核使用率优化处理方法及装置 |
CN110377418A (zh) * | 2019-06-05 | 2019-10-25 | 上海易点时空网络有限公司 | 用于单台服务器的cpu多核使用率优化处理方法及装置 |
CN111831414A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 线程迁移方法、装置、存储介质及电子设备 |
CN111831409A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 线程调度方法、装置、存储介质及电子设备 |
CN112559176A (zh) * | 2020-12-11 | 2021-03-26 | 广州橙行智动汽车科技有限公司 | 一种指令处理方法和装置 |
CN112783626A (zh) * | 2021-01-21 | 2021-05-11 | 珠海亿智电子科技有限公司 | 中断处理方法、装置、电子设备及存储介质 |
CN112799848A (zh) * | 2021-02-10 | 2021-05-14 | 联想(北京)有限公司 | 一种控制方法及装置 |
CN113448516A (zh) * | 2021-06-04 | 2021-09-28 | 山东英信计算机技术有限公司 | 一种基于raid卡的数据处理方法、系统、介质及设备 |
CN113867918A (zh) * | 2021-09-30 | 2021-12-31 | 北京紫光展锐通信技术有限公司 | 中断均衡方法、装置、电子设备和计算机可读存储介质 |
CN114281531A (zh) * | 2021-12-10 | 2022-04-05 | 苏州浪潮智能科技有限公司 | 一种分配cpu核心的方法、系统、存储介质及设备 |
CN114546926A (zh) * | 2020-11-24 | 2022-05-27 | 北京灵汐科技有限公司 | 核心簇同步、控制方法、数据处理方法、核心、设备、介质 |
WO2022111466A1 (zh) * | 2020-11-24 | 2022-06-02 | 北京灵汐科技有限公司 | 任务调度方法、控制方法、电子设备、计算机可读介质 |
WO2022179473A1 (zh) * | 2021-02-23 | 2022-09-01 | 华为技术有限公司 | 一种核间迁移的频率调整方法 |
WO2022252986A1 (zh) * | 2021-06-02 | 2022-12-08 | 华为技术有限公司 | 中断调度方法、电子设备及存储介质 |
WO2022257799A1 (zh) * | 2021-06-10 | 2022-12-15 | 华为技术有限公司 | 一种多线程转发的负载均衡方法及相关装置 |
WO2023019904A1 (zh) * | 2021-08-19 | 2023-02-23 | 苏州浪潮智能科技有限公司 | 一种集群中进程协作的方法、系统、设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101324851A (zh) * | 2007-06-12 | 2008-12-17 | 华为技术有限公司 | 线程调度方法及其装置 |
US20090064164A1 (en) * | 2007-08-27 | 2009-03-05 | Pradip Bose | Method of virtualization and os-level thermal management and multithreaded processor with virtualization and os-level thermal management |
CN101458634A (zh) * | 2008-01-22 | 2009-06-17 | 中兴通讯股份有限公司 | 负载均衡调度方法和装置 |
CN102193779A (zh) * | 2011-05-16 | 2011-09-21 | 武汉科技大学 | 一种面向MPSoC的多线程调度方法 |
CN102473112A (zh) * | 2009-09-11 | 2012-05-23 | 英派尔科技开发有限公司 | 关于线程迁移的高速缓存预填充 |
CN104050137A (zh) * | 2013-03-13 | 2014-09-17 | 华为技术有限公司 | 一种异构操作系统中内核运行的方法及装置 |
-
2014
- 2014-09-30 CN CN201410521368.2A patent/CN105528330B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101324851A (zh) * | 2007-06-12 | 2008-12-17 | 华为技术有限公司 | 线程调度方法及其装置 |
US20090064164A1 (en) * | 2007-08-27 | 2009-03-05 | Pradip Bose | Method of virtualization and os-level thermal management and multithreaded processor with virtualization and os-level thermal management |
CN101458634A (zh) * | 2008-01-22 | 2009-06-17 | 中兴通讯股份有限公司 | 负载均衡调度方法和装置 |
CN102473112A (zh) * | 2009-09-11 | 2012-05-23 | 英派尔科技开发有限公司 | 关于线程迁移的高速缓存预填充 |
CN102193779A (zh) * | 2011-05-16 | 2011-09-21 | 武汉科技大学 | 一种面向MPSoC的多线程调度方法 |
CN104050137A (zh) * | 2013-03-13 | 2014-09-17 | 华为技术有限公司 | 一种异构操作系统中内核运行的方法及装置 |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106227602A (zh) * | 2016-07-26 | 2016-12-14 | 张升泽 | 负载在多核芯片之间的分配方法及系统 |
WO2018018450A1 (zh) * | 2016-07-27 | 2018-02-01 | 李媛媛 | 电流限制在多核芯片中的应用方法及系统 |
WO2018018449A1 (zh) * | 2016-07-27 | 2018-02-01 | 李媛媛 | 基于多核芯片的电压降低方法及系统 |
WO2018018452A1 (zh) * | 2016-07-27 | 2018-02-01 | 李媛媛 | 负载均衡在多核芯片中的应用方法及系统 |
CN108156207A (zh) * | 2016-12-02 | 2018-06-12 | 航天星图科技(北京)有限公司 | 一种多节点系统的数据处理方法 |
CN107656813A (zh) * | 2017-09-29 | 2018-02-02 | 上海联影医疗科技有限公司 | 一种负载调度的方法、装置及终端 |
CN108549574A (zh) * | 2018-03-12 | 2018-09-18 | 深圳市万普拉斯科技有限公司 | 线程调度管理方法、装置、计算机设备和存储介质 |
CN108549574B (zh) * | 2018-03-12 | 2022-03-15 | 深圳市万普拉斯科技有限公司 | 线程调度管理方法、装置、计算机设备和存储介质 |
CN108897622A (zh) * | 2018-06-29 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种任务运行的调度方法以及相关装置 |
CN109634745B (zh) * | 2018-12-03 | 2023-01-10 | 郑州云海信息技术有限公司 | 一种基于时间轴的动态调节cpu核负载的方法及系统 |
CN109634745A (zh) * | 2018-12-03 | 2019-04-16 | 郑州云海信息技术有限公司 | 一种基于时间轴的动态调节cpu核负载的方法及系统 |
CN109508237A (zh) * | 2018-12-18 | 2019-03-22 | 北京神州绿盟信息安全科技股份有限公司 | 一种长期演进lte协议栈数据交互的处理方法及装置 |
CN109947569A (zh) * | 2019-03-15 | 2019-06-28 | Oppo广东移动通信有限公司 | 绑定核心的方法、装置、终端及存储介质 |
CN109947569B (zh) * | 2019-03-15 | 2021-04-06 | Oppo广东移动通信有限公司 | 绑定核心的方法、装置、终端及存储介质 |
CN110321266A (zh) * | 2019-06-05 | 2019-10-11 | 上海易点时空网络有限公司 | 用于单台服务器的cpu多核使用率优化处理方法及装置 |
CN110377418A (zh) * | 2019-06-05 | 2019-10-25 | 上海易点时空网络有限公司 | 用于单台服务器的cpu多核使用率优化处理方法及装置 |
CN110321266B (zh) * | 2019-06-05 | 2021-11-09 | 上海易点时空网络有限公司 | 用于单台服务器的cpu多核使用率优化处理方法及装置 |
CN110377418B (zh) * | 2019-06-05 | 2021-09-03 | 上海易点时空网络有限公司 | 用于单台服务器的cpu多核使用率优化处理方法及装置 |
CN111831414A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 线程迁移方法、装置、存储介质及电子设备 |
CN111831409A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 线程调度方法、装置、存储介质及电子设备 |
CN111831409B (zh) * | 2020-07-01 | 2022-07-15 | Oppo广东移动通信有限公司 | 线程调度方法、装置、存储介质及电子设备 |
WO2022111457A1 (zh) * | 2020-11-24 | 2022-06-02 | 北京灵汐科技有限公司 | 核心簇同步的方法及控制方法、数据处理方法、电子设备 |
WO2022111466A1 (zh) * | 2020-11-24 | 2022-06-02 | 北京灵汐科技有限公司 | 任务调度方法、控制方法、电子设备、计算机可读介质 |
CN114546926B (zh) * | 2020-11-24 | 2023-08-08 | 北京灵汐科技有限公司 | 核心簇同步、控制方法、数据处理方法、核心、设备、介质 |
CN114546926A (zh) * | 2020-11-24 | 2022-05-27 | 北京灵汐科技有限公司 | 核心簇同步、控制方法、数据处理方法、核心、设备、介质 |
CN112559176A (zh) * | 2020-12-11 | 2021-03-26 | 广州橙行智动汽车科技有限公司 | 一种指令处理方法和装置 |
CN112783626A (zh) * | 2021-01-21 | 2021-05-11 | 珠海亿智电子科技有限公司 | 中断处理方法、装置、电子设备及存储介质 |
CN112783626B (zh) * | 2021-01-21 | 2023-12-01 | 珠海亿智电子科技有限公司 | 中断处理方法、装置、电子设备及存储介质 |
CN112799848A (zh) * | 2021-02-10 | 2021-05-14 | 联想(北京)有限公司 | 一种控制方法及装置 |
WO2022179473A1 (zh) * | 2021-02-23 | 2022-09-01 | 华为技术有限公司 | 一种核间迁移的频率调整方法 |
WO2022252986A1 (zh) * | 2021-06-02 | 2022-12-08 | 华为技术有限公司 | 中断调度方法、电子设备及存储介质 |
CN113448516A (zh) * | 2021-06-04 | 2021-09-28 | 山东英信计算机技术有限公司 | 一种基于raid卡的数据处理方法、系统、介质及设备 |
WO2022257799A1 (zh) * | 2021-06-10 | 2022-12-15 | 华为技术有限公司 | 一种多线程转发的负载均衡方法及相关装置 |
WO2023019904A1 (zh) * | 2021-08-19 | 2023-02-23 | 苏州浪潮智能科技有限公司 | 一种集群中进程协作的方法、系统、设备和存储介质 |
CN113867918A (zh) * | 2021-09-30 | 2021-12-31 | 北京紫光展锐通信技术有限公司 | 中断均衡方法、装置、电子设备和计算机可读存储介质 |
CN114281531A (zh) * | 2021-12-10 | 2022-04-05 | 苏州浪潮智能科技有限公司 | 一种分配cpu核心的方法、系统、存储介质及设备 |
CN114281531B (zh) * | 2021-12-10 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 一种分配cpu核心的方法、系统、存储介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105528330B (zh) | 2019-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105528330B (zh) | 负载均衡的方法、装置、丛集和众核处理器 | |
US10922143B2 (en) | Systems, methods and devices for determining work placement on processor cores | |
CN112204524B (zh) | 用于硬件加速的硬件资源的嵌入式调度 | |
EP3129880B1 (en) | Method and device for augmenting and releasing capacity of computing resources in real-time stream computing system | |
US9218203B2 (en) | Packet scheduling in a multiprocessor system using inter-core switchover policy | |
US10355966B2 (en) | Managing variations among nodes in parallel system frameworks | |
US11876731B2 (en) | System and methods for sharing memory subsystem resources among datacenter applications | |
US20150220370A1 (en) | Job scheduling apparatus and method therefor | |
US20140372810A1 (en) | Apparatus and method for monitoring performance of cores based on multi-core processor | |
US8656405B2 (en) | Pulling heavy tasks and pushing light tasks across multiple processor units of differing capacity | |
US20150121387A1 (en) | Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core system and related non-transitory computer readable medium | |
CN106534359B (zh) | 一种基于存储熵的存储负载均衡方法 | |
CN107624181B (zh) | 包括虚拟处理器的闲置和调度的虚拟机管理方法和装备 | |
KR101177059B1 (ko) | 병렬 제어 모듈을 동적으로 할당하는 방법 | |
US20140259022A1 (en) | Apparatus and method for managing heterogeneous multi-core processor system | |
CN113168344A (zh) | 通过提高集群多样性实现的分布式资源管理 | |
WO2017016590A1 (en) | Scheduling heterogenous processors | |
CN104657198A (zh) | Numa架构系统在虚拟机环境中的访存优化方法及系统 | |
US20090165004A1 (en) | Resource-aware application scheduling | |
CN107329813B (zh) | 一种面向众核处理器的全局感知数据主动预取方法及系统 | |
US9483317B1 (en) | Using multiple central processing unit cores for packet forwarding in virtualized networks | |
JP2016099972A (ja) | プロセスマイグレーション方法及びクラスタシステム | |
TW201403479A (zh) | 伺服器系統的排程方法 | |
KR101191530B1 (ko) | 복수의 이종 코어를 포함하는 멀티코어 프로세서 시스템 및 그 제어 방법 | |
CN116560840A (zh) | Cpu资源控制方法、装置以及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190528 Termination date: 20200930 |
|
CF01 | Termination of patent right due to non-payment of annual fee |