内核处理器分组的制作方法

文档序号:6479095阅读:189来源:国知局
专利名称:内核处理器分组的制作方法
内核处理器分组背景随着系统中的处理器数量的增加,在处理被设计成在具有较少处理器的系统上处 理的应用程序时,处理器的总生产力可能不匹配系统的预期处理能力。例如,在将用于处理 的各个线程分发给各个处理器时可能出现瓶颈。在其它情况下,某些应用程序会限制可有 效地处理该应用程序的任务的处理器的数量。例如,某些应用程序可能并非很好地适于由 比为其设计该应用程序的处理器多的处理器来处理。例如,虽然应用程序可以如所预期的 那样在包括两个处理器的台式系统上操作,但具有六十四个或更多处理器的企业服务器对 于同一应用程序可能经历问题。概述讨论用于将各个处理器分组成分配实体的技术。对处理器进行静态分组可准许在 组的基础上分配线程。以此方式,可最小化调度用于处理的线程的负担,同时可基于各个处 理器在组中的物理位置来选择分配实体中的处理器。分组可准许系统伸缩以满足各种应用 程序的处理需求。提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概 念。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定 所要求保护的主题的范围。附图简述参考附图来描述详细描述。在附图中,参考标号中最左边的数字标识该参考标号 首次出现的附图。在说明书和附图中的不同的实例中使用相同的附图标记可指示相似或相 同的项目。

