CN102027452B - 调度器中的调度集合 - Google Patents

调度器中的调度集合 Download PDF

Info

Publication number
CN102027452B
CN102027452B CN200980118323.8A CN200980118323A CN102027452B CN 102027452 B CN102027452 B CN 102027452B CN 200980118323 A CN200980118323 A CN 200980118323A CN 102027452 B CN102027452 B CN 102027452B
Authority
CN
China
Prior art keywords
scheduling
group
task
scheduler
node
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.)
Active
Application number
CN200980118323.8A
Other languages
English (en)
Other versions
CN102027452A (zh
Inventor
P·F·林塞斯
G·弗纳德斯
N·古斯塔夫松
R·莫洛伊
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN102027452A publication Critical patent/CN102027452A/zh
Application granted granted Critical
Publication of CN102027452B publication Critical patent/CN102027452B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/483Multiproc

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

计算机系统的进程中的调度器包括对应于调度器中的每一个调度节点的相应调度集合。基于一个或多个执行度量,将调度集合映射到至少部分搜索顺序。当在调度节点中的处理资源变得可用时,在按由搜索顺序所指定的顺序搜索其他调度集合之前,该处理资源首先尝试在与调度节点相对应的调度集合中定位要执行的任务。

Description

调度器中的调度集合
背景
在计算机系统中执行的进程可包括调度进程的任务以便在计算机系统中执行的任务调度器。这些调度器可以与确定进程的任务如何被执行的各种算法一起操作。在带有多个处理资源的计算机系统中,当处理资源在调度器中搜索要执行的任务时可能彼此发生竞争。在利用调度器执行进程时,竞争往往导致降低计算机系统的效率,并且竞争的程度通常会随着计算机系统中的处理资源的数量增大而加剧。结果,随着计算机系统中的处理资源的数量的增大,对处理资源的竞争可能会限制调度器的可缩放性。
发明内容
提供本发明内容是为了以精简的形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。
计算机系统的进程中的调度器包括对应于调度器中的每一个调度节点的相应调度集合。调度器利用一群调度组填充每一个调度集合,其中,每一个调度组都包括进程的一组任务。基于一个或多个执行度量,将调度集合映射到至少部分搜索顺序。当在调度节点中的处理资源变得可用时,该处理资源尝试在与调度节点相对应的调度集合中定位要执行的任务。如果处理资源不能在调度集合中定位到要执行的任务,则该处理资源尝试按由搜索顺序所指定的顺序在其他调度集合中定位要执行的任务。
附图简述
各个附图被包括以提供对实施例的进一步理解,各个附图被收入并构成本说明书的一部分。附图示出了实施例,并与说明书一起,用于说明各实施例的原理。通过参考以下详细描述,可更易于领会并更好地理解其他实施例以及各实施例的许多预期的优点。附图的元素相对于彼此不一定是按比例绘制的。相同的附图标记表示对应的类似的部分。
图1是示出了在运行时环境中带有调度集合的调度器的实施例的框图。
图2是示出了用于在调度器中创建和填充调度集合的方法的实施例的流程图。
图3A-3B是示出了调度集合的映射的实施例的图示和表。
图4是示出了用于选择任务来执行的方法的实施例的流程图。
图5A-5B是示出了调度集合的实施例的框图。
图6A-6B是示出了被配置成实现包括带有调度集合的调度器的运行时环境的计算机系统的实施例的框图。
具体实施方式
在下面的详细描述中,将参考构成本发明的一部分的附图,并且附图中作为说明示出了其中可实施本发明的具体实施例。关于这一点,诸如“顶部”、“底部”、“正面”、“背面”、“引导”、“尾随”等等之类的方向性术语参考所描述的图形的朝向地使用。由于各实施例的组件可以被定位于若干个不同的朝向,因此,方向性术语只用于说明,而绝不作为限制。应该理解,在不偏离本发明的范围的情况下,可以利用其他实施例,也可以进行结构性的或逻辑性更改。因此,下面的详细描述不是在限制性的意义上进行的,并且本发明的范围由所附权利要求来进行定义。
可以理解,此处所描述的各示例性实施例的特点可以彼此相结合,除非另外特别声明。
图1是示出了运行时环境10的进程12中的执行上下文调度器22的实施例的框图。调度器22包括一组调度集合40(1)-40(L),其中,L是大于或等于2的整数,并表示第L个调度集合40。每一个调度集合40(1)-40(L)都与相应的调度节点30(1)-30(L)相对应。
运行时环境10表示计算机系统中的操作的运行时模式,诸如,如图6A和6B所示的并在下面的附加细节中所描述的计算机系统100的实施例100A和100B,其中,计算机系统在执行指令。计算机系统从诸如如图6A所示并在下面的附加细节中所描述的运行时平台122之类的运行时平台生成运行时环境10。
运行时环境10包括至少一个被调用的进程12、资源管理层14和一组硬件线程16(1)-16(M),其中,M是大于或等于2的整数并表示第M个硬件线程16。运行时环境10允许通过使用资源管理层14和硬件线程16(1)-16(M)来执行进程12中的任务以及与进程12共存的任何其他进程的任务(未示出)。运行时环境10结合资源管理层14来操作,以允许进程12获取处理器及计算机系统的其他资源(例如,硬件线程16(1)-16(M))。
运行时环境10包括生成调度器22的调度器功能。在一个实施例中,调度器功能被实现为调度器应用程序编程接口(API)。在其他实施例中,可以使用其他合适的编程构造来实现调度器功能。当调度器功能被调用时,调度器功能在进程22中创建调度器22,其中,调度器22操作用于调度进程12的任务来供一个或多个硬件线程16(1)-16(M)来执行。运行时环境10可以利用应用程序或库开发人员使用知晓调度器功能所提供的设施的附带工具在他们的程序(例如,进程12)中表达的细粒度并发。
进程12包括对主存一个或多个执行上下文(即,线程)的处理资源及其他资源的分配。进程12从资源管理层14获取对计算机系统中的处理资源及其他资源(例如,硬件线程16(1)-16(M))的访问。进程12导致使用处理及其他资源来执行任务。
进程12生成可变长度的任务形式的工作,其中,每一个任务都与调度器22中的执行上下文相关联。每一个任务都包括当由计算机系统执行时执行工作单元的指令序列。每一个执行上下文都形成在所分配的处理资源上执行相关联任务的线程。每一个执行上下文都包括程序状态和机器状态信息。当没有更多任务要执行时,执行上下文可以结束。对于每一个任务,运行时环境10和/或进程12或者将任务指派给调度器22供调度加以执行,或者以其他方式导致任务被执行而无需使用调度器22。
进程12可以被配置成基于任何合适的执行模型——如堆栈模型或解释器模型——在计算机系统中操作,并且可以表示任何合适类型的代码,诸如应用程序、库函数或操作系统服务。进程12具有与包括所定义的存储器地址空间的一组分配的资源相关联的程序状态和机器状态。进程12相对于运行时环境10中的任何共存的进程自主地或基本上自主地执行。因此,进程12不会不利地改变共存的进程的程序状态或分配给共存的进程的任何资源的机器状态。类似地,共存的进程不会不利地改变进程12的程序状态或分配给进程12的任何资源的机器状态。
资源管理层14通过将一个或多个硬件线程16指派给进程12来向进程12分配处理资源。资源管理层14与图1的实施例中的计算机系统的操作系统(在图1中未示出)分开。在其他实施例中,在操作系统中可以包括资源管理层14或其一些或全部功能。
硬件线程16驻留在计算机系统的一组或者一个或多个处理器包(例如,如图6所示并在下面的附加细节中所描述的处理器包102)的执行核心中。每一个硬件线程16都被配置成相对于其他执行核心独立地或基本上独立地执行指令,并包括机器状态。硬件线程16可以被包括在单个处理器包中,或者可以跨多个处理器包分布。处理器包中的每一个执行核心可包括一个或多个硬件线程16。
进程12隐式地或显式地导致经由由运行时环境10所提供的调度器功能创建调度器22。当进程12使用计算机系统中可用的API或编程语言特征时,调度器22可以被隐式地创建。响应于API或编程语言特征,运行时环境10利用默认策略创建调度器22。为了显式地创建调度器22,进程12可以调用由运行时环境10所提供的调度器功能,并为调度器22指定策略。
调度器22与资源管理层14进行交互,以便以对进程12透明的方式协商计算机系统的资源。资源管理层14基于供应和需求以及调度器22的任何策略,向调度器22分配硬件线程16。
在图1所示的实施例中,调度器22通过创建形成底层硬件线程16的抽象的虚拟处理器32来管理处理资源。调度器22通过将每一个虚拟处理器32映射到硬件线程16,来将虚拟处理器32多路复用到硬件线程16上。调度器22可以将一个以上的虚拟处理器32映射到特定硬件线程16,但是只将一个硬件线程16映射到每一个虚拟处理器32。在其他实施例中,调度器22以其他合适的方式来管理处理资源,以使进程12的指令被硬件线程16执行。
运行时环境10在知道计算机系统的基础拓扑的情况下创建调度器22。运行时环境10向资源管理层14和/或调度器22提供计算机系统的节点信息。节点信息直接标识计算机系统的硬件节点,或者包括足够的有关计算机系统的拓扑的信息,以允许资源管理层14和/或调度器22基于一个或多个执行度量来将硬件资源划分成调度节点30。执行度量可包括计算机系统的处理资源(例如,硬件线程16)、存储器资源,和/或其他资源的速度、类型,和/或配置。
例如,在其中计算机系统的拓扑包括高速缓存相干非一致性存储器访问(NUMA)体系结构的各实施例中,节点信息可以标识一组两个或更多NUMA节点,其中,每一个NUMA节点都包括一组硬件线程16和本地存储器。节点信息也可以包括描述NUMA节点之间的存储器访问的信息(例如,NUMA距离或存储器访问拓扑或时间)。
在另一示例中,节点信息可以描述处理资源(例如,硬件线程16)的速度、类型,和/或配置,以允许基于处理资源的特性之间的相似度或差异,对处理资源进行编组。这些特性可包括处理资源中的一个或多个的指令集的类型,以允许根据具有不同类型的指令集的处理资源组来形成不同的节点。
运行时环境10使得调度器22基于节点信息包括一组两个或更多调度节点30(1)-30(L)。每一个调度节点30都包括虚拟处理器32和硬件线程16的形式的已分配处理资源。调度节点30(1)包括映射到硬件线程16(1)-16(m1)的虚拟处理器30(1)-30(N1),其中,N1是大于或等于1的整数,并表示第(N1)个虚拟处理器30,而m1小于或等于M,并表示第(m1)个硬件线程16。调度节点30(L)包括映射到硬件线程L6(mm)-L6(M)的虚拟处理器30(L)-30(NL),其中,NL是大于或等于1的整数,并表示第(NL)个虚拟处理器30,而mm小于或等于M,大于m1,并表示第(mm)个硬件线程16。
调度器22为每一个调度节点30创建调度集合40。因此,调度集合40(1)-40(L)与如由箭头37(1)-37(L)所指示的相应的调度节点30(1)-30(L)相对应。调度器22基于一个或多个执行度量,将调度集合40映射到完全或部分搜索顺序,并当有处理资源可用时,使用该搜索顺序来搜索要执行的任务,如下文在附加细节中所描述的。
调度器22中的执行上下文组包括一组执行上下文34,这些上下文34带有正在由每一个调度节点30中的相应虚拟处理器32执行的相应相关联的任务36,并且,在每一个调度集合40中,包括一组零个或多个可运行的执行上下文38以及一组零个或多个被阻止的(即,等待依赖的)执行上下文40。每一个执行上下文34,38和40都包括指示执行上下文34,38和40是正在执行、可运行(例如,响应于被解除阻止或被添加到调度器22),还是被阻止的状态信息。正在执行的执行上下文34已经被附加到虚拟处理器32,并且当前正在执行。可运行的执行上下文38包括相关联的任务39,并随时可被可用的虚拟处理器32执行。被阻止的执行上下文40包括相关联的任务41,并且正在等待正由另一执行上下文34,38或40生成的或将由其生成的数据,消息或事件。
在虚拟处理器32上执行的每一个执行上下文34,在其执行的过程中,可以生成以任何合适的方式组织的附加任务42(例如,添加到工作队列中(在图1中未示出))。在一个实施例中,可以通过使用由运行时环境10所提供的应用程序编程接口(API)或编程语言特征及相应工具,来创建工作。当有处理资源可为调度器22所用时,将任务指派给执行上下文34或38,这些执行上下文34或38在领取新任务之前在虚拟处理器32上将它们执行到完成。在虚拟处理器32上执行的执行上下文34也可以通过生成将被另一执行上下文40使用的数据、消息或事件来对其他执行上下文40解除阻止。
可以实现调度器22中的每一个任务(例如,已实现的任务36和39),这指示执行上下文34或38已经被附加到或将被附加到任务,并且任务随时可执行。已实现的任务通常包括被解除阻止的执行上下文并被调度的代理。没有被实现的任务称为未实现的。未实现的任务可被创建为通过父任务的执行而生成的子任务(例如,任务42),也可以通过并行构造(例如,并行,并行地开始以及结束)来生成。对于带有执行上下文的在逻辑上独立的任务(即,已实现的任务)以及依赖的任务(即,未实现的任务)的工作窃取(workstealing)队列的列表,调度器22中的每一个调度集合40都可以被组织成一个或多个同步的集合(例如,堆栈和/或队列),如下面所描述的图5A实施例所示。
一旦在虚拟处理器32上运行的执行上下文34完成、被阻止或其他中断(例如,显式的让步或被迫使的抢先),虚拟处理器32就变得可为另一实现的任务39或未实现的任务42所用。调度器22搜索可运行的执行上下文38或未实现的任务42,以附加于可用虚拟处理器32来执行。调度器22继续将执行上下文38附加到可用虚拟处理器32来执行,直到已执行调度器22的所有执行上下文38。
当在调度节点中的虚拟处理器32变得可用时,该虚拟处理器32尝试在与调度节点30相对应的调度集合40中定位要执行的任务。如果虚拟处理器32不能在调度集合40中定位到要执行的任务,则该虚拟处理器32尝试按由搜索顺序所指定的顺序在其他调度集合40中定位要执行的任务。在一个实施例中,调度器22可包括可配置延迟参数,该参数使可用虚拟处理器32延迟对其他调度集合40的搜索,以尝试最小化与其他可用虚拟处理器32的竞争。也可以使用延迟参数来按优先级处理在与可用虚拟处理器32的调度节点30相对应的调度集合40中对工作的搜索。
图2是示出了用于在调度器22中创建和填充调度集合40的方法的实施例的流程图。将参考图1中的调度器22的实施例来描述图2的方法。
在图2中,如在框52所表示的,运行时环境10,和/或资源管理层14基于一个或多个执行度量标识调度节点30。执行度量可以是计算机系统中的执行指令的任何合适的度量,并可包括计算机系统中的处理资源及其他资源的处理速度、处理吞吐量,以及存储器等待时间特性。使用为计算机系统的各组组件确定的执行度量,运行时环境10,和/或资源管理层14划分计算机系统的处理资源及其他资源,并使用这些划分来为调度器22标识调度节点30。调度节点30各自包括数组类似的或不类似的计算机系统的处理资源及其他资源集。
在一个示例中,计算机系统可包括包含多个硬件线程16的处理器。在此示例中,运行时环境10,和/或资源管理层14可以将每一个处理器包划分到单独的节点,并为每一个节点创建调度节点30。
在另一示例中,在NUMA系统中,可以将处理器之间以及存储器的不同部分之间的存储器延迟的差异用作执行度量以将计算机系统分割成NUMA节点,并为每一个NUMA节点创建调度节点30。NUMA节点可以各自具有一组处理资源和本地存储器,其中,一个NUMA节点内的处理资源对本地存储器的访问比处理资源对另一NUMA节点中的本地存储器的访问更快。
在另一个示例中,运行时环境10,和/或资源管理层14可以将计算机系统中的处理器资源的任意组或部分地任意的组划分为多个节点,并为每一个节点创建调度节点30。
在再一个示例中,运行时环境10,和/或资源管理层14可以将不同类型或速度的处理资源划分为多个节点,其中,每一个节点包括若干个相同类型或速度的处理资源。运行时环境10,和/或资源管理层14为每一个节点创建调度节点30。
如在框54中所指示的,运行时环境10、资源管理层14,和/或调度器22为每一个调度节点30创建相应的调度集合40。如图1所示,调度器22创建与相应调度节点30(1)-30(L)相对应的调度集合40(1)-40(L)。每一个调度集合40形成计算机系统的存储器中用于存储任务的数据结构,其中,数据结构可由来自对应的调度节点30的虚拟处理器32和来自其他调度节点30的虚拟处理器32进行搜索。
如在框56中所指示的,运行时环境10、资源管理层14,和/或调度器22基于一个或多个执行度量将调度集合40(1)-40(L)映射到完全或部分搜索顺序。调度器22使用执行度量来比较不同调度节点30之间的执行成本。可以根据节点距离来描述执行成本,其中,不同节点距离表达给定调度节点30及其他调度节点30之间的不同执行特性。利用节点距离,相对于给定调度节点30具有较低的执行成本的调度节点30被描述为与该给定调度节点30更靠近,而相对于该给定调度节点30具有较高的执行成本的调度节点30被描述为远离该给定调度节点30。在一个实施例中,调度器22使用节点距离将调度集合40(1)-40(L)映射到完全或部分搜索顺序。
为创建搜索顺序,调度器22基于节点距离将一组调度集合40编组为各自含一个或多个调度集合40的数个子集。每一个调度集合40都具有与对应的调度节点30相距为零的节点距离。因此,每一个调度集合40形成相应调度节点30的调度集合40的第一级子集(例如,级别0子集)。对于调度集合40的下一级别子集(例如,级别1子集),调度器22对与给定调度节点30的节点距离在最近范围内的一个或多个调度集合40的组进行编组。然后,调度器22将与给定调度节点30的节点距离在次最近范围内的一个或多个调度集合40的组编组到调度集合40的下一级别子集中(例如,级别2子集)。调度器22继续将与给定调度节点30的节点距离在逐次范围内的一个或多个调度集合40的组编组到调度集合40的逐次级别子集中,直到调度集合40组中的所有所希望的调度集合40都已经被包括到搜索顺序中。
调度集合40的搜索顺序被调度节点30中的可用处理资源(即,虚拟处理器32)用来搜索要执行的任务。搜索顺序可以通过将一个以上的调度集合编组到至少一些子集中(例如,与同给定调度节点30相距相同节点距离或类似的节点距离的调度节点30的子集相对应的两个或更多调度集合40的子集)来指定部分搜索顺序。在指定了部分顺序的情况下,处理资源可以以循环复用或其他合适的顺序来搜索调度集合40的子集。搜索顺序也可以通过只将一个调度集合40编组在每一个子集中或者指定含两个或更多调度集合40的每一个子集的搜索顺序,来指定完全搜索顺序。
图3A-3B是分别示出了带有四个处理器包——这四个处理器包包括四个硬件线程16的相应的组——的NUMA计算机系统61中的部分搜索顺序60的实施例的图示和表。相应的本地存储器连接到每一个处理器(未示出)。因为处理器包中的每一个硬件线程16都具有类似的执行度量,因此,每一个处理器包形成图3A-3B的示例中的级别0节点。因此,级别0调度节点30(1)包括硬件线程16(1)-16(4),级别0调度节点30(2)包括硬件线程16(5)-16(8),级别0调度节点30(3)包括硬件线程16(9)-16(12),而级别0调度节点30(4)包括硬件线程16(9)-16(12)。级别0调度节点30(1)-30(4)对应于调度集合40(1)-40(4)的相应的级别0子集。
如图3A所示,调度节点30(1)-30(2)共享节点30(1)-30(2)之间的互连62(1),调度节点30(1)-30(3)共享节点30(1)-30(3)之间的互连62(2),调度节点30(2)-30(4)共享节点30(2)-30(4)之间的互连62(3),而调度节点30(3)-30(4)共享节点30(3)-30(4)之间的互连62(4)。在图3A的示例中,假设互连62(1)-62(4)都具有相同速度和带宽特性。
共享互连62的任何两个节点30之间的节点距离小于不共享互连62的任何两个节点30之间的节点距离。例如,节点30(1)使用互连62(1)和62(3)两者或者互连62(2)和62(4)两者来访问节点30(4)。类似地,节点30(2)使用互连62(1)和62(2)两者或者互连62(3)和62(4)两者来访问节点30(3)。
从节点30(1),调度集合40的级别1子集包括对应于调度节点30(2)-30(3)的调度集合40(2)-40(3),而调度集合40的级别2子集包括对应于调度节点30(4)的调度集合40(4)。
从节点30(2),调度集合40的级别1子集包括对应于调度节点30(1)-30(4)的调度集合40(1)-40(4),而调度集合40的级别2子集包括对应于调度节点30(3)的调度集合40(3)。
从节点30(3),调度集合40的级别1子集包括对应于调度节点30(1)-30(4)的调度集合40(1)-40(4),而调度集合40的级别2子集包括对应于调度节点30(2)的调度集合40(2)。
从节点30(4),调度集合40的级别1子集包括对应于调度节点30(2)-30(3)的调度集合40(2)-40(3),而调度集合40的级别2子集包括对应于调度节点30(1)的调度集合40(1)。
回头参考图2,如在框58中所表示的,调度器22利用相应的任务组填充调度集合40(1)-40(M)。可以由进程12显式地或由运行时环境10隐式地创建呈现给调度器22的每一组一个或多个任务(例如,通过在没有父或不将操作系统执行上下文引导到调度器22的执行上下文的情况下创建代理)。调度器22根据任何合适的算法或根据调度节点30的拓扑,将任务组插入到调度集合40中。例如,调度器22可以按循环顺序将任务组插入到调度集合40中。作为另一个示例,调度器22可以将任务组插入到与调度节点30的所希望的拓扑相对应的调度集合中。
图4是示出了用于选择任务来执行的实施例的流程图。将参考图1中的调度器22的实施例来描述图4的方法。
如在框72中所表示的,调度器22确定虚拟处理器32是否变得可用。调度器22可以连续地执行此功能,同时导致进程12被执行。一旦在虚拟处理器32上运行的执行上下文34完成、被阻止或其他中断(例如,显式的让步或被迫使的抢先),有虚拟处理器32就变得可用于执行新任务。
当调度器22确定虚拟处理器32变得可用时,调度器22开始为可用虚拟处理器32搜索任务来执行。如在框74中所表示的,调度器22首先尝试在调度集合40的第一子集中定位要执行的任务。调度集合40的第一子集是与包括可用虚拟处理器32的调度节点30相对应的调度集合40。调度器22可以以任何合适的方式搜索第一子集。
如在框76中所表示的,如果在第一子集中找到可执行的任务,那么,调度器22使任务被虚拟处理器32执行。作为前一执行上下文34的继续,虚拟处理器32尝试执行任务。如果虚拟处理器32不能作为继续来执行任务,那么,虚拟处理器32执行至由任务所表示的执行上下文的完全操作系统上下文切换。
如在框78中所表示的,如果在第一子集中找不到可执行的任务,那么,调度器22确定搜索顺序是否指定了调度集合40的另一子集。如果第一级子集是由搜索顺序所指定的唯一子集,那么,调度器22继续搜索第一子集,直到定位了可执行的任务。
如在框80中所表示的,如果由搜索顺序指定了另一子集,那么,调度器22尝试在下一子集中的一个或多个调度集合40定位要执行的任务。如在框82中所表示的,如果在下一子集中的调度集合40中找到可执行的任务,那么,调度器22使任务由虚拟处理器32执行。如果在调度集合40的下一子集中找不到可执行的任务,那么,调度器22重复框78的功能。调度器22按指定的搜索顺序继续搜索调度集合40的子集,直到找到可执行的任务或者已经搜索了由搜索顺序所指定的所有子集。
在上面的实施例中,调度器22可以被配置成在移到下一子集之前,反复地搜索调度集合40的上面子集中的一个或多个。调度器22也可以被配置成根据一个或多个延迟参数,延迟对子集中的一个或多个的搜索。
在上面的实施例中,调度节点30有效地拥有相应调度集合40。在进程12的执行中的一些点,给定调度节点30的所有处理资源都可以执行来自除对应于给定调度节点30的调度集合40以外的调度集合40的任务。在此情形下,给定调度节点30的所拥有的调度集合40变为这样的调度集合40——给定调度节点30的大多数处理资源正在执行来自调度集合40的任务,而给定调度节点30变为闲逛节点。如果闲逛节点稍后具有正在执行来自最初拥有的调度集合40的任务的处理资源,那么,该闲逛节点再次变为最初拥有的调度集合40的拥有者。
图5A-5B是示出了调度集合40的相应实施例40A和40B的框图。
图5A是包括一群调度组90(1)-90(P)的调度集合40的实施例40A的框图,其中,P是大于或等于1的整数,并表示第P个调度组90。如由箭头96所指示的,该群调度组90(1)-90(P)按调度环来安排。每一个调度组90都包括可运行的集合92、工作队列93,以及一组零或多个工作窃取队列94。每一个可运行集合92都包含可运行的任务或执行上下文的列表。当执行上下文变成解除阻止或由进程12向调度器22呈现新的可运行的执行上下文(可能产生的需求)时,调度器22向可运行的集合92添加执行上下文。工作队列93包含如由箭头95所指示的工作窃取队列94的列表,并跟踪正在执行工作窃取队列93中的任务的执行上下文。每一个工作窃取队列94都包括没有被指派的执行上下文的一个或多个未实现的任务。
调度器22在任何时间(例如,响应于执行其他任务)利用零个或多个调度组90的相应群填充调度集合40A(图1),其中,每一个调度组90都包括进程12的一组任务。在这样的实施例中,在在另一调度集合40或40A中搜索任务之前,调度器22可以在调度集合40A中搜索每一个调度组90。
调度器22可以尝试在可用虚拟处理器32最近从其中获取了可执行的任务的调度组90中或在由索引97(例如,循环索引)所指出的调度组90定位要执行的任务。在每一个调度组90中,调度器22可以在在其他调度组90(例如,按循环复用顺序)中搜索已实现的任务之前,在调度组90的可运行的程序集合92中搜索已实现的任务。如果找不到已实现的任务,那么,调度器22可以在在其他调度组90(例如,按循环复用顺序)中搜索未实现的任务之前,在调度组90的工作窃取队列94中搜索未实现的任务。调度器22可以更新索引97,以标识其中找到了可执行的任务的调度组90。
进程12可以使用调度器22中的调度组90来为工作的局部性、公平性,以及向前进度提供结构。由于在逻辑上相关的工作(例如,由公共根任务传下来的任务集合)、硬件拓扑(例如,非一致性存储器体系结构(NUMA)),或其组合,因此可对每一个调度组90的任务进行编组。
图5B是示出了调度集合40的实施例40B的框图,该调度集合40包括与相应的虚拟处理器32(1)-32(N)相对应的本地任务集合44(1)-44(N)。
在其中一个或多个调度集合40包括本地集合44的各实施例中,调度器22中的执行上下文组在相应的本地集合44(1)-44(N)中也包括数组可运行的执行上下文46(1)-46(N)。每一个执行上下文46都具有被任务36的执行解除阻止的相关联任务47,其中,任务36已经被执行或当前在与包括执行上下文46的本地集合44相对应的虚拟处理器32上正在执行。
在在调度集合40B中的别处搜索之前,调度器22可以首先尝试在与可用虚拟处理器32相对应的本地集合44中定位任务。本地集合44可以允许调度器22利用可能在硬件线程16上发生的存储器局部性及其他效果。在执行进程12时,调度器22可以将被解除阻止的每一个等待依赖的执行上下文分配到与导致执行上下文被解除阻止的虚拟处理器32相对应的本地集合44。当虚拟处理器32变得可用时,虚拟处理器32可以尝试执行对应的本地集合44中最近最后添加的执行上下文,以尝试利用存储在与虚拟处理器32相对应的存储器层次结构中的数据。
如果在与可用的虚拟处理器32相对应的本地集合44中找不到可执行的任务,那么,调度器22可以尝试在与调度节点30的另一虚拟处理器32相对应的本地集合44中定位可执行的任务。调度器22按循环或其他合适的顺序访问与其他虚拟处理器32相对应的本地集合44,并可以执行在其中找到了可执行的任务的本地集合44中最近最早添加的执行上下文。
在其他实施例中,其他调度集合40可包括调度集合40A的调度组90(图5A)和调度集合40B的本地集合44(图5B)。
图6A-6B是分别示出了被配置成实现包括带有调度集合40的调度器22的运行时环境10的计算机系统100的实施例100A和100B的框图。
如图6A所示,计算机系统100A包括一个或多个处理器包102、存储器系统104、零个或多个输入/输出设备106、零个或多个显示设备108、零个或多个外围设备110,以及零个或多个网络设备112。处理器包102、存储器系统104、输入/输出设备106、显示设备108、外围设备110,以及网络设备112使用一组互连114进行通信,这些互连包括任何合适的类型、数量,以及配置的控制器、总线、接口,和/或其他有线或无线连接。
计算机系统100A表示被配置成用于一般用途或特定用途的任何合适的处理设备。计算机系统100A的示例包括服务器、个人计算机、膝上型计算机、平板计算机、个人数字助理(PDA)、移动电话,以及音频/视频设备。计算机系统100A的组件(即,处理器包102、存储器系统104、输入/输出设备106、显示设备108、外围设备110、网络设备112,以及互连114)可以包含在一个共同的外壳(未示出)中或任何合适的数量的单独的外壳(未示出)中。
处理器包102包括硬件线程16(1)-16(M)。处理器包102中的每一个硬件线程16被配置成访问和执行存储在存储器系统104中的指令。指令可包括基本输入输出系统(BIOS)或固件(未示出)、操作系统(OS)120、运行时平台122、应用程序124,以及资源管理层14(也如图1所示)。每一个硬件线程16都可以结合从输入/输出设备106、显示设备108、外围设备110,和/或网络设备112接收到的信息或响应于该信息来执行指令。
计算机系统100A引导并执行OS 120。OS 120包括可由处理器包102执行的指令,以管理计算机系统100A的组件,并提供允许应用程序124访问并使用组件的一组功能。在一个实施例中,OS 120是Windows操作系统。在其他实施例中,OS 120是适用于计算机系统100A的另一操作系统。
资源管理层14包括可结合OS 120执行的指令,以分配计算机系统100A的资源,包括如上文参考图1所描述的硬件线程16。资源管理层14可以作为对一个或多个应用程序124可用的功能库或作为OS 120的一个集成部分被包括在计算机系统100A中。
运行时平台122包括可结合OS 120和资源管理层14执行的指令,以生成运行时环境10并向应用程序124提供运行时功能。这些运行时功能包括如上文参考图1在附加细节中所描述的调度器功能。运行时功能可以作为应用程序124的一部分、作为可为一个或多个应用程序124所用的功能库,或作为OS 120和/或资源管理层14的一个集成部分,被包括在计算机系统100A中。
每一个应用程序124都包括可结合OS 120、资源管理层14,和/或运行时平台122执行的指令,以使所希望的操作由计算机系统100A来执行。每一个应用程序124都表示可以与如由运行时平台122所提供的调度器22一起执行的诸如如上文所描述的进程12之类的一个或多个进程。
存储器系统104包括任何合适的类型、数量、以及配置的被配置成存储指令和数据的易失性或非易失性存储器设备。存储器系统104的存储设备表示存储包括OS 120、资源管理层14、运行时平台122,以及应用程序124的计算机可执行指令的计算机可读存储介质。指令可由计算机系统执行,以执行此处所描述的OS 120、资源管理层14、运行时平台122,以及应用程序124的功能和方法。存储器系统104中的存储设备的示例包括硬盘驱动器、随机存取存储器(RAM)、只读存储器(ROM)、闪存驱动器和卡,以及磁盘和光盘。
存储器系统104存储从处理器包102、输入/输出设备106、显示设备108、外围设备110,以及网络设备112接收到的指令和数据。存储器系统104向处理器包102、输入/输出设备106、显示设备108、外围设备110,以及网络设备112提供所存储的指令和数据。
输入/输出设备106包括任何合适类型、数量、以及配置的输入/输出设备,它们被配置成从用户向计算机系统100A输入指令或数据,并从计算机系统100A向用户输出指令或数据。输入/输出设备106的示例包括键盘、鼠标、触摸板、触摸屏、按钮、转盘、旋钮,以及开关。
显示设备108包括任何合适的类型、数量、以及配置的显示设备,它们被配置成向计算机系统100A的用户输出文本和/或图形信息。显示设备108的示例包括监视器、显示屏幕,以及投影仪。
外围设备110包括任何合适的类型、数量、以及配置的外围设备,它们被配置成与计算机系统100A中的一个或多个其他组件一起操作,以执行一般或特定处理功能。
网络设备112包括任何合适的类型、数量、以及配置的网络设备,它们被配置成允许计算机系统100A跨一个或多个网络(未示出)进行通信。网络设备112可以根据任何合适的网络协议和/或配置来操作,以允许信息由计算机系统100A传输到网络或由计算机系统100A从网络接收。
图6B是示出了计算机系统100的实施例100B的框图。计算机系统100B还包括至少处理器包102和存储器系统104。处理器包102包括处理器包102(1)-102(R),而存储器系统104包括多组存储器设备128(1)-128(R),其中,R是大于或等于2的整数,并表示第R个处理器包102和第R组存储器设备128。OS 120、运行时平台122、应用程序124,以及资源管理层14可以各自存储在存储器设备104(1)-104(R)中的任何合适的存储器设备中。
在图6B的实施例中,每一个处理器包102(1)-102(R)和相应的一组存储器设备128(1)-128(R)形成一个节点。节点利用任何合适的类型、数量和/或组合的节点互连130相互连接。互连130的速度和/或带宽可以在各节点之间有所不同。
每一个处理器包102都包括一组硬件线程16(1)-16(4),其中,每一个硬件线程都包括L1(级别1)高速缓存(未示出)。每一个处理器包102还包括与相应的硬件线程16(1)(1)-16(1)(4)相对应的一组L2(级别2)高速缓存132(1)-132(4)。每一个处理器包102还包括可为该组硬件线程16(1)-16(4)、系统资源接口136、纵横开关138、存储器控制器140,以及节点接口142所用的L3(级别3)高速缓存。系统资源接口136提供对节点资源(未示出)的访问。纵横开关138将系统资源接口136与存储器控制器140以及节点接口142互连。存储器控制器140连接到存储器设备128。节点接口142连接到一个或多个节点互连130。
因为节点包括本地存储器(即,一组存储器设备104),该节点中的处理器包102对本地存储器的访问可以比对其他节点中的存储器的访问更快。另外,对其他节点中的存储器的访问可以取决于节点之间的连接速度、带宽、高速缓存拓扑,和/或互连130的NUMA节点距离。例如,一些节点可以利用诸如高级微设备超传输(Advanced Micro Devices HyperTransport)总线或Intel CSI总线之类的相对快的互连130来连接,而其他节点可以利用一个或多个相对慢的互连130来连接。
在其他实施例中,每一个处理器包102都可包括其他配置和/或数量的高速缓存。例如,在其他实施例中,每一个硬件线程16都可包括两个或更多L1高速缓存,并且在其他实施例中,L2和/或L3高速缓存可以被共享或者也可以不被共享。作为另一个示例,其他实施例可包括附加高速缓存(例如,级别4(L4)高速缓存)或少一些或没有高速缓存。
参考上文在1-5B图中所描述的实施例,计算机系统100B中的存储器和互连等待时间提供可以被运行时环境10、资源管理层14,和/或调度器22在形成调度节点30时考虑的节点距离。例如,运行时环境10、资源管理层14,和/或调度器22可以为计算机系统100B中的每一个节点创建调度节点30连同相对应的调度集合40。运行时环境10、资源管理层14和/或调度器22可以基于节点之间的互连拓扑,将调度集合40映射到部分或完全搜索顺序。例如,可以将用相对快的互连130连接的任何两个节点编组到同一调度节点和调度集合子集级别,而可以将具有相对慢的互连130的节点编组到高于包括相对快的互连130的调度节点和调度集合子集级别的调度节点和调度集合子集级别。
通过按搜索顺序为可执行的任务搜索调度集合40,节点中的处理资源增大在计算机系统100B中利用存储器局部性效果的可能性。来自同一调度集合40的任务可以比来自另一调度集合40的任务更可能具有存在于节点的本地存储器层次结构中的公共数据。
除潜在的局部性优点之外,在上面的实施例中,使用调度节点和调度集合可以为调度器提供降低正在搜索要执行的任务的处理资源之间的竞争的能力。不同调度节点中的处理资源发起对不同相对应的调度集合中的可执行的任务的搜索。通过这样做,可以减少在调度器中的任务集合上放置的锁或其他同步构造的数量。
作为对可执行的任务的局部化搜索的结果,调度器也可以扩展到具有大量的处理资源的计算机系统。进一步地,调度器可以提供工作的局部性,同时在调度组中使用循环搜索和工作窃取队列而保留公平性和向前进度。
虽然此处示出和描述了特定实施例,但是,本领域技术人员可以理解,在不偏离本发明的范围的情况下,各种替换的和/或等效的实现可以代替所示出和描述的特定实施例。本申请旨在涵盖此处所讨论的特定实施例的任何修改或变化。因此,本发明旨在仅由权利要求以及其等效内容加以限制。

Claims (13)

1.一种由计算机系统的进程中的调度器执行的方法,所述方法包括:
响应于在第一调度节点中的第一多个处理资源中的一个变得可用,在与所述第一调度节点相对应的第一调度集合中搜索要执行的第一任务;以及
响应于在所述第一调度集合中找不到要执行的第一任务,利用所述第一多个处理资源中的所述一个来执行与包括第二多个处理资源的第二调度节点相对应的第二调度集合中的第二任务,基于所述计算机系统的各组组件的一个或多个执行度量为所述调度器标识所述第一和第二调度节点,通过比较至少所述第一和所述第二调度节点之间的执行成本,将所述第一和所述第二调度集合映射到至少部分搜索顺序。
2.如权利要求1所述的方法,其特征在于,还包括:
响应于在所述第一调度集合中找到所述第一任务,利用所述第一多个处理资源中的所述一个来执行所述第一任务。
3.如权利要求1所述的方法,其特征在于,还包括:
所述第一调度集合包括第一群调度组,搜索所述第一群调度组,以在所述第一调度集合中找到所述第一任务。
4.如权利要求3所述的方法,其特征在于,还包括:
所述第二调度集合包括第二群调度组,搜索所述第二群调度组,以在所述第二调度集合中找到所述第二任务。
5.如权利要求1所述的方法,其特征在于,所述第一多个处理资源中的所述一个包括第一虚拟处理器和第一硬件线程。
6.如权利要求1所述的方法,其特征在于,还包括:
响应于在所述第一调度集合中找不到要执行的第一任务,基于将所述第一调度节点与所述第二调度节点相关的至少一个执行度量来搜索所述第二调度集合中的所述第二任务。
7.如权利要求1所述的方法,其特征在于,还包括:
在与所述第一多个处理资源中的所述一个相对应的本地集合中搜索要执行的第三任务;以及
响应于在所述本地集合中找到要执行的所述第三任务,利用所述第一多个处理资源中的所述一个来执行所述第三任务。
8.如权利要求1所述的方法,其特征在于,在所述第一调度集合中搜索所述第一任务还包括:
在所述第一调度集合中的一群调度组中搜索已实现的任务;以及
响应于在所述一群调度组中找不到要执行的已实现的任务,在所述一群调度组中搜索未实现的任务。
9.一种由计算机系统的进程中的调度器执行的方法,包括:
基于所述计算机系统的各组组件的执行度量来为在所述计算机系统上执行的进程中的调度器标识第一和第二调度节点,所述第一和所述第二调度节点包括相应的第一组和第二组处理资源;
分别创建与所述第一和所述第二调度节点相对应的第一和第二调度集合;
通过比较至少所述第一和所述第二调度节点之间的执行成本,将所述第一和所述第二调度集合映射到至少部分搜索顺序;以及
分别用第一和第二组任务填充所述第一和所述第二调度集合。
10.如权利要求9所述的方法,其特征在于,所述部分搜索顺序是基于与所述第一和所述第二调度节点相关联的一个或多个执行度量。
11.如权利要求9所述的方法,其特征在于,包括由资源管理层向所述第一和所述第二调度节点分配相应的第一组和第二组处理资源。
12.如权利要求11所述的方法,其特征在于,第一和第二存储器与所述第一组和所述第二组处理资源相对应,其中,所述第一组处理资源对所述第一存储器的访问比所述第一组处理资源对所述第二存储器的访问更快,并且,其中,所述第二组处理资源对所述第二存储器的访问比所述第二组处理资源对所述第一存储器的访问更快。
13.如权利要求9所述的方法,其特征在于,所述执行度量包括非一致性存储器访问NUMA距离。
CN200980118323.8A 2008-05-16 2009-03-27 调度器中的调度集合 Active CN102027452B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/121,794 2008-05-16
US12/121,794 US8561072B2 (en) 2008-05-16 2008-05-16 Scheduling collections in a scheduler
PCT/US2009/038658 WO2009139966A1 (en) 2008-05-16 2009-03-27 Scheduling collections in a scheduler

Publications (2)

Publication Number Publication Date
CN102027452A CN102027452A (zh) 2011-04-20
CN102027452B true CN102027452B (zh) 2014-04-02

Family

ID=41317379

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980118323.8A Active CN102027452B (zh) 2008-05-16 2009-03-27 调度器中的调度集合

Country Status (12)

Country Link
US (1) US8561072B2 (zh)
EP (1) EP2288990B1 (zh)
JP (1) JP5597195B2 (zh)
KR (1) KR101618892B1 (zh)
CN (1) CN102027452B (zh)
AU (1) AU2009246817B2 (zh)
BR (1) BRPI0910565A2 (zh)
CA (1) CA2720806C (zh)
ES (1) ES2699698T3 (zh)
MY (1) MY155867A (zh)
RU (1) RU2510527C2 (zh)
WO (1) WO2009139966A1 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10417051B2 (en) * 2008-05-23 2019-09-17 International Business Machines Corporation Synchronizing shared resources in an order processing environment using a synchronization component
US9417914B2 (en) * 2008-06-02 2016-08-16 Microsoft Technology Licensing, Llc Regaining control of a processing resource that executes an external execution context
KR101644800B1 (ko) * 2010-01-07 2016-08-02 삼성전자주식회사 컴퓨팅 시스템 및 방법
US8392920B2 (en) * 2010-01-27 2013-03-05 Microsoft Corporation Parallel query engine with dynamic number of workers
US8965966B2 (en) * 2010-12-15 2015-02-24 Sap Se System and method for logging a scheduler
KR101859188B1 (ko) * 2011-09-26 2018-06-29 삼성전자주식회사 매니코어 시스템에서의 파티션 스케줄링 장치 및 방법
US10187452B2 (en) 2012-08-23 2019-01-22 TidalScale, Inc. Hierarchical dynamic scheduling
WO2014084820A1 (en) * 2012-11-28 2014-06-05 Hewlett-Packard Development Company, L.P. Regulating application task development
CN103699435B (zh) * 2013-12-25 2017-05-03 龙芯中科技术有限公司 负载均衡方法及装置
JP6241300B2 (ja) * 2014-02-04 2017-12-06 富士通株式会社 ジョブスケジューリング装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム
US20150227586A1 (en) * 2014-02-07 2015-08-13 Futurewei Technologies, Inc. Methods and Systems for Dynamically Allocating Resources and Tasks Among Database Work Agents in an SMP Environment
US10725770B2 (en) * 2015-01-19 2020-07-28 Vmware, Inc. Hot-swapping operating systems using inter-partition application migration
US10445123B2 (en) 2015-01-19 2019-10-15 Vmware, Inc. Hypervisor exchange with virtual-machine consolidation
CN107025131B (zh) * 2016-02-01 2020-12-29 腾讯科技(深圳)有限公司 一种任务调度方法及装置
US10579421B2 (en) 2016-08-29 2020-03-03 TidalScale, Inc. Dynamic scheduling of virtual processors in a distributed system
WO2018061825A1 (ja) * 2016-09-29 2018-04-05 日本電気株式会社 分散処理システム、分散処理方法、及び記録媒体
CN108667864B (zh) * 2017-03-29 2020-07-28 华为技术有限公司 一种进行资源调度的方法和装置
US11023135B2 (en) 2017-06-27 2021-06-01 TidalScale, Inc. Handling frequently accessed pages
US10817347B2 (en) 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
CN109885377B (zh) 2018-11-23 2023-04-28 中国银联股份有限公司 统一资源调度协调器及其创建虚拟机和/或容器的方法、统一资源调度系统
CN110362391B (zh) * 2019-06-12 2021-08-13 北京达佳互联信息技术有限公司 资源调度方法、装置、电子设备及存储介质
CN110362403A (zh) * 2019-06-25 2019-10-22 苏州浪潮智能科技有限公司 一种作业调度方法及装置
WO2021086839A1 (en) 2019-10-30 2021-05-06 TidalScale, Inc. Goal-directed software-defined numa working set management
CN113050874A (zh) * 2019-12-26 2021-06-29 华为技术有限公司 一种内存设置方法以及装置
US20230135951A1 (en) * 2021-10-29 2023-05-04 Blackberry Limited Scheduling of threads for clusters of processors

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5349656A (en) * 1990-11-28 1994-09-20 Hitachi, Ltd. Task scheduling method in a multiprocessor system where task selection is determined by processor identification and evaluation information
US6105053A (en) * 1995-06-23 2000-08-15 Emc Corporation Operating system for a non-uniform memory access multiprocessor system
US7321940B1 (en) * 2003-06-30 2008-01-22 Cisco Technology, Inc. Iterative architecture for hierarchical scheduling

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01316830A (ja) 1988-06-16 1989-12-21 Hitachi Ltd タスク実行制御方式
US5692193A (en) * 1994-03-31 1997-11-25 Nec Research Institute, Inc. Software architecture for control of highly parallel computer systems
US5586289A (en) * 1994-04-15 1996-12-17 David Sarnoff Research Center, Inc. Method and apparatus for accessing local storage within a parallel processing computer
JPH1078942A (ja) 1996-09-02 1998-03-24 Nec Corp マルチプロセッサシステム
US6442585B1 (en) * 1997-11-26 2002-08-27 Compaq Computer Corporation Method for scheduling contexts based on statistics of memory system interactions in a computer system
JPH11259318A (ja) 1998-03-13 1999-09-24 Hitachi Ltd ディスパッチ方式
US6952827B1 (en) * 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
GB0013273D0 (en) * 2000-06-01 2000-07-26 Philips Electronics Nv Video signal encoding and buffer management
KR20020035580A (ko) 2000-06-27 2002-05-11 요트.게.아. 롤페즈 스케줄을 결정하는 방법, 스케줄러 및, 시스템
EP1182570A3 (en) * 2000-08-21 2004-08-04 Texas Instruments Incorporated TLB with resource ID field
US7234139B1 (en) * 2000-11-24 2007-06-19 Catharon Productions, Inc. Computer multi-tasking via virtual threading using an interpreter
US20030037091A1 (en) * 2001-08-09 2003-02-20 Kozo Nishimura Task scheduling device
US6874080B2 (en) * 2001-11-19 2005-03-29 Intel Corporation Context processing by substantially simultaneously selecting address and instruction of different contexts
US6901507B2 (en) * 2001-11-19 2005-05-31 Intel Corporation Context scheduling
JP2003263331A (ja) 2002-03-07 2003-09-19 Toshiba Corp マルチプロセッサシステム
US7181741B2 (en) * 2003-01-30 2007-02-20 Hewlett-Packard Development Company, L.P. Apparatus and method to minimize blocking overhead in upcall based MxN threads
EP1658563B1 (en) * 2003-08-28 2013-06-05 MIPS Technologies, Inc. Apparatus, and method for initiation of concurrent instruction streams in a multithreading microprocessor
US20050108711A1 (en) * 2003-11-13 2005-05-19 Infineon Technologies North America Corporation Machine instruction for enhanced control of multiple virtual processor systems
US7802255B2 (en) * 2003-12-19 2010-09-21 Stmicroelectronics, Inc. Thread execution scheduler for multi-processing system and method
US20050149916A1 (en) * 2003-12-29 2005-07-07 Tatiana Shpeisman Data layout mechanism to reduce hardware resource conflicts
US7873776B2 (en) * 2004-06-30 2011-01-18 Oracle America, Inc. Multiple-core processor with support for multiple virtual processors
US7886283B2 (en) * 2004-09-17 2011-02-08 The Regents Of The University Of California Phantom serializing compiler and method of operation of same
US20060168214A1 (en) * 2004-10-29 2006-07-27 International Business Machines Corporation System for managing logical partition preemption
JP4606142B2 (ja) * 2004-12-01 2011-01-05 株式会社ソニー・コンピュータエンタテインメント スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム
US20060130062A1 (en) * 2004-12-14 2006-06-15 International Business Machines Corporation Scheduling threads in a multi-threaded computer
DE202004021684U1 (de) * 2004-12-20 2010-04-29 Infineon Technologies Ag Einrichtungen und Vorrichtungen zur Verwendung bei einem Scheduling
US7657883B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor
US7752620B2 (en) * 2005-06-06 2010-07-06 International Business Machines Corporation Administration of locks for critical sections of computer programs in a computer that supports a multiplicity of logical partitions
GB0513045D0 (en) * 2005-06-27 2005-08-03 Vidus Ltd Resource scheduling method and system
US8112507B2 (en) * 2005-09-27 2012-02-07 Intel Corporation Remote node list searching mechanism for storage task scheduling
GB0519981D0 (en) * 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
US20070204268A1 (en) * 2006-02-27 2007-08-30 Red. Hat, Inc. Methods and systems for scheduling processes in a multi-core processor environment
KR100791296B1 (ko) 2006-03-03 2008-01-04 삼성전자주식회사 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법
US8185422B2 (en) * 2006-07-31 2012-05-22 Accenture Global Services Limited Work allocation model
US7873964B2 (en) * 2006-10-30 2011-01-18 Liquid Computing Corporation Kernel functions for inter-processor communications in high performance multi-processor systems
WO2008098070A1 (en) * 2007-02-06 2008-08-14 Mba Sciences, Inc. A resource tracking method and apparatus
WO2009029549A2 (en) * 2007-08-24 2009-03-05 Virtualmetrix, Inc. Method and apparatus for fine grain performance management of computer systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5349656A (en) * 1990-11-28 1994-09-20 Hitachi, Ltd. Task scheduling method in a multiprocessor system where task selection is determined by processor identification and evaluation information
US6105053A (en) * 1995-06-23 2000-08-15 Emc Corporation Operating system for a non-uniform memory access multiprocessor system
US7321940B1 (en) * 2003-06-30 2008-01-22 Cisco Technology, Inc. Iterative architecture for hierarchical scheduling

Also Published As

Publication number Publication date
EP2288990B1 (en) 2018-09-05
KR101618892B1 (ko) 2016-05-09
AU2009246817A1 (en) 2009-11-19
RU2010146457A (ru) 2012-05-20
JP2011521353A (ja) 2011-07-21
WO2009139966A1 (en) 2009-11-19
BRPI0910565A2 (pt) 2015-09-22
EP2288990A4 (en) 2016-09-21
CA2720806A1 (en) 2009-11-19
CN102027452A (zh) 2011-04-20
JP5597195B2 (ja) 2014-10-01
CA2720806C (en) 2016-06-21
MY155867A (en) 2015-12-15
RU2510527C2 (ru) 2014-03-27
ES2699698T3 (es) 2019-02-12
US20090288087A1 (en) 2009-11-19
KR20110019729A (ko) 2011-02-28
EP2288990A1 (en) 2011-03-02
US8561072B2 (en) 2013-10-15
AU2009246817B2 (en) 2014-04-24

Similar Documents

Publication Publication Date Title
CN102027452B (zh) 调度器中的调度集合
CN102027447B (zh) 调度器中的局部任务集合
CN102047218B (zh) 进程中的调度器实例
US20130254776A1 (en) Method to reduce queue synchronization of multiple work items in a system with high memory latency between processing nodes
US20100325637A1 (en) Allocation of resources to a scheduler in a process
CN110362407A (zh) 计算资源调度方法及装置
US20100318995A1 (en) Thread safe cancellable task groups
US8291426B2 (en) Memory allocators corresponding to processor resources
US8468528B2 (en) Method for selective flushing logs within multiple queues concurrently
CN107329822B (zh) 面向多源多核系统的基于超任务网的多核调度方法
MX2010012829A (es) Recobrar control de un recurso de procesamiento que ejecuta un contexto de ejecucion externa.
Al-Bayati et al. Task placement and selection of data consistency mechanisms for real-time multicore applications
Ghose et al. A framework for OpenCL task scheduling on heterogeneous multicores
Deshpande et al. Analysis of the Go runtime scheduler
US9378062B2 (en) Interface between a resource manager and a scheduler in a process
US9384063B2 (en) Eliding synchronization in a concurrent data structure

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150505

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150505

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.