CN104995603A - 至少部分基于共享相同数据及/或存取相同存储地址的任务分布的任务调度方法以及多核处理器系统中用于分配任务的相关非暂时性计算机可读介质 - Google Patents
至少部分基于共享相同数据及/或存取相同存储地址的任务分布的任务调度方法以及多核处理器系统中用于分配任务的相关非暂时性计算机可读介质 Download PDFInfo
- Publication number
- CN104995603A CN104995603A CN201480003215.7A CN201480003215A CN104995603A CN 104995603 A CN104995603 A CN 104995603A CN 201480003215 A CN201480003215 A CN 201480003215A CN 104995603 A CN104995603 A CN 104995603A
- Authority
- CN
- China
- Prior art keywords
- task
- cluster
- processor core
- core
- processor
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5033—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明揭露一种多核处理器系统的任务调度方法,至少包含下列步骤:当第一任务属于当前在该多核处理器系统中的线程组时,其中,该线程组具有共享相同特定数据及/或存取相同特定存储地址的多个任务,并且该多个任务包含该第一任务与至少一个第二任务,至少部分基于该至少一个第二任务的分布决定该多核处理器系统中的目标处理器核心,其中该至少一个第二任务位于该多核处理器系统中至少一个处理器核心的至少一个运行队列中;以及将该第一任务分配至该目标处理器核心的运行队列。
Description
交叉引用
本发明要求如下优先权:编号为61/904,072,申请日为2013年11月14日的美国临时专利申请。上述美国临时专利申请在此一并作为参考。
技术领域
本发明揭露的实施例涉及一种任务调度方案。特别地,本发明揭露的实施例涉及一种多核处理器系统(multi-core processor system)中用于调度任务(例如,普通任务)的任务调度方法以及相关非暂时性计算机可读介质(non-transitory computer readable medium),其中上述任务调度方法至少部分基于共享相同特定数据及/或存取相同特定存储地址的任务分布。
背景技术
现今,由于对运算能力的越来越多需求,多核系统变得普及。因此,多核系统的操作系统(operating system,OS)需要决定不同处理器核心调度的任务以维持较好的负载平衡及/或较高的系统资源利用。上述处理器核心可按照不同集群(cluster)进行分类,并且上述集群可分别随着在高速缓存层中同级的分立高速缓存(cache)进行分配。例如,可配置不同集群以分别使用不同第二层(level-2,L2)的高速缓存。通常,在多核系统中实施高速缓存一致性互联(cache coherent interconnect)以管理致力于不同集群的高速缓存之间的高速缓存一致性。然而,当L2高速缓存读未命中或L2高速缓存书写发生时,上述高速缓存一致性互联具有一致性开销(coherency overhead)。传统任务调度设计简单地找出最忙处理器核心,并且将最忙处理器核心的运行队列中的任务移动至最空闲处理器核心的运行队列。因此,传统调度设计在不考虑高速缓存一致性开销的情况下控制将任务从一个集群到另一个集群的转移。
总之,需要创新的任务调度设计,其当将任务分配至集群中运行队列时考虑高速缓存一致性开销,这样可缓解或避免高速缓存一致性开销从而取得改善的任务调度性能。
发明内容
依据本发明实施例,提出至少部分基于共享相同特定数据及/或存取相同特定存储地址的任务分布在多核处理器系统中分配任务的任务调度方法与非暂时性计算机可读介质以解决上述问题。
根据本发明第一方面,揭露一种多核处理器系统的示例任务调度方法。该示例任务调度方法包含:当第一任务属于当前在该多核处理器系统中的线程组时,其中,该线程组具有共享相同特定数据的多个任务,并且该多个任务包含该第一任务与至少一个第二任务,至少部分基于该至少一个第二任务的分布决定该多核处理器系统中的目标处理器核心,其中该至少一个第二任务位于该多核处理器系统中至少一个处理器核心的至少一个运行队列中;以及将该第一任务分配至该目标处理器核心的运行队列。
根据本发明第二方面,揭露一种多核处理器系统的示例任务调度方法。该示例任务调度方法包含:当第一任务属于当前在该多核处理器系统中的线程组时,其中,该线程组具有存取相同特定存储地址的多个任务,并且该多个任务包含该第一任务与至少一个第二任务,至少部分基于该至少一个第二任务的分布决定该多核处理器系统中的目 标处理器核心,其中该至少一个第二任务位于该多核处理器系统中至少一个处理器核心的至少一个运行队列中;以及将该第一任务分配至该目标处理器核心的运行队列。
此外,本发明也提供一种存储任务调度程序代码的非短暂计算机可读介质,其中当多核处理器系统执行该任务调度程序代码时,该任务调度程序代码引发该多核处理器系统执行上述任务调度方法。
在读了用各种示图描述的较佳实施例的详细描述后,本领域技术人员可理解本发明的宗旨。
附图说明
图1是根据本发明实施例描述的多核处理器系统的示意图;
图2是根据本发明实施例描述的非暂时性计算机可读介质的示意图;
图3是描述第一任务调度操作的示意图,其中上述操作将一个单线程进程的任务分配入处理器核心的运行队列;
图4是描述第二任务调度操作的示意图,其中上述操作将属于线程组的一个任务分配入处理器核心的运行队列;
图5是描述第三任务调度操作的示意图,其中上述操作将属于线程组的一个任务分配入处理器核心的运行队列;
图6是描述第四任务调度操作的示意图,其中上述操作将属于线程组的一个任务分配入处理器核心的运行队列;
图7是描述第五任务调度操作的示意图,其中上述操作将属于线程组的一个任务分配入处理器核心的运行队列;
图8是描述第六任务调度操作的示意图,其中上述操作将属于线程组的一个任务从一集群中处理器核心的运行队列转移至另一集群中处理器核心的运行队列;
图9是描述第七任务调度操作的示意图,其中上述操作将一个单线程进程的任务从一集群中处理器核心的运行队列转移至另一集群中 处理器核心的运行队列;
图10是描述第八任务调度操作的示意图,其中上述操作将一个单线程进程的任务从一集群中处理器核心的运行队列转移至另一集群中处理器核心的运行队列;
图11是描述第九任务调度操作的示意图,其中上述操作将一个单线程进程的任务从一集群中处理器核心的运行队列转移至相同集群中处理器的运行队列。
具体实施方式
在说明书及权利要求书当中使用了某些词汇来指称特定的元件。所属技术领域的技术人员应可理解,硬件制造商可能会用不同的名词来称呼同一个元件。本说明书及权利要求书并不以名称的差异作为区分元件的方式,而是以元件在功能上的差异作为区分的准则。在通篇说明书及权利要求项中所提及的“包含”为一开放式的用语,故应解释成“包含但不限定于”。此外,“耦接”一词在此包含任何直接及间接的电气连接手段。因此,若文中描述一个装置耦接于另一装置,则代表该一个装置可直接电气连接于该另一装置,或通过其它装置或连接手段间接地电气连接至该另一装置。
图1是根据本发明实施例描述的多核处理器系统的示意图。多核处理器系统10可在可携式装置中进行实施,例如移动电话、平板电脑、可穿戴式设备等。然而,上述说明并非对本发明的限制。即,任何使用所述任务调度方法的电子装置皆落入本发明的保护范围。在本实施例中,多核处理器系统10可具有多个集群112_1-112_N,其中N为正整数并且可基于实际设计考虑进行调整。即,本发明不限制多核处理器系统10中配置的集群数量。
对于集群112_1-112_N,每个集群可为一组处理器核心。例如,集群112_1可包含一个或多个处理器核心117,其中每个处理器核心117具有运算能力相同的相同处理器结构;以及集群112_N可包含一个或 多个处理器核心118,其中每个处理器核心118具有运算能力相同的相同处理器结构。在一示例中,处理器核心117可具有运算能力不同的不同处理器结构。在另一示例中,处理器核心118可具有运算能力不同的不同处理器结构。在一示例设计中,多核处理器系统10可使用所述任务调度方法以及对称多处理(symmetric multi-processing,SMP)结构。因此,多核处理器系统10中的每个处理器核心可具有运算能力相同的相同处理器结构。在另一示例设计中,多核处理器系统10可使用所述任务调度方法以及异构多核(heterogeneous multi-core)结构。例如,集群112_1的每个处理器核心117可具有支持第一运算能力的第一处理器结构,并且集群112_N的每个处理器核心118可具有支持第二运算能力的第二处理器结构,其中第二处理器结构与第一处理器结构不同,并且第二运算能力与第一运算能力不同。
值得注意的是,可基于实际设计考虑调整集群112_1-112_N的处理器核心数量。例如,集群112_1中的处理器核心117的数量可与集群112_N中的处理器核心118的数量相同或不同。
可配置集群112_1-112_N在同级的高速缓存层各自使用不同的高速缓存。在本示例中,可将一个专用L2高速缓存分配至每个集群。如图1所示,多核处理器系统10可具有多个L2高速缓存114_1-114_N。因此,集群112_1可使用一个L2高速缓存114_1用于缓存数据,以及集群112_N可使用另一个L2高速缓存114_N用于缓存数据。另外,可使用高速缓存一致性互联116管理集群112_1-112_N各自存取的L2高速缓存114_1-114_N之间的一致性。如图1所示,存在通过高速缓存一致性互联116耦接L2高速缓存114_1-114_N的主存储器119。当L2高速缓存的高速缓存未命中发生时,从主存储器119中重新得到请求数据然后存储于L2高速缓存中。当L2高速缓存的高速缓存命中发生时,这意味着在L2高速缓存中请求数据是可用的,从而不需要存取主存储器119。
在主存储器119中的相同数据可存储在相同存储地址中。此外, 可基于处理器核心产生的读/写请求中的存储地址,存取L2高速缓存114_1-114_N的每一个中的高速缓存条目。所述任务调度方法可增加用于集群的L2高速缓存的高速缓存命中率,其中上述任务调度方法分配共享主存储器119中的相同特定数据及/或存取主存储器119中的相同特定存储地址的多个任务至相同集群。例如,当运行在集群的一个处理器核心中的一个任务首先发出存储地址处的请求数据的读/写请求时,L2高速缓存的高速缓存未命中可发生,并且从主存储器119中重新取得存储地址处的请求数据然后将其缓存入L2高速缓存中。接着,当运行在相同集群的一个处理器核心中的另一任务发出相同存储地址处的相同请求数据的读/写请求时,L2高速缓存的高速缓存命中可发生,并且L2高速缓存可直接输出缓存其中的请求数据以响应读/写请求,而不需要存取主存储器119。当将共享主存储器119中的相同特定数据及/或存取主存储器119中的相同特定存储地址的任务分配至相同集群时,可提高集群的L2高速缓存的高速缓存命中率。既然触发高速缓存一致性的高速缓存未命中(读/写未命中)可引起高速缓存一致性开销,所以,提高的高速缓存命中率可帮助减少高速缓存一致性开销。因此,在本发明中,例如,可定义线程组(thread group)为具有共享主存储器119中相同特定数据及/或存取主存储器119中相同特定存储地址的多个任务。一个任务可为单线程进程或多线程进程的一个线程。当将属于相同线程组的大多数或所有任务安排在相同集群用于执行时,由于改进的高速缓存局部性(locality),可缓解或避免高速缓存读/写未命中引起的高速缓存一致性开销。
基于上述观察,当控制一个任务从一个集群至另一集群转移时,所述任务调度方法可考虑高速缓存一致性开销。因此,所述任务调度方法可为基于线程组的任务调度方案,其当将线程组的任务分配至一个集群时,检查线程组的特征。
值得注意的是,术语“多核处理器系统”可意味着多核系统或多处理器系统,这取决于实际的设计。换句话说,任意多核系统与多处 理器系统可使用所述任务调度方法。例如,对于多核系统,所有处理器核心117可配置于一个处理器中。在另一示例中,对于多处理器系统,处理器核心117的每一个可配置于一个处理器中。因此,集群112_1-112_N的每一个可为一组处理器。例如,集群112_1可包含共享相同L2高速缓存114_1的一个或多个处理器,并且集群112_N可包含共享相同L2高速缓存114_N的一个或多个处理器。
所述任务调度方法可以软件方式实施。图2是根据本发明实施例描述的非暂时性计算机可读介质的示意图。非暂时性计算机可读介质12可为多核处理器系统10的一部分。例如,可使用主存储器119的至少一部分(即部分或全部)实施上述非暂时性计算机可读介质12。在另一示例中,可使用存储装置实施上述非暂时性计算机可读介质12,其中上述存储装置在主存储器119外并且可连接处理器核心117与118的每一个。
在本实施例中,任务调度器100耦接集群112_1-112_N,并且用于执行所述任务调度方法,其中所述任务调度方法至少部分基于共享相同特定数据及/或存取相同特定存储地址的任务分布进行多核处理器系统10中的任务(例如普通任务)调度。例如,在Linux中,使用所述任务调度方法的任务调度器100可称为增强型完全公平调度器(completely fair scheduler,CFS),其用于安排具有低于实时任务任务优先级的普通任务。然而,这只是为了描述的目的,并不是对本发明的限制。任务调度器100可为操作系统的一部分,例如基于Linux的OS或支持多处理器任务调度的其他OS内核。因此,任务调度器100可为运行在多核处理器系统10上的软件模块。如图2所示,非暂时性计算机可读介质12可存储程序代码14。当加载程序代码14并且由多核处理器系统10执行时,任务调度器100可执行所述任务调度方法,该任务调度方法将在下面详细介绍。
在本实施例中,任务调度器100可包含统计单元102与调度单元104。可配置上述统计单元102以更新一个或多个集群112_1-112_N的 线程组信息。因此,对于线程组,统计单元102可更新线程组信息,其中上述线程组信息指示一个或多个集群中线程组的任务数量。例如,线程组的领导线程持有线程组信息。上述领导线程并不一定要在处理器核心117与118的任意运行队列中。例如,可配置上述统计单元102以管理并且记录线程组的领导线程中一个或多个集群的线程组信息。然而,可在能够保存上述信息的任意单元中记录上述线程组信息,例如,一个独立的数据结构。每个任务可具有一个数据结构用于记录其领导线程信息。因此,当线程组的任务排入处理器核心的运行队列或者从处理器核心的运行队列移除时,统计单元102可相应地更新线程组的领导线程中的线程组信息。使用这种方法,可从已记录的线程组信息中获知不同集群中相同线程组的任务数量。然而,上述内容仅是为了描述的目的,并不是对本发明的限制。统计单元102可使用任何能够追踪集群112_1-112_N中相同线程组的任务分布的方法。
调度单元104可支持不同任务调度方案,包含所述的基于线程组的任务调度方案。例如,当达到使用所述基于线程组的任务调度方案以改善高速缓存局部性的标准时,调度单元104可设定或调整处理器核心的运行队列,其中上述处理器核心包含在多核处理器系统10中并且上述设定或调整依据统计单元102管理的线程组的任务分布信息进行;并且当未达到使用所述基于线程组的任务调度方案以改善高速缓存局部性的标准时,调度单元104可设定或调整处理器核心的运行队列,其中上述处理器核心包含在多核处理器系统10中并且上述设定或调整依据不同的任务调度方案进行。
可将调度单元104管理的运行队列发给多核处理器系统10的每个处理器核心。因此,当多核处理器系统10具有M个处理器核心时,调度单元104可管理分别用于M个处理器核心的M个运行队列105_1-105_M,其中M是正整数并且可基于实际设计需要进行调整。上述运行队列可为记录一列表任务的数据结构,其中上述任务可包含当前正在运行的任务(例如运行任务)以及等待运行的其他任务(例如待运 行任务)。在某些实施例中,处理器核心可根据任务的任务优先级执行对应运行队列中的任务。举例来说,但并不限定于此,上述任务可包含程序、应用程序子部件或者上述两者结合。
为了缓解或避免高速缓存一致性开销,可配置调度单元104以执行基于线程组的任务调度方案。例如,在第一任务属于当前在多核处理器系统10中的线程组的情况下,其中上述线程组具有共享相同特定数据及/或存取相同特定存储地址的多个任务,并且上述多个任务包含第一任务与至少一个第二任务,调度单元104可决定多核处理器系统10中的目标处理器核心并且将第一任务分配给目标处理器核心,其中上述决定是至少部分基于多核处理器系统10中至少一个处理器核心的至少一个运行队列中至少一个第二任务的分布进行的。依据所述基于线程组的任务调度方案,多核处理器系统10中多个集群的目标集群可包含目标处理器核心;并且在上述多个集群中,目标集群可具有属于线程组的最多的第二任务。在第一运行队列包含第一任务的情况下(例如,第一任务可为运行任务或待运行任务),可基于第一任务与至少一个第二任务的分布决定多核处理器系统10中的目标处理器核心。在第一运行队列未包含第一任务的情况下(例如,第一任务可为新任务或恢复任务),可基于至少一个第二任务的分布决定多核处理器系统10中的目标处理器核心。为了更好地理解本发明的技术特征,下面将讨论调度单元104执行的几个任务调度操作。
基于待分配的任务是否是单线程进程或属于线程组,可选择性地启动所述的基于线程组的任务调度方案。当待分配的任务是单线程进程时,调度单元104可使用另一任务调度方案以控制任务调度(例如,将上述任务加入一个运行队列或将上述任务从一个运行队列转移至另一运行队列)。当待分配的任务是当前多核处理器系统10中的线程组的一部分时,调度单元104可使用所述基于线程组的任务调度方法以在达到负载平衡需求的情况下控制任务调度(例如,将上述任务加入一个运行队列或将上述任务从一个运行队列转移至另一运行队列)。否 则,调度单元104可使用另一任务调度方案以控制属于线程组的任务的任务调度。
对于图3-图7所示的每个示例,可执行任务调度器100的调度单元104以找到多核处理器系统10中所选处理器核心的最空闲处理器核心。例如,为了负载平衡,调度单元104检查的所选处理器核心可为多核处理器系统10中包含的所有处理器核心。在一实施例中,处理器核心可执行调度单元104的程序代码以调用新任务或恢复任务。在另一实施例中,不管哪个处理器核心调用新任务或恢复任务,可依集中方式执行调度单元104的程序代码。
为了清楚简洁,图3-图7所示的下列示例假设多核处理器系统10仅具有两个集群112_1与112_N(N等于2),分别用Cluster_0与Cluster_1表示;Cluster_0表示的一个集群112_1仅具有CPU_0、CPU_1、CPU_2、CPU_3分别表示的四个处理器核心117;并且Cluster_1表示的另一个集群112_N仅具有CPU_4、CPU_5、CPU_6、CPU_7分别表示的四个处理器核心118。因此,调度单元104可将RQ0-RQ7表示的运行队列105_1-105_M(M等于8)分别分配至处理器核心CPU_0-CPU_7。另外,在这些示例中,调度单元104可将多核处理器系统10的所有处理器核心CPU_0-CPU_7看作所选处理器核心,其中所有处理器核心CPU_0-CPU_7包含调用新任务或恢复任务的处理器核心,以及将检查上述所选处理器核心以决定如何将新任务或恢复任务分配至一个所选处理器核心。
图3是描述第一任务调度操作的示意图,其中上述操作将一个单线程进程的任务分配入处理器核心(例如空闲处理器核心)的运行队列。在本示例中,在需要将任务P8加入运行队列RQ0-RQ7中的一个用于执行之前,运行队列RQ0可包含一个任务P0;运行队列RQ2可包含两个任务P1以及P2;运行队列RQ3可包含一个任务P3;运行队列RQ4可包含一个任务P4;运行队列RQ6可包含两个任务P5以及P6;以及运行队列RQ7可包含一个任务P7。某些运行队列RQ0-RQ7中的任务P0-P7 以及分配给运行队列RQ0-RQ7中一个的任务P8的每一个可为单线程进程。在本示例中,多核处理器系统10当前不具有线程组,其中所述线程组具有共享相同特定数据及/或存取相同特定存储地址的多个任务。
一种可能的情况是系统可产生新任务或可将任务加入等待队列以等待所请求系统资源,然后当所请求系统资源可用时恢复任务。在本示例中,任务P8可为新任务或恢复任务(例如当前正在唤醒的唤醒任务),其中上述新任务或恢复任务不包含在多核处理器系统10的运行队列RQ0-RQ7中。既然任务P8是单线程进程,可不启动所述基于线程组的任务调度方案。举例来说,调度单元104可启动另一任务调度方案。因此,调度单元104可在处理器核心CPU_0-CPU_7中找到最空闲的处理器核心(例如无运行任务及/或待运行任务的空闲处理器核心,或者如果不存在空闲处理器核心,则找到具有非零处理器核心负载的最轻负载处理器),并且将任务P8加入最空闲处理器核心的运行队列。在本实施例中,将空闲处理器核心定义为具有空运行队列的处理器核心(例如,无运行任务与待运行任务)。值得注意的是,空闲处理器核心的处理器核心负载可具有零值或非零值。这是因为可基于处理器核心的历史信息计算每个处理器核心的处理器核心负载。例如,关于处理器核心的处理器核心负载评估,可考虑处理器核心运行队列中的当前任务以及处理器核心运行队列中的先前任务。另外,在处理器核心的处理器核心负载评估期间,可基于任务优先级、任务运行时间与整个任务周期的比例等,为任务设定权重因子。
在处理器核心CPU_0-CPU_7具有至少一个无运行任务及/或待运行任务的空闲处理器核心情况下,调度单元104可选择至少一个空闲处理器核心中的一个作为最空闲处理器核心。在处理器核心CPU_0-CPU_7不具有空闲处理器核心但具有至少一个拥有非零处理器核心负载的最轻负载处理器核心的另一情况下,调度单元104可选择至少一个最轻负载处理器核心中的一个作为最空闲处理器核心。如图3所示,处理器核心CPU_1与CPU_5皆是空闲的。调度单元104可将任务P8 分配至运行队列RQ1与RQ5中的一个。在本示例中,如图3所示,调度单元104可将任务P8加入空闲处理器核心CPU_1控制的运行队列RQ1。
图4是描述第二任务调度操作的示意图,其中上述操作将属于线程组的一个任务分配入处理器核心(例如空闲处理器核心)的运行队列。在本示例中,在需要将任务P64加入运行队列RQ0-RQ7中的一个用于执行之前,运行队列RQ0可包含一个任务P0;运行队列RQ2可包含两个任务P1以及P61;运行队列RQ3可包含一个任务P2;运行队列RQ4可包含一个任务P3;运行队列RQ5可包含一个任务P4;运行队列RQ6可包含两个任务P62以及P63;以及运行队列RQ7可包含一个任务P5。某些运行队列RQ0-RQ7中的任务P0-P5的每一个可为单线程进程,以及某些运行队列RQ0-RQ7中的任务P61-P63以及分配至运行队列RQ0-RQ7中的一个的任务P64可属于相同线程组。在本示例中,多核处理器系统10当前具有一个线程组,其中该线程组具有共享相同特定数据及/或存取相同特定存储地址的多个任务P61-P64。
在本示例中,任务P64可为新任务或恢复任务(例如当前正在唤醒的唤醒任务),其中上述新任务或恢复任务不包含在多核处理器系统10的运行队列RQ0-RQ7中。值得注意的是,对于多核处理器系统性能,负载平衡可比高速缓存一致性开销降低更关键。因此,取得负载平衡的策略可超越改善高速缓存局部性的策略。如图4所示,与任务P64属于相同线程组的两个任务P62与P63可包含在集群Cluster_1的处理器核心CPU_6的运行队列RQ6中,并且与任务P64属于相同线程组的一个任务P61可包含在集群Cluster_0的处理器核心CPU_2的运行队列RQ2中。因此,在集群Cluster_0与Cluster_1中,集群Cluster_1具有与任务P64属于的相同线程组中的最大数量的任务。如果执行所述的基于线程组方案,调度单元104可将任务P64分配至集群Cluster_1的一个运行队列以取得改善的高速缓存局部性。然而,由图4所知,集群Cluster_0的处理器核心CPU_1可为多核处理器系统10中唯一不具有 运行任务及/或待运行任务的空闲处理器核心。将任务P64分配至集群Cluster_1的一个运行队列不能取得负载平衡。在本实施例中,调度单元104可启动另一任务调度方案操作。因此,调度单元104可找出处理器核心CPU_0-CPU_7中的最空闲处理器核心(即,不具有运行任务及/或待运行任务的空闲处理器核心,或如果不存在空闲处理器核心则找出最轻负载处理器核心),以及将任务P64加入最空闲处理器核心的运行队列。如图4所示,既然在多核处理器系统10中仅存在一个空闲处理器核心,则对于调度单元104可用的唯一选择是将任务P64加入空闲处理器核心CPU_1具有的运行队列RQ1。
图5是描述第三任务调度操作的示意图,其中上述操作将属于线程组的一个任务分配入处理器核心(例如最轻负载处理器核心)的运行队列。在本示例中,在需要将任务P64加入运行队列RQ0-RQ7中的一个用于执行之前,运行队列RQ0可包含两个任务P0以及P1;运行队列RQ1可包含一个任务P2;运行队列RQ2可包含三个任务P3、P4以及P61;运行队列RQ3可包含两个任务P5以及P6;运行队列RQ4可包含两个任务P7以及P8;运行队列RQ5可包含两个任务P9以及P10;运行队列RQ6可包含三个任务P11、P62以及P63;以及运行队列RQ7可包含两个任务P12以及P13。某些运行队列RQ0-RQ7中的任务P0-P13的每一个可为单线程进程,以及某些运行队列RQ0-RQ7中的任务P61-P63以及分配至运行队列RQ0-RQ7中的一个的任务P64可属于相同线程组。在本示例中,多核处理器系统10当前具有一个线程组,其中该线程组具有共享相同特定数据及/或存取相同特定存储地址的多个任务P61-P64。
在本示例中,任务P64可为新任务或恢复任务(例如当前正在唤醒的唤醒任务),其中上述新任务或恢复任务不包含在多核处理器系统10的运行队列RQ0-RQ7中。如上所述,对于多核处理器系统性能,负载平衡可比高速缓存一致性开销降低更关键。因此,取得负载平衡的策略可超越改善高速缓存局部性的策略。如图5所示,在集群Cluster_0与Cluster_1中,集群Cluster_1具有与任务P64属于相同线程组中的最 大数量的任务。如果执行所述的基于线程组方案,调度单元104可将任务P64分配至集群Cluster_1的一个运行队列以取得改善的高速缓存局部性。然而,由图5所知,集群Cluster_0与Cluster_1不具有一个或多个空闲处理器核心,并且集群Cluster_0的处理器核心CPU_1可为多核处理器系统10中具有拥有非零处理器核心负载的唯一一个最轻负载处理器核心。将任务P64分配至集群Cluster_1的一个运行队列不能取得负载平衡。在本实施例中,调度单元104可启动另一任务调度方案操作。对于调度单元104可用的唯一选择是将任务P64加入最轻负载处理器核心CPU_1具有的运行队列RQ1。
图6是描述第四任务调度操作的示意图,其中上述操作将属于线程组的一个任务分配入处理器核心(例如空闲处理器核心)的运行队列。在本示例中,在需要将任务P54加入运行队列RQ0-RQ7中的一个用于执行之前,运行队列RQ0可包含一个任务P0;运行队列RQ2可包含两个任务P51以及P52;运行队列RQ3可包含一个任务P1;运行队列RQ4可包含一个任务P2;运行队列RQ6可包含两个任务P53以及P3;以及运行队列RQ7可包含一个任务P4。某些运行队列RQ0-RQ7中的任务P0-P4的每一个可为单线程进程,以及某些运行队列RQ0-RQ7中的任务P51-P53以及分配至运行队列RQ0-RQ7中的一个的任务P54可属于相同线程组。在本示例中,多核处理器系统10当前具有一个线程组,其中该线程组具有共享相同特定数据及/或存取相同特定存储地址的多个任务P51-P54。
在本示例中,任务P54可为新任务或恢复任务(例如当前正在唤醒的唤醒任务),其中上述新任务或恢复任务不包含在多核处理器系统10的运行队列RQ0-RQ7中。调度单元104可首先检测集群Cluster_0与Cluster_1的每一个具有至少一个无运行任务及/或待运行任务的空闲处理器核心。因此,调度单元104可有机会执行基于线程组的任务调度方案以在取得较好负载平衡的同时改善高速缓存局部性。例如,既然集群Cluster_0与Cluster_1的每一个至少具有一个无运行队列及/或待 运行队列的空闲处理器核心,则将任务P54分配至集群Cluster_0与Cluster_1任意一个中的空闲处理器核心的运行队列从而取得较好的负载平衡。此外,既然还未将任务P54加入运行队列,调度单元104基于多核处理器系统10的运行队列中任务P51-P53的分布决定任务P54应该分配至哪个目标集群以取得改善的高速缓存局部性。如图6所示,集群Cluster_0的处理器核心CPU_2的运行队列RQ2中包含与任务P54属于相同线程组的两个任务P51与P52;以及集群Cluster_1的处理器核心CPU_6的运行队列RQ6中包含与任务P54属于相同线程组的一个任务P53。因此,在集群Cluster_0与Cluster_1中,集群Cluster_0具有任务P54属于的线程组中的最大数量的任务。当在集群Cluster_0与Cluster_1的每一个至少具有一个无运行任务及/或待运行任务的空闲处理器核心情况下执行所述基于线程组的任务调度方案时,如图6所示,调度单元104可参考线程组的任务分布将任务P54分配至集群Cluster_0的运行队列RQ1。这样,可在保证负载平衡需求的情况下改善高速缓存局部性。
图7是描述第五任务调度操作的示意图,其中上述操作将属于线程组的一个任务分配入处理器核心(例如最轻负载处理器核心)的运行队列。在本示例中,在需要将任务P54加入运行队列RQ0-RQ7中的一个用于执行之前,运行队列RQ0可包含两个任务P0以及P1;运行队列RQ1可包含一个任务P2;运行队列RQ2可包含三个任务P3、P51以及P52;运行队列RQ3可包含两个任务P4以及P5;运行队列RQ4可包含两个任务P6以及P7;运行队列RQ5可包含一个任务P8;运行队列RQ6可包含三个任务P9、P53以及P10;以及运行队列RQ7可包含两个任务P11以及P12。某些运行队列RQ0-RQ7中的任务P0-P12的每一个可为单线程进程,以及某些运行队列RQ0-RQ7中的任务P51-P53以及分配至运行队列RQ0-RQ7中的一个的任务P54可属于相同线程组。在本示例中,多核处理器系统10当前具有一个线程组,其中该线程组具有共享相同特定数据及/或存取相同特定存储地址的多个任务P51-P54。
在本示例中,任务P54可为新任务或恢复任务(例如当前正在唤醒的唤醒任务),其中上述新任务或恢复任务不包含在多核处理器系统10的运行队列RQ0-RQ7中。调度单元104可首先检测集群Cluster_0与Cluster_1的每一个不具有空闲处理器核心但具有拥有非零处理器核心负载的至少一个最轻负载处理器核心。进一步,调度单元104可评估集群Cluster_0与Cluster_1中最轻负载处理器核心的处理器核心负载状态。假设调度单元104发现集群Cluster_0的最轻负载处理器核心与集群Cluster_1的最轻负载处理器核心具有相同处理器核心负载(即,相同处理器核心负载评估值)。因此,调度单元104可有机会执行基于线程组的任务调度方案以在取得较好负载平衡的同时改善高速缓存局部性。例如,既然集群Cluster_0与Cluster_1的每一个至少具有一个拥有相同非零处理器核心负载的最轻负载处理器核心,则将任务P54分配至集群Cluster_0与Cluster_1任意一个中的最轻负载处理器核心的运行队列从而取得较好的负载平衡。如图7所示,处理器核心CPU_1可为集群Cluster_0中唯一一个最轻负载处理器核心,以及处理器核心CPU_5可为集群Cluster_1中唯一一个最轻负载处理器核心,其中处理器核心CPU_1与CPU_5可具有相同处理器核心负载。因此,基于负载平衡策略,可选择处理器核心CPU_1与CPU_5的一个作为执行任务P54的目标处理器核心。
此外,既然还未将任务P54加入运行队列,调度单元104基于多核处理器系统10的运行队列中任务P51-P53的分布决定任务P54应该分配至哪个目标集群以取得改善的高速缓存局部性。如图7所示,集群Cluster_0的处理器核心CPU_2的运行队列RQ2中包含与任务P54属于相同线程组的两个任务P51与P52;以及集群Cluster_1的处理器核心CPU_6的运行队列RQ6中包含与任务P54属于相同线程组的一个任务P53。因此,在集群Cluster_0与Cluster_1中,集群Cluster_0具有任务P54属于的线程组中的最大数量的任务。当在集群Cluster_0与Cluster_1的每一个至少具有一个拥有相同非零处理器核心负载的最轻负载处理 器核心情况下执行所述基于线程组的任务调度方案时,如图7所示,调度单元104可将任务P54分配至集群Cluster_0的运行队列RQ1。这样,可在保证负载平衡需求的情况下改善高速缓存局部性。
对于图8-图11所示的下列示例,可执行任务调度器100的调度单元104以找出多核处理器系统10的所选处理器核心中较忙处理器核心(例如,最忙处理器核心)。例如,为了任务转移/加载平衡,调度单元104检查的所选处理器核心可为多核处理器系统10中包含的某些处理器核心,其中所选的处理器核心可属于相同集群或不同集群。对于另一示例,为了任务转移/加载平衡,调度单元104检查的所选处理器核心可为多核处理器系统10中包含的所有处理器核心。在一实施例中,触发负载平衡进程的处理器核心可执行调度单元104的程序代码。例如,但不限于,可配置多核处理器系统10中每个处理器核心以每隔特定周期触发一次负载平衡进程,其中周期长度可为固定值或时变值,及/或在每个负载平衡进程中检查处理器核心选择可为固定的或可进行自适应调整。触发当前负载平衡进程的处理器核心是调度单元104检查的所选处理器核心中的一个。例如,触发当前负载平衡进程的处理器核心的处理器核心负载可与所选处理器核心中其他处理器核心的处理器核心负载进行比较。当所选处理器核心的特定处理器核心具有比触发负载平衡进程的处理器核心更重的处理器核心负载时,可将任务从特定处理器核心(例如,更忙处理器核心)拉入触发负载平衡进程的处理器核心(例如,较不忙处理器核心或空闲处理器核心)。在一实施例中,特定处理器核心可为调度单元检查的所选处理器核心中最忙的处理器核心。值得注意的是,在一替换设计中,不管哪个处理器核心触发负载平衡进程,可依集中方式执行调度单元104的程序代码。
为了清楚简洁,图8-图11所示的下列示例假设为了任务转移/负载平衡,调度单元104检查的所选处理器核心具有CPU_0-CPU_7分别表示的8个处理器核心。在这种情况下,多核处理器系统10仅具有两个集群112_1与112_N(N等于2),分别用Cluster_0与Cluster_1表示; Cluster_0表示的一个集群112_1仅具有CPU_0、CPU_1、CPU_2、CPU_3分别表示的四个处理器核心117;并且Cluster_1表示的另一个集群112_N仅具有CPU_4、CPU_5、CPU_6、CPU_7分别表示的四个处理器核心118。在这种情况下,包含在多核处理器系统10中的所有处理器核心可为所选处理器核心。另外,调度单元104可将RQ0-RQ7表示的运行队列105_1-105_M(M等于8)分别分配至所选处理器核心CPU_0-CPU_7。在另一种情况下,多核处理器系统10具有大于两个集群及/或集群117与118的至少一个具有多于4个处理器核心,调度单元104仅将多核处理器系统10中包含的某些处理器核心作为图8-11所示的所选处理器核心CPU_0-CPU_7。简单地说,为了任务转移/负载平衡检查的所选处理器核心CPU_0-CPU_7可为多核处理器核心10中的至少部分(即,部分或全部)处理器核心,这取决于对应触发负载平衡进程的处理器核心的选择设定。因此,关于图8-图11所示的任意示例,所选处理器核心CPU_0-CPU_3可为属于相同集群Cluster_0的部分或所有处理器核心,所选处理器核心CPU_4-CPU_7可为属于相同集群Cluster_1的部分或所有处理器核心,及/或集群Cluster_0与Cluster_1可为在相同多核处理器系统中使用的部分或所有集群。
在图3-图7的示例中,当存在新任务或恢复任务(例如当前正在唤醒的唤醒任务)时,可执行负载平衡进程,其中上述新任务或恢复任务不包含在多核处理器系统10的任何运行队列中并且需要将上述新任务或恢复任务加入多核处理器系统10的一个运行队列用于执行。实际上,由于其他触发事件,可执行负载平衡进程。例如,当任务调度器100发现在多核处理器系统10的运行队列中不存在任务时,可执行负载平衡进程以将所选处理器核心中较忙处理器核心(例如最忙处理器核心,即最重负载处理器核心)的运行队列中的任务拉入无运行任务及/或待运行任务的空闲处理器核心的运行队列(上述空闲处理器核心可为由于空运行队列而触发负载平衡进程的处理器核心)。在另一示例中,当任务调度器100发现预设时间间隔已经过去(例如定时器到 时)时,可执行负载平衡进程以将任务从所选处理器核心的较忙处理器核心(例如最重负载处理器核心)的运行队列中拉入较不忙处理器核心的运行队列(上述较不忙处理器核心可为由于定时器到时而触发负载平衡进程的处理器核心)。由于定时器到时触发负载平衡进程的处理器核心可为所选处理器核心中的最空闲处理器核心(例如,不具有运行任务及/或待运行任务的空闲处理器核心,或如果不存在空闲处理器核心时的拥有非零处理器核心负载的最轻负载处理器核心)。假设可选择所选处理器核心中最忙处理器核心(例如,最重负载处理器核心)作为任务转移的目标源,则多核处理器系统10的所选处理器核心中最忙处理器核心(例如,最重负载处理器核心)的运行队列中的任务可从一个集群转移至另一集群。相似地,在达到负载平衡需求的情况下,可引入所述基于线程组的任务调度方案控制任务转移以减少或避免高速缓存一致性开销。换句话说,当与当前负载平衡进程关联的任务转移的目标源与目的地是不同集群中的两个所选处理器核心时,如果达到负载平衡需求,可启动所述基于线程组的任务调度方案以控制任务转移。
图8是描述第六任务调度操作的示意图,其中上述操作将属于线程组的一个任务从一个集群中处理器核心(例如,最重负载处理器核心)的运行队列转移至另一集群中处理器核心(例如空闲处理器核心)的运行队列。假设由于空运行队列或计时器到时,处理器核心CPU_5触发负载平衡进程。在本示例中,在负载平衡进程开始时,运行队列RQ0可包含一个任务P0;运行队列RQ1可包含四个任务P1、P81、P82以及P2;运行队列RQ2可包含两个任务P3以及P4;运行队列RQ3可包含一个任务P5;运行队列RQ4可包含一个任务P6;运行队列RQ6可包含三个任务P83、P84以及P85;以及运行队列RQ7可包含一个任务P7。某些运行队列RQ0-RQ7中的任务P0-P7的每一个可为单线程进程,以及某些运行队列RQ0-RQ7中的任务P81-P85可属于相同线程组。在本示例中,多核处理器系统10当前具有一个线程组,其中该线程组具有共享相同 特定数据及/或存取相同特定存储地址的多个任务P81-P85。
当开始负载平衡进程时,调度单元104可比较所选处理器核心CPU_0-CPU_7的处理器核心负载以找出任务转移的目标源。在图8所示的示例中,处理器核心CPU_5也可为不具有运行任务及/或待运行任务的空闲处理器核心。然而,这仅为描述的目的,并不是对本发明的限制。即,由于定时器到时触发负载平衡进程的处理器核心不一定是最空闲处理器核心(例如,不具有运行任务及/或待运行任务的空闲处理器核心,或者如果不存在空闲处理器核心,则为拥有非零处理器核心负载的最轻负载处理器核心),其中为了任务转移/负载平衡,上述最空闲处理器核心位于调度单元104检查的所选处理器核心中。在本示例中,与处理器核心CPU_5(其为本示例中触发负载平衡进程的处理器核心)相比,图8所示的处理器核心CPU_0-CPU_4与CPU_6-CPU_7中的每一个具有较忙处理器核心,因此上述处理器核心的每一个可作为任务转移的一个候选源。
根据示例,但不限定,可配置调度单元104以找出最忙处理器核心(例如具有非零处理器核心负载的最重负载处理器核心)作为任务转移的目标源。在本示例中,所选处理器核心CPU_0-CPU_7中的最忙处理器核心可为集群Cluster_0中的处理器核心CPU_1。此外,最忙处理器核心CPU_1的运行队列RQ1包含目前在多核处理器系统10中属于相同线程组的任务P81以及P82。
在负载平衡进程期间,当需要从一个集群到另一集群的任务转移(例如所选处理器核心的作为任务转移目标源的最忙处理器核心以及作为任务转移目的地的触发负载平衡进程的处理器核心可包含在不同集群中)时,可启动所述基于线程组的任务调度方案以取得改善的高速缓存局部性,以及任务转移的目标源的运行队列(例如,所选处理器核心中最忙处理器核心)包含属于线程组的至少一个任务,其中上述线程组具有共享相同特定数据及/或存取相同特定存储地址的多个任务。因此,调度单元104可执行所述基于线程组的任务调度方案以决 定是否将线程组的一个任务(例如,P81或P82)从处理器核心CPU_1(其为所选处理器核心中最忙处理器核心)的运行队列RQ1转移至处理器核心CPU_5(其为触发负载平衡进程的处理器核心,例如最空闲处理器核心)的运行队列RQ5以降低高速缓存一致性开销。
考虑到选择任务P81作为候选任务以从当前集群Cluster_0转移至不同集群Cluster_1。调度单元104可参考属于相同线程组的任务分布判断是否应该实际执行候选任务的任务转移。如图8所示,线程组包含为任务转移选作候选任务的第一任务(例如,任务P81),以及进一步包含未被选作任务转移候选任务的多个第二任务(例如,任务P82-P85)。检查属于相同线程组的第一任务与第二任务的分布。关于第一任务与第二任务(例如,任务P81-P85),两个任务P81与P82包含在集群Cluster_0的处理器核心CPU_1的运行队列RQ1中,以及三个任务P83、P84、P85包含在集群Cluster_1的处理器核心CPU_6的运行队列RQ6中。因此,在集群Cluster_0与Cluster_1中,集群Cluster_1具有属于线程组的最大数量任务。第一任务包含在集群Cluster_0的一个运行队列中。基于第一任务与第二任务的分布检查结果,调度单元104可判断候选任务应从当前集群转移至不同集群。如图8所示,调度单元104可将任务P81从处理器核心CPU_1(其为所选处理器核心中最重负载处理器核心)的运行队列RQ1转移至处理器核心CPU_5(其为触发负载平衡进程的处理器核心)的运行队列RQ5。
值得注意的是,处理器核心CPU_1的运行队列RQ1可包含当前多核处理器系统10中属于线程组的多于一个的任务。因此,处理器核心CPU_1的运行队列RQ1中包含的并且属于线程组的任何任务可被选为从当前集群Cluster_0转移至不同集群Cluster_1的候选任务。考虑选择任务P82作为候选任务的另一种情况。如图8所示,线程组包含选作任务转移候选任务的第一任务(例如,任务P82),以及进一步包含未被选作任务转移候选任务的多个第二任务(例如,任务P81、P83-P85)。检查属于相同线程组的第一任务与第二任务的分布。关于第一任务与 第二任务(例如,任务P81-P85),两个任务P81与P82包含在集群Cluster_0的处理器核心CPU_1的运行队列RQ1中,以及三个任务P83、P84、P85包含在集群Cluster_1的处理器核心CPU_6的运行队列RQ6中。因此,在集群Cluster_0与Cluster_1中,集群Cluster_1具有属于线程组的最大数量任务。第一任务包含在集群Cluster_0的一个运行队列中。基于第一任务与第二任务的分布检查结果,调度单元104可判断候选任务应从当前集群转移至不同集群。调度单元104可将任务P82从处理器核心CPU_1(其为所选处理器核心中最重负载处理器核心)的运行队列RQ1转移至处理器核心CPU_5(其为触发负载平衡进程的处理器核心)的运行队列RQ5。
如上所述,调度单元104执行的所述基于线程组的任务调度方案可选择候选任务(例如,属于线程组并且包含在所选处理器核心中最忙处理器核心的运行队列中的任务),并且检查集群中线程组的任务分布以决定候选任务是否应从当前集群转移至不同集群。因此,线程组的任务分布可能阻止候选任务的任务转移。
图9是描述第七任务调度操作的示意图,其中上述操作将一个单线程进程的任务从一个集群中处理器核心(例如,最重负载处理器核心)的运行队列转移至另一集群中处理器核心(例如空闲处理器核心)的运行队列,其中服从线程组转移原则。假设由于空运行队列或计时器到时,处理器核心CPU_5触发负载平衡进程。在本示例中,在负载平衡进程开始时,运行队列RQ0可包含两个任务P0以及P84;运行队列RQ1可包含四个任务P1、P81、P82以及P2;运行队列RQ2可包含两个任务P3以及P4;运行队列RQ3可包含两个任务P5以及P85;运行队列RQ4可包含一个任务P6;运行队列RQ6可包含一个任务P83;以及运行队列RQ7可包含一个任务P7。某些运行队列RQ0-RQ7中的任务P0-P7的每一个可为单线程进程,以及某些运行队列RQ0-RQ7中的任务P81-P85可属于相同线程组。在本示例中,多核处理器系统10当前具有一个线程组,其中该线程组具有共享相同特定数据及/或存取相同特定存储地 址的多个任务P81-P85。
相似地,当开始负载平衡进程时,调度单元104可比较所选处理器核心CPU_0-CPU_7的处理器核心负载以找出任务转移的目标源。在图9所示的示例中,处理器核心CPU_5可为不具有运行任务及/或待运行任务的空闲处理器核心。然而,这仅为描述的目的,并不是对本发明的限制。即,由于定时器到时触发负载平衡进程的处理器核心不一定是最空闲处理器核心(例如,不具有运行任务及/或待运行任务的空闲处理器核心,或者如果不存在空闲处理器核心,则为拥有非零处理器核心负载的最轻负载处理器核心),上述最空闲处理器核心位于调度单元104检查的所选处理器核心中。在本示例中,与处理器核心CPU_5(其为本示例中触发负载平衡进程的处理器核心)相比,图9所示的处理器核心CPU_0-CPU_4与CPU_6-CPU_7中的每一个具有较忙处理器核心,因此上述处理器核心的每一个可作为任务转移的一个候选源。
根据示例,但不限定,可配置调度单元104以找出最忙处理器核心(例如具有非零处理器核心负载的最重负载处理器核心)作为任务转移的目标源。在本示例中,所选处理器核心CPU_0-CPU_7中的最忙处理器核心可为集群Cluster_0中的处理器核心CPU_1。此外,最忙处理器核心CPU_1的运行队列RQ1包含目前在多核处理器系统10中属于相同线程组的任务P81以及P82。
考虑到选择任务P81作为候选任务以从当前集群Cluster_0转移至不同集群Cluster_1的情况。如图9所示,线程组包含为任务转移选作候选任务的第一任务(例如,任务P81),以及进一步包含未被选作任务转移候选任务的多个第二任务(例如,任务P82-P85)。检查属于相同线程组的第一任务与第二任务的分布。关于第一任务与第二任务(例如,任务P81-P85),一个任务P84包含在集群Cluster_0的处理器核心CPU_0的运行队列RQ0中,两个任务P81与P82包含在集群Cluster_0的处理器核心CPU_1的运行队列RQ1中,以及一个任务P85包含在集群 Cluster_0的处理器核心CPU_3的运行队列RQ3中并且一个任务P83包含在集群Cluster_1的处理器核心CPU_6的运行队列RQ6中。因此,在集群Cluster_0与Cluster_1中,集群Cluster_0具有属于线程组的最大数量任务。第一任务包含在集群Cluster_0的一个运行队列中。触发负载平衡进程的处理器核心(例如,处理器核心CPU_5)包含在集群Cluster_1中,其中集群Cluster_1具有属于相同线程组的较小数量的任务。基于第一任务与第二任务的分布检查结果,调度单元104可判断候选任务应停留在当前集群Cluster_0。举例来说,如图9所示,调度单元104可执行另一任务调度方案以将最早排在处理器核心CPU_1(其为所选处理器核心中最重负载处理器核心)的运行队列RQ1中的单线程进程(例如,任务P1)移动至处理器核心CPU_5(其为触发负载平衡进程的处理器核心,例如最空闲处理器核心)的运行队列RQ5。
如上所述,在负载平衡进程期间,当需要从一个集群到另一集群的任务转移(例如所选处理器核心的作为任务转移目标源的最忙处理器核心以及作为任务转移目的地的触发负载平衡进程的处理器核心可包含在不同集群中)时,可启动所述基于线程组的任务调度方案,以及任务转移的目标源的运行队列(例如,所选处理器核心中最忙处理器核心)包含属于线程组的至少一个任务,其中上述线程组具有共享相同特定数据及/或存取相同特定存储地址的多个任务。所述基于线程组的任务调度方案可进一步检查集群中线程组的任务分布以决定属于线程组并且包含在任务转移目标源(例如,最忙处理器核心)的运行队列中的任务是否应执行任务转移。然而,当发现不需要从一个集群至另一集群的任务转移(例如触发负载平衡进程的处理器核心与最忙处理器核心位于相同集群)或任务转移的目标源(例如,最忙处理器核心)的运行队列不包含线程组的任务(其中,上述线程组具有共享相同特定数据及/或存取相同特定存储地址的多个任务)时,在不使用改善高速缓存局部性的所述基于线程组的任务调度方案的情况下,调度单元104可启动用于负载平衡的另一任务调度方案。
图10是描述第八任务调度操作的示意图,其中上述操作将一个单线程进程的任务从一个集群中处理器核心(例如,最重负载处理器核心)的运行队列转移至另一集群中处理器核心(例如空闲处理器核心)的运行队列。假设由于空运行队列或计时器到时,处理器核心CPU_5触发负载平衡进程。在本示例中,在负载平衡进程开始时,运行队列RQ0可包含一个任务P0;运行队列RQ1可包含四个任务P1、P2、P3以及P4;运行队列RQ2可包含两个任务P81以及P82;运行队列RQ3可包含一个任务P5;运行队列RQ4可包含一个任务P6;运行队列RQ6可包含三个任务P83、P84以及P85;以及运行队列RQ7可包含一个任务P7。某些运行队列RQ0-RQ7中的任务P0-P7的每一个可为单线程进程,以及某些运行队列RQ0-RQ7中的任务P81-P85可属于相同线程组。在本示例中,多核处理器系统10当前具有一个线程组,其中该线程组具有共享相同特定数据及/或存取相同特定存储地址的多个任务P81-P85。
当开始负载平衡进程时,调度单元104可比较所选处理器核心CPU_0-CPU_7的处理器核心负载以找出任务转移的目标源。在图10所示的示例中,处理器核心CPU_5可为不具有运行任务及/或待运行任务的空闲处理器核心。然而,这仅为描述的目的,并不是对本发明的限制。即,由于定时器到时触发负载平衡进程的处理器核心不一定是最空闲处理器核心(例如,不具有运行任务及/或待运行任务的空闲处理器核心,或者如果不存在空闲处理器核心,则为拥有非零处理器核心负载的最轻负载处理器核心),上述最空闲处理器核心位于所有所选处理器核心中。在本示例中,与处理器核心CPU_5(其为本示例中触发负载平衡进程的处理器核心)相比,图10所示的处理器核心CPU_0-CPU_4与CPU_6-CPU_7中的每一个具有较忙处理器核心,因此上述处理器核心的每一个可作为任务转移的一个候选源。
根据示例,但不限定,可配置调度单元104以找出最忙处理器核心(例如具有非零处理器核心负载的最重负载处理器核心)作为任务转移的目标源。在本示例中,所选处理器核心CPU_0-CPU_7中的最忙 处理器核心可为集群Cluster_0中的处理器核心CPU_1。此外,处理器核心CPU_5(其为触发负载平衡进程的处理器核心)是具有更多属于相同线程组的任务的集群Cluster_1的一部分。然而,处理器核心CPU_1(其为所选处理器核心中最忙处理器核心)的运行队列RQ1不包含当前在多核处理器系统10中属于线程组的任务。值得注意的是,关于多核处理器系统性能,负载平衡可比高速缓存一致性开销降低更关键。因此,取得负载平衡的策略可超越改善高速缓存局部性的策略。虽然属于线程组并且包含在集群Cluster_1中处理器核心CPU_6的运行队列RQ6中的任务(例如,P83-P85)的数量大于属于相同线程组并且包含在集群Cluster_0中处理器核心CPU_2的运行队列RQ2中的任务(例如,P81-P82)的数量,但没有任务P81-P85包含在最忙处理器核心CPU_1的运行队列RQ1中。既然使用所述基于线程组的任务调度方案不能达到负载平衡需求,则在这种情况下不启用基于线程组的任务调度方案。因此,不考虑线程组,控制从一个集群至另一集群的任务转移。举例来说,如图10所示,调度单元104可执行另一任务调度操作以将最早排在处理器核心CPU_1(其为所选处理器核心中最忙处理器核心)的运行队列RQ1中的单线程进程(例如,任务P1)移动至处理器核心CPU_5(其为触发负载平衡进程,并且是最空闲处理器核心的处理器核心)的运行队列RQ5。
图11是描述第九任务调度操作的示意图,其中上述操作将一个单线程进程的任务从一个集群中处理器核心(例如,最重负载处理器核心)的运行队列转移至相同集群中处理器核心(例如空闲处理器核心)的运行队列。假设由于空运行队列或计时器到时,处理器核心CPU_3触发负载平衡进程。在本示例中,在负载平衡进程开始时,运行队列RQ0可包含一个任务P0;运行队列RQ1可包含四个任务P1、P81、P82以及P2;运行队列RQ2可包含两个任务P3以及P4;运行队列RQ4可包含两个任务P5以及P85;运行队列RQ5可包含一个任务P6;运行队列RQ6可包含两个任务P83以及P84;以及运行队列RQ7可包含一个任务 P7。某些运行队列RQ0-RQ7中的任务P0-P7的每一个可为单线程进程,以及某些运行队列RQ0-RQ7中的任务P81-P85可属于相同线程组。在本示例中,多核处理器系统10当前具有一个线程组,其中该线程组具有共享相同特定数据及/或存取相同特定存储地址的多个任务P81-P85。
当开始负载平衡进程时,调度单元104可比较所选处理器核心CPU_0-CPU_7的处理器核心负载以找出任务转移的目标源。在图11所示的示例中,处理器核心CPU_3可为不具有运行任务及/或待运行任务的空闲处理器核心。然而,这仅为描述的目的,并不是对本发明的限制。即,由于定时器到时触发负载平衡进程的处理器核心不一定是最空闲处理器核心(例如,不具有运行任务及/或待运行任务的空闲处理器核心,或者如果不存在空闲处理器核心,则为拥有非零处理器核心负载的最轻负载处理器核心),上述最空闲处理器核心位于所有所选处理器核心中。在本示例中,与处理器核心CPU_3(其为本示例中触发负载平衡进程的处理器核心)相比,图11所示的处理器核心CPU_0-CPU_2与CPU_4-CPU_7中的每一个具有较忙处理器核心,因此上述处理器核心的每一个可作为任务转移的一个候选源。
根据示例,但不限定,可配置调度单元104以找出最忙处理器核心(例如具有非零处理器核心负载的最重负载处理器核心)作为任务转移的目标源。在本示例中,最忙处理器核心可为集群Cluster_0中的处理器核心CPU_1。如上所述,取得负载平衡的策略可超越改善高速缓存局部性的策略。如果执行所述基于线程组的任务调度方案,则调度单元104可控制一个任务(例如,P81或P82)从集群Cluster_0中的处理器核心CPU_1的运行队列RQ1转移至集群Cluster_1中的处理器核心的运行队列以改善高速缓存局部性。然而,如图11所知,触发负载平衡进程的处理器核心(即,处理器核心CPU_3)是具有更少属于相同线程组的任务的集群Cluster_0的一部分。将任务从集群Cluster_0移动至集群Cluster_1不能取得集群Cluster_0中包含的处理器核心CPU_3请求的负载平衡。因此,虽然属于线程组并且包含在集群 Cluster_1中处理器核心CPU_4、CPU_6的运行队列RQ4、RQ6中的任务(例如,P83-P85)的数量大于属于相同线程组并且包含在集群Cluster_0中处理器核心CPU_1的运行队列RQ1中的任务(例如,P81-P82)的数量,但无需从一个集群至另一集群的任务转移。既然使用所述基于线程组的任务调度方案不能达到负载平衡需求,则在这种情况下不启用基于线程组的任务调度方案。因此,不考虑线程组,控制从一个处理器核心至相同集群中另一处理器核心的任务转移。举例来说,如图11所示,调度单元104可执行另一任务调度操作以将最早排在处理器核心CPU_1(其为所选处理器核心中最重负载处理器核心)的运行队列RQ1中的单线程进程(例如,任务P1)移动至处理器核心CPU_3(其为触发负载平衡进程,并且是最空闲处理器核心的处理器核心)的运行队列RQ3。
值得注意的是,图3-图11所示的示例仅为说明的目的,并不是对本发明的限制。实际上,可基于实际设计考虑调整启动所述基于线程组的任务调度方案以及启动基于属于线程组的任务分布的任务转移的标准。例如,所述基于线程组的任务调度方案可与其他任务调度方案协同工作以取得负载平衡与改善的高速缓存局部性。在另一示例中,可不管负载平衡执行所述基于线程组的任务调度方案。简化起见,至少支持所述基于线程组的任务调度方案的任意任务调度器设计皆落入本发明的保护范围。
总之,可配置任务调度器以支持本发明所述的基于线程组的任务调度方案。因此,当使用基于线程组的任务调度方案以决定如何分配线程组的任务时,考虑高速缓存一致性开销。这样,当线程组的任务是新任务或恢复任务时,可将线程组的任务分配至具有最空闲处理器核心(例如,不具有运行任务及/或待运行任务的空闲处理器核心,或者如果不存在空闲处理器核心,则为具有非零处理器核心负载的最轻负载处理器核心)以及具有相同线程组最多任务的集群。进一步,当线程组的任务是运行队列中的任务时,可将线程组的任务分配至具有 触发负载平衡进程的处理器核心并且具有相同线程组最多任务的集群。因此,由于改善高速缓存局部性,可减轻或避免高速缓存一致性开销。
本发明技术人员很容易理解在保留本发明精神的同时对装置与方法进行的各种修改以及替换。本发明以权利要求书限定上述揭露的保护范围。
Claims (22)
1.一种多核处理器系统的任务调度方法,包含:
当第一任务属于当前在该多核处理器系统中的线程组时,其中,该线程组具有共享相同特定数据的多个任务,并且该多个任务包含该第一任务与至少一个第二任务,
至少部分基于该至少一个第二任务的分布决定该多核处理器系统中的目标处理器核心,其中该至少一个第二任务位于该多核处理器系统中至少一个处理器核心的至少一个运行队列中;以及
将该第一任务分配至该目标处理器核心的运行队列。
2.如权利要求1所述的任务调度方法,其特征在于,该多核处理器系统包含多个集群,其中每个集群具有一个或多个处理器核心;该目标处理器核心包含在该多个集群的目标集群中;以及在该多个集群中,该目标集群具有属于该线程组并且包含在该多核处理器系统中至少一个所选处理器核心的至少一个运行队列中的最大数量任务。
3.如权利要求2所述的任务调度方法,其特征在于,待分配的该第一任务不包含在该多核处理器系统的运行队列中。
4.如权利要求2所述的任务调度方法,其特征在于,该多个集群包含第一集群,其中该第一集群具有该多核处理器系统的至少一个所选处理器核心中拥有非零处理器核心负载的至少一个最轻负载处理器核心;以及该第一集群是该目标集群。
5.如权利要求4所述的任务调度方法,其特征在于,该目标处理器核心是该目标集群的一个最轻负载处理器核心。
6.如权利要求2所述的任务调度方法,其特征在于,该多个集群包含第一集群,其中该第一集群具有该多核处理器系统的至少一个所选处理器核心中无运行任务及/或待运行任务的至少一个空闲处理器核心;以及该第一集群是该目标集群。
7.如权利要求6所述的任务调度方法,其特征在于,该目标处理器核心是该目标集群的一个空闲处理器核心。
8.如权利要求2所述的任务调度方法,其特征在于,待分配的该第一任务包含在该多核处理器系统的所选处理器核心的多个运行队列中的一个特定运行队列中。
9.如权利要求8所述的任务调度方法,其特征在于,该所选处理器核心的特定处理器核心具有该特定运行队列,并且该特定处理器核心的处理器核心负载比触发负载平衡进程的该目标处理器核心的处理器核心负载要重。
10.如权利要求9所述的任务调度方法,其特征在于,该目标集群不同于具有该特定处理器核心的集群。
11.一种多核处理器系统的任务调度方法,包含:
当第一任务属于当前在该多核处理器系统中的线程组时,其中,该线程组具有存取相同特定存储地址的多个任务,并且该多个任务包含该第一任务与至少一个第二任务,
至少部分基于该至少一个第二任务的分布决定该多核处理器系统中的目标处理器核心,其中该至少一个第二任务位于该多核处理器系统中至少一个处理器核心的至少一个运行队列中;以及
将该第一任务分配至该目标处理器核心的运行队列。
12.如权利要求11所述的任务调度方法,其特征在于,该多核处理器系统包含多个集群,其中每个集群具有一个或多个处理器核心;该目标处理器核心包含在该多个集群的目标集群中;以及在该多个集群中,该目标集群具有属于该线程组并且包含在该多核处理器系统中至少一个所选处理器核心的至少一个运行队列中的最大数量任务。
13.如权利要求12所述的任务调度方法,其特征在于,待分配的该第一任务不包含在该多核处理器系统的运行队列中。
14.如权利要求12所述的任务调度方法,其特征在于,该多个集群包含第一集群,其中该第一集群具有该多核处理器系统的至少一个所选处理器核心中拥有非零处理器核心负载的至少一个最轻负载处理器核心;以及该第一集群是该目标集群。
15.如权利要求14所述的任务调度方法,其特征在于,该目标处理器核心是该目标集群的一个最轻负载处理器核心。
16.如权利要求12所述的任务调度方法,其特征在于,该多个集群包含第一集群,其中该第一集群具有该多核处理器系统的至少一个所选处理器核心中无运行任务及/或待运行任务的至少一个空闲处理器核心;以及该第一集群是该目标集群。
17.如权利要求16所述的任务调度方法,其特征在于,该目标处理器核心是该目标集群的一个空闲处理器核心。
18.如权利要求12所述的任务调度方法,其特征在于,待分配的该第一任务包含在该多核处理器系统的所选处理器核心的多个运行队列中的一个特定运行队列中。
19.如权利要求18所述的任务调度方法,其特征在于,该所选处理器核心的特定处理器核心具有该特定运行队列,并且该特定处理器核心的处理器核心负载比触发负载平衡进程的该目标处理器核心的处理器核心负载要重。
20.如权利要求19所述的任务调度方法,其特征在于,该目标集群不同于具有该特定处理器核心的集群。
21.一种存储程序代码的非短暂计算机可读介质,其特征在于,当多核处理器系统执行该程序代码时,引发该多核处理器系统执行权利要求1的该方法。
22.一种存储程序代码的非短暂计算机可读介质,其特征在于,当多核处理器系统执行该程序代码时,引发该多核处理器系统执行权利要求11的该方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361904072P | 2013-11-14 | 2013-11-14 | |
US61/904,072 | 2013-11-14 | ||
PCT/CN2014/091086 WO2015070789A1 (en) | 2013-11-14 | 2014-11-14 | Task scheduling method and related non-transitory computer readable medium for dispatching task in multi-core processor system based at least partly on distribution of tasks sharing same data and/or accessing same memory address (es) |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104995603A true CN104995603A (zh) | 2015-10-21 |
Family
ID=53056788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480003215.7A Pending CN104995603A (zh) | 2013-11-14 | 2014-11-14 | 至少部分基于共享相同数据及/或存取相同存储地址的任务分布的任务调度方法以及多核处理器系统中用于分配任务的相关非暂时性计算机可读介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20150324234A1 (zh) |
CN (1) | CN104995603A (zh) |
WO (1) | WO2015070789A1 (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107871301A (zh) * | 2016-09-23 | 2018-04-03 | 想象技术有限公司 | 在gpu中的任务调度 |
CN109271240A (zh) * | 2018-08-05 | 2019-01-25 | 温州职业技术学院 | 一种基于多核处理的进程调度方法 |
CN109791506A (zh) * | 2016-10-10 | 2019-05-21 | 瑞典爱立信有限公司 | 任务调度 |
CN110569122A (zh) * | 2018-06-05 | 2019-12-13 | 三星电子株式会社 | 多处理器系统、多核处理设备及其操作方法 |
CN110837415A (zh) * | 2018-08-17 | 2020-02-25 | 北京嘉楠捷思信息技术有限公司 | 一种基于risc-v多核处理器的线程调度方法和装置 |
CN111209112A (zh) * | 2019-12-31 | 2020-05-29 | 杭州迪普科技股份有限公司 | 一种异常处理方法及装置 |
CN112148295A (zh) * | 2019-06-27 | 2020-12-29 | 富士通株式会社 | 信息处理设备和记录介质 |
CN112241320A (zh) * | 2019-07-17 | 2021-01-19 | 华为技术有限公司 | 资源分配方法、存储设备和存储系统 |
CN112650574A (zh) * | 2020-12-31 | 2021-04-13 | 广州技象科技有限公司 | 基于优先级的任务调度方法、装置、系统和存储介质 |
CN112764895A (zh) * | 2020-12-31 | 2021-05-07 | 广州技象科技有限公司 | 多核物联网芯片的任务调度方法、装置、系统和存储介质 |
CN112764896A (zh) * | 2020-12-31 | 2021-05-07 | 广州技象科技有限公司 | 基于备用队列的任务调度方法、装置、系统和存储介质 |
WO2022111466A1 (zh) * | 2020-11-24 | 2022-06-02 | 北京灵汐科技有限公司 | 任务调度方法、控制方法、电子设备、计算机可读介质 |
US11687364B2 (en) * | 2019-07-30 | 2023-06-27 | Samsung Electronics Co., Ltd. | Methods and apparatus for cache-aware task scheduling in a symmetric multi-processing (SMP) environment |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9858115B2 (en) * | 2013-10-30 | 2018-01-02 | Mediatek Inc. | Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core processor system and related non-transitory computer readable medium |
JP6206254B2 (ja) * | 2014-03-04 | 2017-10-04 | 富士通株式会社 | 重複パケット除去方法及びプログラム |
KR20160061726A (ko) * | 2014-11-24 | 2016-06-01 | 삼성전자주식회사 | 인터럽트 핸들링 방법 |
US20160188376A1 (en) * | 2014-12-26 | 2016-06-30 | Universidad De Santiago De Chile | Push/Pull Parallelization for Elasticity and Load Balance in Distributed Stream Processing Engines |
US9880953B2 (en) * | 2015-01-05 | 2018-01-30 | Tuxera Corporation | Systems and methods for network I/O based interrupt steering |
US9697124B2 (en) * | 2015-01-13 | 2017-07-04 | Qualcomm Incorporated | Systems and methods for providing dynamic cache extension in a multi-cluster heterogeneous processor architecture |
US10175885B2 (en) * | 2015-01-19 | 2019-01-08 | Toshiba Memory Corporation | Memory device managing data in accordance with command and non-transitory computer readable recording medium |
US10042773B2 (en) * | 2015-07-28 | 2018-08-07 | Futurewei Technologies, Inc. | Advance cache allocator |
US10360063B2 (en) * | 2015-09-23 | 2019-07-23 | Qualcomm Incorporated | Proactive resource management for parallel work-stealing processing systems |
ITUA20161426A1 (it) * | 2016-03-07 | 2017-09-07 | Ibm | Dispaccio di lavori per esecuzione in parallelo da processori multipli |
CN105893126B (zh) | 2016-03-29 | 2019-06-11 | 华为技术有限公司 | 一种任务调度方法及装置 |
US10552205B2 (en) * | 2016-04-02 | 2020-02-04 | Intel Corporation | Work conserving, load balancing, and scheduling |
CN106055409B (zh) * | 2016-05-31 | 2017-11-14 | 广东欧珀移动通信有限公司 | 一种处理器资源的分配方法及移动终端 |
US10146583B2 (en) * | 2016-08-11 | 2018-12-04 | Samsung Electronics Co., Ltd. | System and method for dynamically managing compute and I/O resources in data processing systems |
US10204060B2 (en) | 2016-09-13 | 2019-02-12 | International Business Machines Corporation | Determining memory access categories to use to assign tasks to processor cores to execute |
US10169248B2 (en) | 2016-09-13 | 2019-01-01 | International Business Machines Corporation | Determining cores to assign to cache hostile tasks |
CN107357662A (zh) * | 2017-07-21 | 2017-11-17 | 郑州云海信息技术有限公司 | 一种服务端信息采集任务的负载均衡方法及系统 |
US10817338B2 (en) | 2018-01-31 | 2020-10-27 | Nvidia Corporation | Dynamic partitioning of execution resources |
US11307903B2 (en) * | 2018-01-31 | 2022-04-19 | Nvidia Corporation | Dynamic partitioning of execution resources |
CN108549574B (zh) * | 2018-03-12 | 2022-03-15 | 深圳市万普拉斯科技有限公司 | 线程调度管理方法、装置、计算机设备和存储介质 |
KR102641520B1 (ko) * | 2018-11-09 | 2024-02-28 | 삼성전자주식회사 | 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 태스크 스케줄링 방법 |
US10942775B2 (en) * | 2019-03-01 | 2021-03-09 | International Business Machines Corporation | Modified central serialization of requests in multiprocessor systems |
CN110795222B (zh) * | 2019-10-25 | 2022-03-22 | 北京浪潮数据技术有限公司 | 一种多线程任务调度方法、装置、设备及可读介质 |
WO2021120179A1 (zh) | 2019-12-20 | 2021-06-24 | 京东方科技集团股份有限公司 | 产品制造消息处理方法、设备和计算机存储介质 |
CN111831409B (zh) * | 2020-07-01 | 2022-07-15 | Oppo广东移动通信有限公司 | 线程调度方法、装置、存储介质及电子设备 |
WO2022088082A1 (zh) * | 2020-10-30 | 2022-05-05 | 京东方科技集团股份有限公司 | 基于缺陷检测的任务处理方法、装置及设备及存储介质 |
WO2022088074A1 (zh) * | 2020-10-30 | 2022-05-05 | 华为技术有限公司 | 基于多指令引擎的指令处理方法及处理器 |
US11645113B2 (en) * | 2021-04-30 | 2023-05-09 | Hewlett Packard Enterprise Development Lp | Work scheduling on candidate collections of processing units selected according to a criterion |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1577281A (zh) * | 2003-06-27 | 2005-02-09 | 株式会社东芝 | 调度方法和信息处理系统 |
CN102193779A (zh) * | 2011-05-16 | 2011-09-21 | 武汉科技大学 | 一种面向MPSoC的多线程调度方法 |
US20130047162A1 (en) * | 2011-08-19 | 2013-02-21 | Canon Kabushiki Kaisha | Efficient cache reuse through application determined scheduling |
US20130212594A1 (en) * | 2012-02-15 | 2013-08-15 | Electronics And Telecommunications Research Institute | Method of optimizing performance of hierarchical multi-core processor and multi-core processor system for performing the method |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001167060A (ja) * | 1999-12-07 | 2001-06-22 | Hitachi Ltd | タスク並列化方法 |
US20020099759A1 (en) * | 2001-01-24 | 2002-07-25 | Gootherts Paul David | Load balancer with starvation avoidance |
US7178145B2 (en) * | 2001-06-29 | 2007-02-13 | Emc Corporation | Queues for soft affinity code threads and hard affinity code threads for allocation of processors to execute the threads in a multi-processor system |
US7143412B2 (en) * | 2002-07-25 | 2006-11-28 | Hewlett-Packard Development Company, L.P. | Method and apparatus for optimizing performance in a multi-processing system |
US20050210472A1 (en) * | 2004-03-18 | 2005-09-22 | International Business Machines Corporation | Method and data processing system for per-chip thread queuing in a multi-processor system |
US8051418B1 (en) * | 2005-03-21 | 2011-11-01 | Oracle America, Inc. | Techniques for providing improved affinity scheduling in a multiprocessor computer system |
US7865895B2 (en) * | 2006-05-18 | 2011-01-04 | International Business Machines Corporation | Heuristic based affinity dispatching for shared processor partition dispatching |
US8813080B2 (en) * | 2007-06-28 | 2014-08-19 | Intel Corporation | System and method to optimize OS scheduling decisions for power savings based on temporal characteristics of the scheduled entity and system workload |
US8156495B2 (en) * | 2008-01-17 | 2012-04-10 | Oracle America, Inc. | Scheduling threads on processors |
US8739165B2 (en) * | 2008-01-22 | 2014-05-27 | Freescale Semiconductor, Inc. | Shared resource based thread scheduling with affinity and/or selectable criteria |
US8166254B2 (en) * | 2008-06-06 | 2012-04-24 | International Business Machines Corporation | Hypervisor page fault processing in a shared memory partition data processing system |
US8332852B2 (en) * | 2008-07-21 | 2012-12-11 | International Business Machines Corporation | Thread-to-processor assignment based on affinity identifiers |
US8245234B2 (en) * | 2009-08-10 | 2012-08-14 | Avaya Inc. | Credit scheduler for ordering the execution of tasks |
US8631415B1 (en) * | 2009-08-25 | 2014-01-14 | Netapp, Inc. | Adjustment of threads for execution based on over-utilization of a domain in a multi-processor system by sub-dividing parallizable group of threads to sub-domains |
US8180973B1 (en) * | 2009-12-23 | 2012-05-15 | Emc Corporation | Servicing interrupts and scheduling code thread execution in a multi-CPU network file server |
US20110202640A1 (en) * | 2010-02-12 | 2011-08-18 | Computer Associates Think, Inc. | Identification of a destination server for virtual machine migration |
US8381004B2 (en) * | 2010-05-26 | 2013-02-19 | International Business Machines Corporation | Optimizing energy consumption and application performance in a multi-core multi-threaded processor system |
US8661435B2 (en) * | 2010-09-21 | 2014-02-25 | Unisys Corporation | System and method for affinity dispatching for task management in an emulated multiprocessor environment |
CN104040500B (zh) * | 2011-11-15 | 2018-03-30 | 英特尔公司 | 基于线程相似性的调度线程执行 |
US9075610B2 (en) * | 2011-12-15 | 2015-07-07 | Intel Corporation | Method, apparatus, and system for energy efficiency and energy conservation including thread consolidation |
US9146609B2 (en) * | 2012-11-20 | 2015-09-29 | International Business Machines Corporation | Thread consolidation in processor cores |
US9152467B2 (en) * | 2013-01-18 | 2015-10-06 | Nec Laboratories America, Inc. | Method for simultaneous scheduling of processes and offloading computation on many-core coprocessors |
-
2014
- 2014-11-14 CN CN201480003215.7A patent/CN104995603A/zh active Pending
- 2014-11-14 US US14/650,862 patent/US20150324234A1/en not_active Abandoned
- 2014-11-14 WO PCT/CN2014/091086 patent/WO2015070789A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1577281A (zh) * | 2003-06-27 | 2005-02-09 | 株式会社东芝 | 调度方法和信息处理系统 |
CN102193779A (zh) * | 2011-05-16 | 2011-09-21 | 武汉科技大学 | 一种面向MPSoC的多线程调度方法 |
US20130047162A1 (en) * | 2011-08-19 | 2013-02-21 | Canon Kabushiki Kaisha | Efficient cache reuse through application determined scheduling |
US20130212594A1 (en) * | 2012-02-15 | 2013-08-15 | Electronics And Telecommunications Research Institute | Method of optimizing performance of hierarchical multi-core processor and multi-core processor system for performing the method |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107871301A (zh) * | 2016-09-23 | 2018-04-03 | 想象技术有限公司 | 在gpu中的任务调度 |
US11720399B2 (en) | 2016-09-23 | 2023-08-08 | Imagination Technologies Limited | Task scheduling in a GPU using wakeup event state data |
CN107871301B (zh) * | 2016-09-23 | 2023-06-09 | 想象技术有限公司 | 在gpu中的任务调度 |
CN109791506A (zh) * | 2016-10-10 | 2019-05-21 | 瑞典爱立信有限公司 | 任务调度 |
CN109791506B (zh) * | 2016-10-10 | 2023-05-09 | 瑞典爱立信有限公司 | 任务调度 |
US12020065B2 (en) | 2018-06-05 | 2024-06-25 | Samsung Electronics Co., Ltd. | Hierarchical processor selection |
CN110569122B (zh) * | 2018-06-05 | 2024-06-07 | 三星电子株式会社 | 多处理器系统、多核处理设备及其操作方法 |
CN110569122A (zh) * | 2018-06-05 | 2019-12-13 | 三星电子株式会社 | 多处理器系统、多核处理设备及其操作方法 |
CN109271240A (zh) * | 2018-08-05 | 2019-01-25 | 温州职业技术学院 | 一种基于多核处理的进程调度方法 |
CN110837415B (zh) * | 2018-08-17 | 2024-04-26 | 嘉楠明芯(北京)科技有限公司 | 一种基于risc-v多核处理器的线程调度方法和装置 |
CN110837415A (zh) * | 2018-08-17 | 2020-02-25 | 北京嘉楠捷思信息技术有限公司 | 一种基于risc-v多核处理器的线程调度方法和装置 |
CN112148295A (zh) * | 2019-06-27 | 2020-12-29 | 富士通株式会社 | 信息处理设备和记录介质 |
CN112241320A (zh) * | 2019-07-17 | 2021-01-19 | 华为技术有限公司 | 资源分配方法、存储设备和存储系统 |
CN112241320B (zh) * | 2019-07-17 | 2023-11-10 | 华为技术有限公司 | 资源分配方法、存储设备和存储系统 |
US11861196B2 (en) | 2019-07-17 | 2024-01-02 | Huawei Technologies Co., Ltd. | Resource allocation method, storage device, and storage system |
US11687364B2 (en) * | 2019-07-30 | 2023-06-27 | Samsung Electronics Co., Ltd. | Methods and apparatus for cache-aware task scheduling in a symmetric multi-processing (SMP) environment |
CN111209112A (zh) * | 2019-12-31 | 2020-05-29 | 杭州迪普科技股份有限公司 | 一种异常处理方法及装置 |
WO2022111466A1 (zh) * | 2020-11-24 | 2022-06-02 | 北京灵汐科技有限公司 | 任务调度方法、控制方法、电子设备、计算机可读介质 |
CN112764896A (zh) * | 2020-12-31 | 2021-05-07 | 广州技象科技有限公司 | 基于备用队列的任务调度方法、装置、系统和存储介质 |
CN112764895A (zh) * | 2020-12-31 | 2021-05-07 | 广州技象科技有限公司 | 多核物联网芯片的任务调度方法、装置、系统和存储介质 |
CN112650574A (zh) * | 2020-12-31 | 2021-04-13 | 广州技象科技有限公司 | 基于优先级的任务调度方法、装置、系统和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2015070789A1 (en) | 2015-05-21 |
US20150324234A1 (en) | 2015-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104995603A (zh) | 至少部分基于共享相同数据及/或存取相同存储地址的任务分布的任务调度方法以及多核处理器系统中用于分配任务的相关非暂时性计算机可读介质 | |
US10545789B2 (en) | Task scheduling for highly concurrent analytical and transaction workloads | |
US9514051B2 (en) | Cache memory with unified tag and sliced data | |
CN101539798B (zh) | 多核和功率的中断平衡 | |
US8132172B2 (en) | Thread scheduling on multiprocessor systems | |
KR101834195B1 (ko) | 다중코어 시스템 및 로드 밸런싱 방법 | |
US20140208331A1 (en) | Methods of processing core selection for applications on manycore processors | |
US20050071564A1 (en) | Reduction of cache miss rates using shared private caches | |
US20100217868A1 (en) | Microprocessor with software control over allocation of shared resources among multiple virtual servers | |
US20110145505A1 (en) | Assigning Cache Priorities to Virtual/Logical Processors and Partitioning a Cache According to Such Priorities | |
CN103927225A (zh) | 一种多核心架构的互联网信息处理优化方法 | |
CN108549574A (zh) | 线程调度管理方法、装置、计算机设备和存储介质 | |
US20130097382A1 (en) | Multi-core processor system, computer product, and control method | |
WO2016195274A1 (en) | Method for scheduling entity in multi-core processor system | |
Xu et al. | Dag-aware joint task scheduling and cache management in spark clusters | |
CN101401071A (zh) | 利用存储和预留指令执行高速缓存线轮询操作的方法、系统、设备和产品 | |
US20190121419A1 (en) | Reducing Power by Vacating Subsets of CPUs and Memory | |
Sun et al. | HPSO: Prefetching based scheduling to improve data locality for MapReduce clusters | |
Zhao et al. | Gpu-enabled function-as-a-service for machine learning inference | |
Chiang et al. | Enhancing inter-node process migration for load balancing on linux-based NUMA multicore systems | |
JP6135392B2 (ja) | キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法 | |
CN116820773A (zh) | 一种gpgpu寄存器缓存管理系统 | |
US20220114097A1 (en) | System performance management using prioritized compute units | |
Bitalebi et al. | Criticality-aware priority to accelerate GPU memory access | |
US20140223109A1 (en) | Hardware prefetch management for partitioned environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20151021 |
|
WD01 | Invention patent application deemed withdrawn after publication |