图1示出了可使用内核级组处理的示例性实现中的环境。图2是描绘其中使用处理器分配实体静态分组的示例性实现中的过程的流程图。详细描述概览因此,描述了可提供内核级处理器分组的技术。例如,可基于各个处理器的位置 来将各个处理器静态地配置成内核级分组,以使得可以在按组的基础上调度和处理用于处 理的线程或离散的应用程序任务。分组可准许操作系统(OS)在组的基础上交互而不是与 各个处理器交互。结果,与在按处理器的基础上分发处理任务的操作系统相比,OS得以简 化。可将各个线程分配给内核组以便处理。对处理器进行静态分组并且在按组的基础上分 配处理任务可最小化与调度包括大量处理器的系统中的处理器相关联的负担。例如,具有 128个处理器的企业服务器可被配置成处理被设计成在双处理器台式系统中有效地操作的 若干应用程序。对于可能经历同步或正确性问题的应用程序,如果由比预期处理该应用程序的处 理器更多的处理器来执行处理,则可以在单个内核分组中处理与该应用程序相关联的线程 以使得可以隔离处理(例如,就像内核组中的处理器是系统中的唯一处理器那样)。以此 方式,第一内核组可以为第一应用程序服务而其它应用程序(如果适用)可由其它内核组处理。静态处理器分组可促进对被设计成在有限数量的处理器上处理的应用程序的高效处 理,同时支持在计算系统上运行的应用程序的总体可伸缩性。示例性环境图1示出了准许内核分组的示例性实现中的环境100。例如,可以配置具有六十四 个或更多处理器(将引用104-134)的计算系统102以使得将处理器配置成内核级组(将 引用组“0-N”,分别为136-144)。在计算系统上操作的OS可在内核级被配置成使得在计算 系统中的特定处理器组上处理线程或离散任务。内核级处理器分组可减轻应用程序或其它 其它级必须在考虑各个处理器的物理位置的同时考虑系统中所包括的处理器的数量的负 担。即,通过在内核级考虑多个处理器,可最小化与在相比于针对其配置应用程序的处理器 的众多处理器上进行处理相关联的问题。例如,可以隔离或以其它方式分隔软件应用程序 模块以利用可用处理资源。结果,可以在与预期处理器使用相比不过度消耗计算系统资源 的情况下处理无法容易地伸缩的应用程序。例如,当在大量处理器上处理时,应用程序可消 耗与同一应用程序在针对其设计该应用程序的多个处理器上运行时所消耗的处理能力相 比更多的处理能力。在按组的基础上执行操作可以在分发用于处理的线程时最小化OS上 的调度负担。例如,通过将各个线程分发给内核组以便处理,与将任务分发给各个处理器相 比,可最小化内核调度器145上的负担。例如,最小化计算系统中的内核组的数量可允许内 核调度器145实现相对较简单且可能更快的算法。虽然讨论了物理实施例,但也可构想虚拟化实现。例如,应用程序可以在虚拟环境 或组合环境等中运行。例如,应用程序可以在也物理分区的计算系统上的虚拟环境中执行。尽管引用了 64(六十四)处理器计算系统,但可以伸缩此处所讨论的技术和原理, 诸如“P”个处理器(诸如在特定组中)以及“N”个内核组(包括“P”个单独的处理器),如 基于计算系统资源所需,诸如128处理器系统、硬件/软件,等等。例如,六十四个处理器或 更多处理器可被配置成“N”个内核级分组,且各个内核分组具有“P”个处理器。在各实现 中,内核组可包括单个处理器、两个处理器等等。在另一示例中,六十四处理器系统可被配 置成单个组,因为六十四位位掩码可以有效对分组寻址。在其它示例中,具有六十四个或更 多处理器的系统可被配置成每组大致六十四个处理器。内核组以及各个内核组中的各个处理器的精确数量可以变化。例如,处理器可以 按需热交换到各个组中,等等。例如,虽然计算系统可包括六十四个或更多物理处理器,但 某些组可专用于特定任务,或者可以为后续组分配保留处理器,等等。可通过最小化内核组 的数量来限制调度任务的负担。例如,可基于应用程序被设计成在其上处理的处理器的数 量来选择组中的各个处理器的数量。以此方式,计算系统可支持不适于由大量处理器处理 的应用程序。例如,如果预期进行例行处理的应用程序可高效地利用两个处理器,则内核组 可包括两个处理器。即,可基于应用程序参数或者为预期进行处理的应用程序分配内核组 中的各个处理器的数量。例如,如果企业服务器预期运行被设计成在四个处理器上处理的 至少一个应用程序,则可以将四个处理器静态地分配给内核组,以使得超出可以有效地使 用的处理器数量的其它处理器不被包括在内核组中。其它考虑事项可包括将足够数量的处理器分组在一起以高效地处理线程。除了将 应用程序线程调度到专用组之外,内核调度器145可以在内核组变得可用于处理时在循环 的基础上分配任务。
可基于处理器相对于内核组中的其它处理器的位置来选择内核组中的各个处理 器。在各实现中,可以在内核组中包括非均勻存储器存取(NUMA)节点中的各个处理器。例 如,可以在内核组中包括分配给本地存储器节点的一个或多个单独处理器。结果,NUMA节 点中的处理器可以在处理分配给包括NUMA节点中的处理器的内核组的线程时高效地访问 本地存储器资源。进而,可将NUMA节点中所包括的处理器(作为参考,NUMA节点0-15,分 别为146-152)分配给特定内核分组。在内核分组中包括位置相邻处理器,无论其是否在同 一 NUMA节点中,都可以在系统的各部分由不同的应用程序时改进总体处理。可结合位置使 用决定分组的其它因素或者可以实现决定分组的其它因素,诸如处理核心配置或所需的其 它因素。例如,内核分组配置可以基于处理核心的配制和该核心的插槽配置。与针对其设计应用程序的低处理器系统相比,对于具有大量处理器的计算系统, 内核级处理器分组可防止不稳定的应用程序性能、正确性问题、同步问题等等。在各种情况 下,具有大量处理器(诸如128个)的计算系统可能经历上述问题,而运行相同应用程序的 较低资源系统可能不会。根据此处的技术来对处理器进行分组可使得应用程序和/或系统 有效地最小化不稳定行为的可能性。在各实现中,内核中处理器的数量可准许使用指定大小的公共位掩码。例如,可以 按高效的方式管理六十四位位掩码,同时适应经分组的处理器配置。其它示例性情形可实 现32位位掩码(三十二位位掩码)配置。通过使用内核分组,可用于处理的OS分配的线程可高效地使用计算系统资源,由 此避免在具有大量处理器的服务器中可能发生的潜在问题。在大规模处理器系统中,内核 调度器145可将供处理的各个应用程序线程分配给特定内核组,以使得可以按大致同时的 方式处理适于比该系统中所包括的处理器更少数量的处理器的多个应用程序,由此比在单 独的基础上处理处理器的情况更高效地使用系统的处理器。如果特定应用程序具有同步、正确性或其它多个处理器问题(如果在具有多个处 理器的计算系统上执行的话),则内核调度器145可将该应用程序的线程调度到单个组以 避免或最小化这些潜在问题。例如,如果应用程序不是可容易地伸缩的,则内核调度器145 可将该应用程序的处理任务引导到单个组。例如,如果具有六十四个或更多处理器的计算 机系统将处理多处理器敏感的任务,则内核调度器145可将应用程序线程引导到可隔离该 应用程序的组0(零)。以此方式,可以就像该组中的处理器是该系统的处理资源那样处理 线程。隔离级别可以按需从物理或虚拟分区类型隔离变化到较少形式的隔离。相反,如果应用程序是针对多处理器处理来配置的,则可以个别地调度供处理的 线程以便在组1、组2和组3 (其可各自包括类似于组0的配置的多个处理器)之间进行处 理,以便利用该计算系统的处理器资源。在各实现中,可向应用程序和驱动程序给予对整个系统的可见性。例如,驱动程序 可以了解内核级结构,以使得以使得该驱动程序可支持可访问该系统的组件。以此方式,计 算系统可获得组处理好处,同时应用程序和驱动程序可以了解系统处理器分组。—般而言,在此描述的任何功能可使用软件、固件、硬件(例如,固定逻辑电路)、 手动处理或这些实现的组合来实现。本文使用的术语“模块”、“功能”和“逻辑”通常表示 软件、固件、硬件、或其组合。例如,在软件实现的情况下,模块、功能或逻辑表示当在处理器 (例如,一个或多个CPU)上执行时实现指定任务的程序代码。程序代码可被储存在例如有形介质等一个或多个计算机可读存储器设备中。以下讨论描述了可利用上述系统和设备来实现的各种变换技术。这些过程中每一 过程的各方面可用硬件、固件、或软件、或其组合来实现。这些过程被示为指定由一个或多 个设备执行的操作的一组框,并且其不必限于所示由各框执行操作的次序。示例性过程以下讨论描述了可利用上述系统和设备来实现的方法。这些过程中每一过程的各 方面可用硬件、固件、或软件、或其组合来实现。这些过程被示为指定由一个或多个设备执 行的操作的一组框,并且其不必限于所示由各框执行操作的次序。也可以考虑各种其他示 例。图2公开了用于对处理器进行静态分组的示例性过程。例如,计算系统的OS内核 级可被配置成对各个处理器进行分组,以使得可处理可能对大规模处理器环境敏感的应用程序。此处所讨论的技术可准许在组的基础上以隔离方式处理由OS分配的线程。这些 技术可最小化OS的总复杂度,因为可以在组的基础上考虑处理而不是在各个处理器的基 础上分析任务。对于针对大规模处理设计的应用程序,各个组可以将一个分配实体中的各个任务 与计算系统中的其它分配实体隔离开。可以将各个处理器分组成分配实体中以便处理线程202。例如,内核调度器可将特 定应用程序分配给在启动时静态分组的各处理器。例如,可将来自第一应用程序的线程调 度至第一分配实体,而将其它应用程序任务分配到第二分配实体,以此类推。例如,可将第 一应用程序分配给两个处理器的第一静态内核分组(这两个处理器在物理上对于该组中 所包括的另一处理器可以是本地的),而将第二应用程序分配给具有四个处理器的第二静 态内核组。上述操作可准许比OS在单独的基础上与处理器交互的情况更高效地处理第一 和第二应用程序(更高效地使用处理器)。在各实现中,分配实体中所包括的处理器的数量可以与针对其配置应用程序的处 理器的数量相当。以此方式,处理资源可以不专用于可能无法有效地利用分配给该组的多 个处理器的特定应用程序。可以类似地配置其它分配实体,以使得各个组可以单独地分配 到来自不同应用程序的任务。可基于结合处理器使用的位掩码来确定分配实体中所包括的处理器的数量。因 此,组中的处理器数量可以是例如六十四个或更少以利用六十四位位掩码。以此方式,系统 可使用可以是较简单的配置的较低位位掩码配置,同时适应具有超过该位掩码可有效寻址 的多个处理器的处理器的系统。在各种情况下,分配到处理组中的处理器数量可小于位掩 码可寻址的处理器数量,因为某些处理器可停止热交换等。使用经分组的处理器配置(在内核级)可最小化多处理器环境对在较高级上执行 的应用程序的影响。因此,虽然内核级可被配置成诸如在真实环境、虚拟化环境或其组合中 将多个处理器作为一实体来控制,但可以在不必为超出针对其配置位掩码的多个处理器的 附加处理器重新配置位掩码的情况下使用较低位位掩码配置。在各实现中,可最小化OS/计算系统中的分配实体的数量以最小化与散布应用程 序任务相关联的调度负担(例如,潜在瓶颈)。这可准许使用与个别寻址处理器的系统相比
7而言较简单的算法的内核级调度。分配实体的精确数量以及分配实体中的各个处理器的数 量可以基于多个因素,包括预期应用程序处理需求、可以在应用程序经历处理问题之前对 于该应用程序可实现的处理器的数量、最小化伸缩瓶颈等。可以在特定分配实体中包括各个处理器以最大化处理器在分配实体中的局部性。 例如,分配实体中的处理器可以在物理上与该分配实体中的其它各个处理器相邻。可将非均勻存储器存取(NUMA)节点中的各个处理器分组成配实体。因此,可将 NUMA节点中所分配204的各个处理器分组成特定内核级处理器组。以先前方式,分配实体 和NUMA节点中所包括的各个处理器可快速访问本地存储器(与其中未应用上述原理的各 个处理器相比)。虽然NUMA节点可以不连系到特定内核组,但在各实现中可将节点映射到 内核组以便紧密地亲密化(affinitize)特定任务206。例如,应用程序接口可被配置成将 各个物理处理器与内核分组连系。用内核级分配实体来紧密地映射物理资源可准许将紧密 相关联的任务分配给特定内核分组以便处理。对于适于伸缩208的应用程序,内核调度器可按需分配线程。对于针对有限数量 的处理器设计的应用程序,可将线程引导到单个内核组。例如,应用程序可将其处理任务引 导到组0,而可将其它应用程序引导到组1。可向应用程序和驱动程序给予系统分组的可见性。例如,驱动程序可以了解内核 级分组结构以使得以使得该驱动程序可支持可访问总系统的组件。以此方式,遵照此处所 讨论的技术操作的计算系统可获得组处理的好处,同时应用程序和驱动程序可以按需了解 系统处理器分组。结论虽然已经用结构特征和/或方法动作特定的语言描述了本发明,但是应该理解在 所附权利要求中定义的本发明不必限于所述具体特征或动作。相反,这些具体特征和动作 是作为实现要求保护的发明的示例性形式而公开的。
权利要求
一种方法,包括将各个处理器静态地分组成分配实体,所述各个处理器基于所述各个处理器相对于组中的其它各个处理器的物理位置来被分组;以及伸缩一个或多个分配实体以处理各个线程,以使得在按分配实体的基础上分配各个线程。
2.如权利要求1所述的方法,其特征在于,所述各个处理器在内核级静态分组。
3.如权利要求1所述的方法,其特征在于,所述分配实体被配置成在所述分配实体中 隔离与应用程序相关联的各个线程。
4.如权利要求1所述的方法,其特征在于,单个线程一次被分配给单个的个别分配实体。
5.如权利要求1所述的方法,其特征在于,所述分配实体中的各个处理器与所述分配 实体中的其它各个处理器一起被配置成非均勻存储器存取(NUMA)节点。
6.如权利要求1所述的方法,其特征在于,各个处理器在启动时分组。
7.如权利要求1所述的方法,其特征在于,还包括在启动时部分地填充非均勻存储器 存取(NUMA)节点以准许热添加处理器。
8.如权利要求1所述的方法,其特征在于,单个应用程序的线程在单个分配实体中被 处理。
9.一种或多种包括计算机可执行指令的计算机可读介质,所述指令在被执行时指示计 算系统将位置相关的各个处理器分配给非均勻存储器存取(NUMA)节点; 以及在启动时将所述位置相关的各个处理器静态地分组成被配置成一次处理一单独线程 的内核组。
10.如权利要求9所述的一种或多种计算机可读介质,其特征在于,还包括在按内核组 的基础上调度所述单独线程。
11.如权利要求9所述的一种或多种计算机可读介质,其特征在于,应用程序线程都被 调度至单个内核组以便处理。
12.如权利要求9所述的一种或多种计算机可读介质,其特征在于,还包括为被配置成 可伸缩处理的硬件添加驱动程序模型扩展。
13.如权利要求9所述的一种或多种计算机可读介质,其特征在于,还包括伸缩附加内 核组以便处理来自支持在不同内核组之间分发线程的应用程序的线程。
14.如权利要求9所述的一种或多种计算机可读介质,其特征在于,所述内核组中的各 个处理器是与所述内核组外的处理器隔离开的。
15.如权利要求9所述的一种或多种计算机可读介质,其特征在于,一组包括大致 六十四个单独的处理器。
16.一种系统,包括多个处理器,所述多个处理器被静态地配置在内核组中,以使得在内核组的基础上分 配供处理的各个线程;所述各个处理器在物理上对于所述内核组中所包括的其它处理器是 本地的。
17.如权利要求16所述的系统,其特征在于,还包括被配置成在内核组的基础上分发 各个线程的内核调度器。
18.如权利要求17所述的系统,其特征在于,所述内核调度器将特定应用程序的所有 线程分配给单个内核组。
19.如权利要求16所述的系统,其特征在于,所述多个处理器中的各个处理器在物理 上对于所述内核组中所包括的其它处理器是本地的。
20.如权利要求16所述的系统,其特征在于,所述多个处理器在启动所述系统时被分 配给内核组。
全文摘要
讨论了用于将各个处理器分组成分配实体的技术。对处理器进行静态分组可准许在组的基础上分配线程。以此方式,可最小化调度供处理的线程的负担,同时可基于各个处理器在组中的物理位置来选择分配实体中的处理器。分组可准许系统伸缩以满足各种应用程序的处理需求。
文档编号G06F9/30GK101889265SQ200880119662
公开日2010年11月17日 申请日期2008年11月14日 优先权日2007年12月7日
发明者A·范德霍文, E·D·沃克, F·C·福尔茨, Z·邓 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1