通过腾空CPU和存储器的子集来降低功率转让专利

申请号 : CN201680026703.9

文献号 : CN107636563A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : V·沙尔达B·L·沃辛顿

申请人 : 微软技术许可有限责任公司

摘要 :

一种系统具有一个或多个主要功率区域,其具有指示主要功率区域不被处于离线状态的限制。该系统还包括一个或多个辅助功率区域,其可被停放或离线到具有受限功能的受限状态中,其中在处于受限状态时,功能从该一个或多个辅助功率区域中被移除。基于中断特性,至少一个中断被分配给主要功率区域中的一个。基于线程特性,至少一个线程被分配给主要功率区域中的一个。基于页面特性,至少一个页面被分配给主要功率区域中的一个。

权利要求 :

1.一种用于将资源分配给一个或多个功率区域的计算机实现的方法,所述计算机实现的方法由执行用于所述计算机实现的方法的计算机可执行指令的一个或多个处理器执行,所述计算机实现的方法包括:标识一个或多个主要功率区域,所述一个或多个主要功率区域具有指示主要功率区域不被处于离线状态的限制;

标识一个或多个辅助功率区域,所述一个或多个辅助功率区域可被停放或离线到具有受限功能的受限状态中,其中在处于受限状态时,功能从所述一个或多个辅助功率区域中被移除;

基于中断特性,标识应该被分配给主要功率区域的至少一个中断;

将所述至少一个中断分配给经标识的主要功率区域;

基于线程特性,标识应该被分配给主要功率区域的至少一个线程;

将所述至少一个线程分配给经标识的主要功率区域;

基于页面特性,标识应该被分配给主要功率区域的至少一个页面;以及将所述至少一个页面分配给经标识的主要功率区域。

2.如权利要求1所述的计算机实现的方法,其特征在于,进一步包括:将辅助功率区域从受限状态带回;

将至少一个中断、一个线程、或一个页面分配给从受限状态带回的所述辅助功率区域。

3.如权利要求2所述的计算机实现的方法,其特征在于,将辅助功率区域从受限状态带回包括基于对附加计算资源的预期未来需求来将所述辅助功率区域从受限状态带回。

4.如权利要求1所述的计算机实现的方法,其特征在于,进一步包括从辅助功率区域移动一个或多个中断、线程或页面,并然后将所述辅助功率区域移动到受限状态。

5.如权利要求1所述的计算机实现的方法,其特征在于,进一步包括基于负载平衡标准来将至少一个中断、一个线程、或一个页面分配给主要或辅助功率区域。

6.如权利要求1所述的计算机实现的方法,其特征在于,进一步包括将至少一个中断、一个线程、或一个页面分配给主要或辅助功率区域以将相关线程或相关存储器进行分组。

7.如权利要求1所述的计算机实现的方法,其特征在于,进一步包括:基于至少一个中断、一个线程、或一个页面从可移动的资源变化成不可移动的资源来将所述至少一个中断、一个线程、或一个页面分配给主要功率区域;以及基于至少一个中断、一个线程、或一个页面从不可移动的资源变化成可移动的资源来将所述至少一个中断、一个线程、或一个页面分配给辅助功率区域。

8.一种包括一个或多个处理器的计算系统,所述一个或多个处理器执行计算机可执行指令,所述计算机可执行指令在被执行时使得计算系统被配置有用于将资源分配给一个或多个功率区域的架构,以及所述架构包括:功率区域确定模块,其:

标识一个或多个主要功率区域,所述一个或多个主要功率区域具有指示主要功率区域不被处于离线状态的限制;以及标识一个或多个辅助功率区域,所述一个或多个辅助功率区域可被停放或离线到具有受限功能的受限状态中,其中在处于受限状态时,功能从所述一个或多个辅助功率区域中被移除;

资源分配模块,其:

基于中断特性标识中断是否应该被分配给主要功率区域或辅助功率区域;

基于线程特性标识线程是否应该被分配给主要功率区域或辅助功率区域;

基于页面特性标识页面是否应该被分配给主要功率区域或辅助功率区域;以及如经标识的,将中断、线程和页面分配给主要或辅助功率区域。

9.如权利要求8所述的计算系统,其特征在于,进一步包括将辅助功率区域从受限状态带回的功率区域激活模块,并且其中所述功率区域激活模块基于对附加计算资源的预期未来需求来将辅助功率区域从受限状态带回。

10.如权利要求9所述的计算系统,其特征在于,所述功率分配模块被配置成从辅助功率区域移动一个或多个中断、线程或页面,并且所述功率区域激活模块将所述辅助功率区域移动到受限状态。

说明书 :

通过腾空CPU和存储器的子集来降低功率

[0001] 背景
[0002] 背景和相关技术
[0003] 计算机和计算系统已经影响了现代生活的近乎每一个方面。计算机通常涉及工作、休闲、保健、运输、娱乐、家政管理等。大型数据中心可存储大量数据,并向位于该数据中心远程处的客户端提供计算资源。然而,越来越多的对数据中心和其他服务器计算机环境的供电和冷却费用的关注、以及日益增长的对节约自然资源的意识,正在推动计算硬件和软件产业寻找降低计算机能耗的创新方式。
[0004] 尽管硬件制造商(包括CPU和存储器组件的制造商)在其硬件中设计将独立地提高能效的功能是有可能的(例如,在其未被使用时,将单个CPU内核或存储器或整个处理器封装动态地下降至低功率状态),但是硬件可由自己完成的事情是存在限制的。软件可类似地尝试在不了解底层硬件的架构或实现细节的情况下降低能耗,但其在成功方面也受到限制。
[0005] 本文要求保护的主题不限于解决任何缺点或仅在诸如上述环境这样的环境中操作的各实施例。相反,提供该背景仅用于例示其中可实施所述一些实施例的一个示例性技术领域。
[0006] 简要概述
[0007] 一个实施例包括具有一个或多个主要功率区域的系统,其具有指示主要功率区域不处于离线状态的限制。该系统还包括一个或多个辅助功率区域,其可被停放或离线到具有受限功能的受限状态中,其中在处于受限状态时,功能从该一个或多个辅助功率区域中被移除。基于中断特性,至少一个中断被分配给主要功率区域中的一个。基于线程特性,至少一个线程被分配给主要功率区域中的一个。基于页面特性,至少一个存储器页面被分配给主要功率区域中的一个。
[0008] 提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并非旨在标识出要求保护的主题的关键特征或必要特征,亦非旨在用作辅助确定要求保护的主题的范围。
[0009] 附加特征和优点将在以下描述中提出,且部分会从描述中显而易见,或者可以通过实施本文的原理来获悉。本发明的特征和优点可以通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的特征从以下描述和所附权利要求书中将更完全显而易见,或者可以通过如下文所述实施本发明而获悉。
[0010] 附图简述
[0011] 为了描述可获得以上记载的及其他优点和特征的方式,将参照各具体实施例呈现以上简述的主题的更具体描述,各具体实施例在附图中例示。理解这些附图仅描述典型的实施例,因此不应被视为限制本发明的范围,各实施例将通过使用附图以附加的具体性和细节来描述和解释,附图中:
[0012] 图1例示了具有基于封装的功率区域的示例系统;
[0013] 图2例示了具有基于存储器单元中经定义的功率区域的功率区域的示例系统;
[0014] 图3例示了将资源分配给一个或多个功率区域的方法;以及
[0015] 图4例示了用于将资源分配给一个或多个功率区域的系统。
[0016] 详细描述
[0017] 传统上,操作系统分发诸如进程、线程(其中线程是基本指令序列)、以及跨不同封装的存储器内容之类的对象以提高系统的性能(例如负载平衡)。封装通常包括通常在单个半导体管芯上实现或者一起被封装在单个芯片中的硬件的集合。在一些情况下,多芯片模块可被用于封装中。然而,如果硬件提供了关闭整个封装(或者基于工作负载需求和其他标准将其下降到深度低功率或无功率状态)的能力,则操作系统将首先需要腾空与封装相关联的存储器,否则其内容可能会丢失。可能还需要将关联的中断、进程和线程移出该封装。然后,可向该硬件发送信号以降低一个或多个封装的功率或关闭一个或多个封装,并从而节省大量的能量。
[0018] 本文所描述的各实施例可通过实现计算系统来提高计算机能效:该计算系统将软件资源(例如,进程、线程、中断和/或存储器页面)移出硬件组件(例如,内核、封装、板、DIMM、信道、节点等)的子集,并将这些软件资源合并于剩余的硬件组件的子集上以使得前述子集下降至低功率或无功率状态
[0019] 各实施例结合于在软件中检测到的存储器访问模式使用存储器拓扑和处理器拓扑信息来引导操作系统(OS)或应用软件算法以优化由计算机消耗的能量的量。在策略是希望节能,或在工作负载足够轻以至于不在同一时间需要或访问整个处理器和存储器的情况下,OS或应用重新定位进程、线程、中断和/或存储器内容,以使得包含存储器和处理器的处理器封装(或CPU和存储器的其他独立功率的子集)依赖于重新定位过程的成功进入低功率或无功率状态。在策略是性能比节能更重要,或在工作负载足够重以至于需要更多处理器和/或更多存储器的情况下,活动进程、线程、中断和/或存储器可跨更广阔的封装范围或功率区域分布以增加吞吐量并减少延迟,理解总能耗可能会因此增加。
[0020] 因此,一些实施例重新定位计算、存储器、或其他资源以腾空功率区域并将其置于诸如低功率或无功率状态之类的受限状态。一些实施例将计算,存储器或其他资源重新定位到现在处于活动状态且可被使用的先前腾空的功率区域。一些实施例将静态资源分配给UNMOVABLE(不可移动的)功率区域,并将动态资源分配给MOVABLE(可移动的)或UNMOVABLE功率区域。一些实施例将经组合的CPU和存储器功率区域(例如,附连有存储器的处理器封装)分类为MOVABLE或UNMOVABLE。一些实施例执行部分停放或离线(例如,仅CPU或存储器从处理器封装停放或离线)。
[0021] 出于讨论的目的,如以下示例中使用的功率区域/分组被实现为如图1所例示的CPU和相关联的存储器(例如,信道、DIMM、存储体,行列等)的“封装”。然而,这不是对本发明的实现的限制。相反,图2例示了可在封装内实现功率区域的示例。以下公开例示了如何根据各种工作负载和策略条件来实现和调整(静态或动态地)功率区域“停放”(低功率场景)或“离线”(无功率场景)资源分配和重新定位算法。注意到,虽然大致解说了封装,但这些概念可被应用于几乎任何功率区域的描绘。
[0022] 术语
[0023] 介绍一些基本术语有助于使描述算法变得更容易。因此,现在定义本文所使用的各种术语。
[0024] ●“页面”是由OS存储器管理器管理的基本的存储器单元。物理页面具有一个固定的物理地址,但它可以具有映射到单个物理页面的多个虚拟地址(例如,用于来自不同的OS进程的访问)。在大多数情况下,当“页面”在本公开中被涉及时,真正涉及的是该页面的内容。当页面被其访问模式分类时,它们被描述在热成像模型中时,使用“热”作为访问活动的度量。基于其内容和访问模式,物理存储器页面可被分类如下:
[0025] ○Free(空闲):物理页面可随时被盖写/重新利用(即其可出于任何目的被分配)。其在被存储器管理器初始化和/或分配之前不会被访问。所有其他类型的物理页面都被视为是“活跃的”并且在其中具有(可能是有用的)内容。
[0026] ○HOT(常用):页面已知或预期被频繁地访问。
[0027] ○COLD(少用):页面已知或预期被不频繁地访问。
[0028] ○standby(待命):页面在诸如存储器压力之类的某些情况下,从所有进程和线程工作集中被移除。该页面在离开其最终工作集之前可能已经是HOT或COLD状态。其将不会被访问,直到其被重新利用或被映射回工作集。
[0029] ○Modified(经修改的):其可被认为是其内容可能需要被写入辅助存储设备的待命页面(即,经修改的页面可能仍然包含有用的内容)。
[0030] ○UNMOVABLE(不可移动的):由于所包含的数据类型或通过其来分配物理页面的API,该页面内容不能被移动(到另一物理页面)。
[0031] ○UNSCANNABLE(不可扫描的):该页面无法准确测量其访问频率。一般而言,UNSCANNABLE页面可被视为适当的UNMOVABLE和/或HOT页面。
[0032] ○定义各种LUKEWARM(热门程度)水平或其他中间活动“热”水平是可能的。
[0033] ○出于描述的目的,HOT、COLD和UNMOVABLE的活动水平通常是足够的。
[0034] ●封装指示一组CPU内核和相关联的存储器控制器。任何封装都可能被标记为:
[0035] ○HOT(常用):诸如存储器页面和CPU内核之类的封装上的资源已知或预期被频繁地访问(例如,其存储器页面的非凡部分为HOT,或至少为LUKEWARM)。
[0036] ○COLD(少用):封装上的资源已知或预期被不频繁地访问(其存储器页面中的大部分或全部已知是空闲或COLD,并且CPU内核不太可能被线程调度器或中断控制器使用)。
[0037] ○UNMOVABLE(不可移动的):该区域包含一个或多个UNMOVABLE页面、进程、线程或中断。
[0038] ■在大多数情况下,UNMOVABLE区域可被视为HOT区域。
[0039] ○定义各种LUKEWARM水平或其他“热”水平是可能的。
[0040] ○出于描述的目的,HOT、COLD和UNMOVABLE通常是足够的。
[0041] ●封装离线指示封装正在进入对可允许的活动有严格限制的受限的非常低功率或无功率状态:
[0042] ○所有相关联的存储器页面本质上都是空闲的;该封装上的所有活动的存储器页面(可能包含有用的内容)已被复制到其他封装、复制到辅助存储、或者其内容已被丢弃。假设是在进入此功率状态时所有的易失性内容都将丢失。
[0043] ○所有的内核都是非活动的;在封装上运行的所有线程/进程已被终止、挂起或移动到其他封装。假设是线程调度器在处于该功率状态时将不被允许把工作分配给封装上的内核。
[0044] ○被分配给该封装的大多数或所有中断已被阻塞或移动到其他封装。在此状态下,少量特定中断(诸如使封装恢复到活动状态的中断)仍可由封装进行处理是有可能的。
[0045] ○保存有关封装配置的足够的状态,使得当不再期望该封装处于低功率或无功率状态时可将其成功地返回到活动状态并继续其职责。
[0046] ●封装停放暗示封装正进入仍允许某些级别的功能(诸如仍可访问封装的存储器但不能将线程调度到其CPU内核上的能力)的受限的低功率状态。通常会存在与此类功能相关联的性能或功率损失,诸如访问经停放封装上的存储器会有较长延迟。如果存储器是可访问的,则可跟踪页面访问历史记录以使各个页面的“热度”评级保持最新。以下条件被维持:
[0047] ○此封装上的大多数或所有HOT存储器界面已被丢弃、移动到其他封装,或被复制到辅助存储。因此,COLD页面可能已被移动到经停放的封装。
[0048] ○此封装上的线程和进程已被挂起、终止或移动到其他封装。
[0049] ○被分配给该封装的所有中断或中断的子集已被阻塞或移动到其他封装。
[0050] ○保存(如果有必要的话)有关封装配置的足够的状态,使得当不再期望该封装处于低功率状态时可将其成功地返回到完全活动状态并继续其整套职责。
[0051] ●硬亲和性暗示特定的中断、线程或进程只能在特定的处理器子集(其硬亲和性集)上运行。
[0052] ●软亲和性暗示特定的中断、线程或进程具有在特定的处理器子集(其软亲和性集)上运行的偏好。
[0053] 活动水平“热度”分类是基于跟踪存储器访问率和CPU使用情况的。可通过硬件或软件以粗或细粒度水平来跟踪存储器对页面的访问。类似地,CPU使用情况可通过软件或硬件来跟踪。跟踪或捕捉存储器访问率的方式不是本公开的一部分。
[0054] 现在参考图1,例示出系统100。图1的系统100是(具有单个操作系统(OS)图像101的)多节点计算机服务器。在图1所例示的示例中,每个节点都是一个封装,并且在此示例中,每个节点都位于不同的功率区域中。图1例示了此系统包括节点102-X、102-Y、以及102-Z。在每个节点(通常被称为102)中存在多个CPU。例如,节点102-X包括CPU 104-X0、104-X1、104-X2和104-X3,节点102-Y包括CPU 104-Y0、104-Y1、104-Y2和104-Y3,以及节点102-Z包括CPU 104-Z0、104-Z1、104-Z2和104-Z3。每个节点可附连有存储器和/或I/O互连以及设备。例如,节点102-X附连到存储器106-X和I/O互连108-X,节点102-Y附连到存储器106-Y和I/O互连108-Y,以及节点102-Z被附连到存储器106-Z和I/O互连108-Z。注意到,存储器和I/O设备也可以是系统的一部分,而不与单个节点相关联。
[0055] 图2例示了利用多个功率区域实现的存储器的示例。单节点或多节点计算机服务器的每个节点(例如,202-X)包括CPU 204-X0、204-X1、204-X2、204-X3中的一个或多个,并且可被连接到多个存储器互连(例如,210-XM0、210-XM1和210-XM2)。每个存储器互连可被连接到多个存储器设备(例如,206-XM0-0、206-XM0-1和206-XM0-2)。在每个存储器设备中,可以存在多个(可能是嵌套的)功率区域(例如,212-P0和212-P1、以及嵌套功率区域212-P0-0、212-P0-1、212-P1-0和212-P1-1)。给定存储器互连上的所有设备也可构成功率区域。用于给定节点的所有存储器互连上的所有存储器设备也可构成功率区域。功率区域还可跨越节点边界。
[0056] 对主要和辅助功率区域的发现
[0057] 出于讨论的目的,功率区域在本文中被称为主要功率区域或辅助功率区域。
[0058] 现在将在图1和2所例示的系统100和200的上下文中描述各种示例。这些系统包括多个功率区域。在图1中,功率区域中的每一个都由封装和相关联的存储器和I/O互连来定义。在图2中,功率区域由存储器的一部分来定义。例如,节点102-X与存储器106-X和108-X一起可以是主要功率区域。节点102-Y和102-Z以及与其相关联的存储器和I/O互连可以是辅助功率区域。在图2中,功率区域206-XM0-0可以是主要功率区域,其中其他功率区域是辅助功率区域。虽然仅展示了单个主要功率区域,但是应当理解一系统可具有多个主要功率区域。
[0059] PRIMARY(主要)功率区域在其可进入什么功率状态方面具有更多的限制。例如,这可能是由于功率导轨与其他组件共享,并从而强制了功率区域和组件的功率状态之间的依赖关系。例如,一些存储器由系统硬件直接使用,并且总可被硬件访问。或者,可以有以下要求:例如,CPU内核104-X0总可用于处理某些硬件中断。根据该实现,PRIMARY功率区域可被停放但不离线是可能的。
[0060] SECONDARY(辅助)功率区域具有较少的限制,并因此在适当和可能的情况下(即停放和/或离线)可被置于低功率和/或无功率状态。
[0061] 系统硬件在引导时间将此类功率区域分类信息提供给OS 101或201,使得OS 101或201可相应地以允许将一个或多个功率区域转换为低功率或无功率状态的可能性的方式分配资源。例如,OS 101或201在系统引导期间分配一些UNMOVABLE资源。如果OS 101或201没有关于PRIMARY和SECONDARY功率区域分类的明确信息,则它可能会在SECONDARY功率区域内分配UNMOVABLE资源,使该区域随后不能停放/离线,并从而限制了可通过将SECONDARY功率区域下降到低功率或无功率状态而获得的能源节省的量。
[0062] 对资源的分配
[0063] 如果多个功率区域被暴露给OS 101或201,则可跨功率区域分发资源和活动以提高系统性能。如果系统的配置适用于功率区域停放或离线,则可以按保持这种可能性的方式来进行资源分配。不能被动态地移动的(UNMOVABLE)资源可优先从PRIMARY功率区域分配,而MOVABLE资源可从任一类型的功率区域分配。
[0064] 对中断的分配
[0065] 可能存在具有不同中断分配和重新分配能力的不同种类的硬件设备(例如,键盘、鼠标、网络控制器、存储控制器)。以下是不同中断场景的一些示例。
[0066] 在一种场景下,对于某些设备,中断被分配给单个CPU(例如,特定的内核或超线程)并且在设备被启用后不能由OS 101或201重新分配,在这种情况下,设备的中断被分配给PRIMARY功率区域(例如,包括节点102-X的功率区域)上的CPU(例如,CPU 104-X0)。如果一个或多个设备的中断被分配给SECONDARY功率区域,则此区域可能无法被停放或离线。
[0067] 在另一场景下,对于某些设备,中断可被分配给单个CPU功率区域,并且设备以诸如循环之类的某些方式来中断此功率区域上的CPU内核。该中断不能被重新分配,在这种情况下,设备的中断被分配给PRIMARY功率区域(例如,包括节点102-X的功率区域)。如果一个或多个设备的中断被分配给SECONDARY功率区域,则此区域可能无法被停放或离线。
[0068] 在另一场景下,对于某些设备,中断分配可被重置并动态地分配给其他CPU和功率区域。但是,当设备被禁用并重新被启用时,可能存在有一段时间的延迟,使得其在该时间间隔内不可被使用。此类设备的中断可被分配给PRIMARY或SECONDARY功率区域,并且随后根据需要重新定位,这使得延迟时间段足够短,所以不会被任何对此类延迟敏感的软件检测到或可被任何对此类延迟敏感的软件所接受。当选择向哪个功率区域分配诸如设备的中断时,可使用的一种试探法是重新分配中断的成本。如果在重新分配中断期间在不可使用的时间或其他此类标准方面代价过高,则设备的中断可被分配给PRIMARY功率区域。否则,考虑到中-高负载水平处的负载平衡,它们可被分配给SECONDARY功率区域。
[0069] 在另一场景下,对于某些设备,中断可被分配给不必处于同一个功率区域上的多个CPU。在此类场景下,将中断分配给不同功率区域上的CPU是可能合适的,从而确保至少一个中断被分配给PRIMARY功率区域。因此,例如,单个中断可被分配给节点102-X和节点102-Y两者。
[0070] 如果已知系统大部分时间都处于低-中负载水平,则所有的中断都可分配给PRIMARY功率区域,因为在此类情况下,系统在大多数时间都将具有一些或全部的SECONDARY功率区域处于低功率或无功率状态。然而,如果已知系统大部分时间都处于中-高利用率水平,则MOVABLE中断可被分配给SECONDARY功率区域,而UNMOVABLE中断可被分配给PRIMARY功率区域以便促进负载平衡。
[0071] 对进程和线程的分配或调度
[0072] 出于使功率区域停放或离线的目的,只要进程或线程可被按需移动,其就可(例如,基于负载平衡标准)被分配或调度至任何地方。UNMOVABLE线程或进程的一个示例是那些已被OS 101或201(可能代表应用或驱动程序)“硬关联”到CPU或CPU组的线程或进程。
[0073] 向PRIMARY功率区域进行对UNMOVABLE进程和线程的分配或调度。注意到,进程和线程在其生存期间可从MOVABLE转换为UNMOVABLE,在这种情况下,它们可能会动态地被重新定位(如果可能)以便将所有的UNMOVABLE进程和线程都保留在PRIMARY功率区域上。如果一个或多个UNMOVABLE进程和线程被分配给SECONDARY功率区域,则此区域可能无法被停放或离线。
[0074] 通常避免向COLD功率区域进行对MOVABLE进程和线程的分配或调度,因为新进程和线程很可能具有即时的活动并从而“加热”该COLD功率区域,除非这是期望的结果。下面将在工作负载趋势的讨论中对此进行更详细的讨论。
[0075] 对存储器页面的分配
[0076] 为UNMOVABLE的页面(即,页面内容)被分配自PRIMARY功率区域(例如,分配自存储器106-X)。如果它们被分配自SECONDARY功率区域,则它们可防止这些功率区域被停放或离线。其他类别的页面可被分配自任何地方。页面在其生存期间可从MOVABLE转换为UNMOVABLE,在这种情况下,它们可能会动态地被重新定位(例如在被转换为UNMOVABLE之前)以便将所有的UNMOVABLE页面都保留在PRIMARY功率区域上。
[0077] 通常避免从COLD功率区域进行对新MOVABLE页面的分配,因为新分配的页面很可能具有即时的活动并从而“加热”该COLD功率区域,除非这是期望的结果。
[0078] 对资源的重新定位
[0079] 对中断的重新定位
[0080] 停用功率区域
[0081] 一旦功率区域被选择为移动到低功率(停放)或无功率(离线)状态,分配给其CPU的中断将被重新定位到其他功率区域——特别是在离线的情况下。MOVABLE中断可被重新定位(即它们可被分配给其他CPU内核或功率区域)。可基于负载平衡技术来选择用于特定中断的目标目的地功率区域或将被重新定位的中断组。例如,可跟踪针对每个中断生成的平均中断速率,从而使得能够设计中断重新分配调度,使得任何单个功率区域或功率区域子集不会不公平地被中断淹没,导致不可接受的性能下降。替换地,如果工作负载趋势是已知的,则中断可出于合并的目的被重新定位。下面将在工作负载趋势的讨论中对此进行更详细的讨论。
[0082] 附加地,基于中断率(或其他统计),中断可被划分入不同的活动类别,诸如HOT和COLD。这些热特性以及每个功率区域的热特性可被用于确定将被重新定位的每个中断的最佳目标。为中断选择目标功率区域的此概念可进一步被扩展到在功率区域中选择特定的CPU。再次,如果确定特定的CPU正在饱和或具有变饱和的可能性,则可避免该CPU作为其他重新定位的中断的目标。
[0083] 如上所述,一些设备可具有可被同时分配给多个功率区域的中断。这提供了最低成本的中断重新定位机制,因为“重新定位”中断可通过简单地停用设备的中断目标的子集来实现,使得仅有针对活动功率区域的中断保持。
[0084] 重新激活功率区域
[0085] 类似地,当功率区域被选择为未停放/在线时,则可能期望将中断重新定位回当下可用的CPU。类似的负载平衡技术可被用于选择来自活动功率区域的中断以重新定位到被重新激活的功率区域。注意,各实施例可被实现,使得在功率区域被频繁地激活或重新激活的场景下避免“摆动(thrash)”,因为存在与重新定位中断相关联的非零功率和性能成本。重新定位中断太频繁可能会破坏停放/离线的功率效益。
[0086] 对进程和线程的重新定位
[0087] 停用功率区域
[0088] 一旦功率区域被选择为移动到低功率(停放)或无功率(离线)状态,其进程和线程就被重新定位到其他功率区域。(在此讨论中所有的功率区域的线程都被假设为是MOVABLE的,尽管可能存在停放可以不需要进程和线程完全腾空的解决方案。)可基于负载平衡来选择用于特定进程/线程或进程/线程组的目标目的地功率区域。例如,可跟踪每个进程和/或每个线程的CPU使用,从而使得能够设计进程/线程重新分配调度,使得任何单个内核、功率区域或功率区域子集不会不公平地被线程活动淹没,导致不可接受的性能下降。替换地,如果工作负载趋势是已知的,则进程/线程可出于合并的目的被重新定位。
[0089] 剩余(活动)功率区域的功率水平也可以是决定重新定位时所使用的标准。根据活动功率区域上的活动的水平,可能需要不同的功率水平。例如,各实施例可通过检查高级配置和功率接口(ACPI)“P状态”和“C状态”来确定功率水平。这可提供关于处理器所使用的功率和/或关于使处理器从空闲状态变为可用状态所需的功率的信息。基于每个线程CPU的使用预测,可预测每个内核和功率区域中短期CPU的使用情况。如果用于每个CPU的功率信息和用于不同性能和空闲状态的功率区域是由平台使得可用的,则此信息可被用于决定更好的资源分配。实质上,动态选择CPU性能和空闲状态的功率管理算法可以与选择目标目的地的功率管理算法进行协调,以用于经重新定位的进程和线程——以实现更好的整体系统能效。
[0090] 附加地,线程之间在资源共享方面的关系可在决定用于每个线程的目标CPU或功率区域时被分析和使用。例如,如果一组线程共享一组经常访问的存储器页面,则将所有或大部分共享的存储器页面与共享这些页面的所有或大部分线程一起保持在一个功率区域或功率区域子集上是有利的。驻留在同一功率区域上的那些线程可能能够共享高速缓存资源。如果线程不同时运行或具有低利用率要求,则它们甚至可以被分配给功率区域上的一个内核或内核子集。
[0091] 存储器绑定线程(不会从高速缓存资源中受益太大)可跨不同的套接字分布,因此存储器带宽要求也可跨可用的硬件分布。
[0092] 进程或线程与特定套接字或CPU的硬(非柔性)关联会带来挑战。一些实施例可通过将线程移动到维护关系的其他套接字或CPU来处理此类情况。例如,如果线程A与CPU 0关联,并且线程B与套接字1中的CPU 1关联,则这些线程分别被移动到套接字0上的CPU 0和1。如果存在很多硬关联的线程,并且各线程之间的关系不容易被找到,则只有存储器可以从功率区域离线。类似地,在套接字上分配UNMOVEABLE存储器页面会带来挑战。在这种情况下,可以使用部分离线,在此情况下,只有CPU离线,而存储器并不离线。部分离线的结果是可能存在非平凡的性能损失。因此,在性能和功率之间作出权衡决定。
[0093] 重新激活功率区域
[0094] 一旦功率区域被选择为未被停放/在线时,期望将进程/线程重新定位回当下可用的CPU是可能的。类似的负载平衡技术可被用于选择来自活动功率区域的进程/线程以重新定位到被重新激活的功率区域。注意,一些实施例被实现,使得在功率区域被频繁地激活或重新激活的场景下避免“摆动”,因为存在与重新定位进程和线程相关联的非零功率和性能成本。重新定位进程/线程太频繁可能会破坏停放/离线的功率益处。
[0095] 将存储器页面与相关联的进程和线程结合来重新定位
[0096] 在启用非均匀存储器访问(NUMA)的系统上,访问远程套接字的存储器通常比访问本地套接字的存储器花费更长的时间,并且因此OS 101或201尝试从线程最有可能在其上运行的套接字分配线程的存储器页面。当跨功率区域重新定位存储器页面时,会考虑相同的语义。访问相同存储器页面组或相同存储器页面组中的大部分的线程组可一起被重新定位到相同的套接字。例如,属于相同进程的线程通常具有更高的共享存储器页面的可能性,并因此可被重新定位为一组。
[0097] 基于工作负载趋势或功率条件修改中断、进程、线程和存储器页面管理[0098] 通过跟踪短期和/或长期历史,可利用工作负载行为的趋势来更快速地或甚至在其发生之前为工作负载强度或特性的变化做准备。可使用多个度量来监视工作负载水平,诸如整体存储器利用率以及每个区域的存储器利用率,或与正在被监视的存储器区域有关联的内核的CPU利用率。CPU利用率可能包括平均频率(如果是可变频率的时钟)以及总繁忙时间。存储器利用率可包括总体以及每个区域的存储器访问计数或延迟。附加地,如果存在可用于CPU和/或存储器硬件的功率表,它们还可提供对使用率水平的指示。此外,还可考虑一些其他输入,诸如系统是否正以省电模式运行或系统是否正在执行延迟敏感的操作等。
[0099] 分配
[0100] 如果工作负载有下降的趋势(即,朝向较低的活动水平),则可能存在功率区域将很快被停用的期望。在此类情况下,开始“冷却”功率区域是有道理的。在分配方面,这意味着不会从此(预先选定的)功率区域分配新的资源(其很可能是HOT的),因为它们随后将不得不被重新分配。选择哪个功率区域开始冷却可将当前或预期的活动水平考虑在内,诸如将目标对准以低速率中断和/或以低速率获得线程调度和/或具有少量的HOT存储器页面的CPU或功率区域。
[0101] 如果工作负载有上升的趋势(即,朝向较高的活动水平),则可能存在功率区域将很快被激活的期望。在这种情况下,如果发生(或预期发生)分配的突发,则比所需的更快地激活它可以是有利的。新激活的功率区域是用于新分配的良好目标。
[0102] 重新定位
[0103] 重新定位对功率和性能有影响,因此过度重新定位可能会破坏对能效进行优化的目的。工作负载趋势可被用于防止在资源利用率波动的环境中出现“摆动”。
[0104] 下面的讨论现在涉及可被执行的多个方法和方法动作。尽管这些方法动作可以以特定次序被讨论或在流程图中被例示为以指定次序发生,但是除非特别指明否则不需要任何特定排序,或者因某一动作取决于在该动作被执行之前完成的另一个动作而要求特定排序。
[0105] 现在参考图3,例示出方法300。方法300可以在计算环境中实施。方法300包括用于将资源分配给一个或多个功率区域的动作。该方法包括标识一个或多个主要功率区域,其具有指示主要功率区域不被处于离线状态的限制(动作302)。
[0106] 方法300进一步包括标识一个或多个辅助功率区域,其可被停放或离线到具有受限功能的受限状态中,其中在处于受限状态时,功能从该一个或多个辅助功率区域中被移除(动作304)。具有受限功能的功率区域在上文封装离线和封装停放的定义中被描述。应当理解,虽然这些定义具体地讨论了封装,但概念可被应用于一般的功率区域。
[0107] 方法300进一步包括基于中断特征来标识应该被分配给主要功率区域的至少一个中断(动作306)。
[0108] 方法300进一步包括将至少一个中断分配给所标识的主要功率区域(动作308)。
[0109] 方法300进一步包括基于线程特征来标识应该被分配给主要功率区域的至少一个线程(动作310)。
[0110] 方法300进一步包括将至少一个线程分配给所标识的主要功率区域(动作312)。
[0111] 方法300进一步包括基于页面特征来标识应该被分配给主要功率区域的至少一个页面(动作314)。
[0112] 方法300进一步包括将至少一个页面分配给所标识的主要功率区域(动作316)。
[0113] 方法300还可进一步包括将辅助功率区域从受限状态带回并将至少一个中断、一个线程或一个页面分配给从受限状态被带回的辅助功率区域。
[0114] 在一些实施例中,将辅助功率区域从受限状态带回包括基于对附加计算资源的预期未来需求来将辅助功率区域从受限状态带回。预期需求并不是确定的,而可能基于对历史趋势、资源使用轨迹、经标识的更高的资源使用期限(诸如通过手动设置来确定的那些资源使用期限等)的分析。例如,可基于每天中的某时刻、特定的一天、对资源使用量已经增加的确定等将辅助功率区域带回。
[0115] 方法300可进一步包括从辅助功率区域移动一个或多个中断、线程或页面,并然后将辅助功率区域移动到受限状态。
[0116] 方法300可进一步包括基于负载平衡标准来将至少一个中断、一个线程、或一个页面分配给主要或辅助功率区域。
[0117] 方法300可进一步包括将至少一个中断、一个线程、或一个页面分配给主要或辅助功率区域以将相关线程或相关存储器进行分组。
[0118] 方法300可进一步包括基于至少一个中断、一个线程、或一个页面从MOVABLE资源变化成UNMOVABLE资源来将该至少一个中断、一个线程、或一个页面分配给主要功率区域。
[0119] 方法300可进一步包括基于至少一个中断、一个线程、或一个页面中从UNMOVABLE资源变化成MOVABLE资源来将该至少一个中断、一个线程、或一个页面分配给辅助功率区域。
[0120] 方法300可进一步包括将一个或多个中断分配给主要功率区域和一个或多个辅助功率区域两者。
[0121] 方法300可在功率区域中的一个或多个包括封装的情形下实施。
[0122] 此外,各方法可由计算机系统实现,计算机系统包括一个或多个处理器以及诸如计算机存储器这样的计算机可读介质。特别是,计算机存储器可以存储计算机可执行指令,该计算机可执行指令在由一个或多个处理器执行时使各种功能得以被执行,诸如各实施例中记载的动作。
[0123] 现在参考图4,例示了用于将资源分配给一个或多个功率区域的系统400。系统400包括一个或多个计算机处理器402。一个或多个计算机处理器402被配置为实现功率区域确定模块404。功率区域确定模块404被配置为标识其具有指示主要功率区域不被处于离线状态的限制的一个或多个主要功率区域406,以及标识其可被停放或离线到具有受限功能的受限状态中的一个或多个辅助功率区域408,其中在处于受限状态时,功能从该一个或多个辅助功率区域中被移除。
[0124] 系统400进一步包括资源分配模块410。其中所述资源分配模块被配置成:基于中断特性标识中断412是否应该被分配给主要功率区域406或辅助功率区域408;基于线程特性标识线程414是否应该被分配给主要功率区域406或辅助功率区域408;基于页面特性标识页面416是否应该被分配给主要功率区域406或辅助功率区域408;以及如经标识的,将中断412、线程414和页面416分配给主要406或辅助408功率区域。
[0125] 系统400可进一步包括功率区域激活模块418,所述功率区域激活模块被配置为将辅助功率区域408从受限状态带回。在一些实施例中,所述功率区域激活模块418被配置为基于对附加计算资源的预期未来需求将辅助功率区域408从受限状态带回。在一些实施例中,所述功率分配模块410被配置成从辅助功率区域408移动一个或多个中断、线程或页面,并且所述功率区域激活模块418被配置成将所述辅助功率区域408移动到受限状态。
[0126] 在一些实施例中,所述资源分配模块410被配置成基于负载平衡标准来将至少一个中断、一个线程、或一个页面分配给主要406或辅助408功率区域。
[0127] 在一些实施例中,所述资源分配模块410被配置成将至少一个中断、一个线程、或一个页面分配给主要406或辅助408功率区域以将相关线程或相关存储器进行分组。
[0128] 在一些实施例中,所述资源分配模块410被配置成基于至少一个中断、一个线程、或一个页面从MOVABLE资源变化成UNMOVABLE资源或从UNMOVABLE资源变化成MOVABLE资源来分配该至少一个中断、一个线程、或一个页面。
[0129] 在一些实施例中,所述资源分配模块410被配置成将一个或多个中断分配给主要功率区域406和一个或多个辅助功率区域408两者。
[0130] 本发明的各实施例可以包括或使用包括计算机硬件的专用或通用计算机,如以下更详细讨论的。本发明范围内的各实施例也包括用于实现或存储计算机可执行指令和/或数据结构的实体及其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种显著不同的计算机可读介质:物理计算机可读存储介质和传输计算机可读介质。
[0131] 物理计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储(如CD、DVD等)、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。
[0132] “网络”被定义为使得电子数据能够在计算机系统和/或模块和/或其它电子设备之间传输的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传递或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可以包括可用于携带计算机可执行指令或数据结构形式的期望程序代码装置并可被通用或专用计算机访问的网络和/或数据链路。上述的组合也被包括在计算机可读介质的范围内。
[0133] 此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输计算机可读介质自动转移到物理计算机可读存储介质(或者相反)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,并且然后最终被传输至计算机系统RAM和/或计算机系统处的较不易失性的计算机可读物理存储介质。因此,计算机可读物理存储介质可以被包括在同样(或甚至主要)利用传输介质的计算机系统组件中。
[0134] 计算机可执行指令包括例如使通用计算机、专用计算机或专用处理设备执行某一功能或一组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。
[0135] 本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备二者中。
[0136] 替换地或附加地,此处描述的功能可以至少部分由一个或多个硬件逻辑组件来执行。例如、但非限制,可使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、程序专用的集成电路(ASIC)、程序专用的标准产品(ASSP)、片上系统系统(SOC)、复杂可编程逻辑器件(CPLD)、等等。
[0137] 本发明可以以其他具体形式来体现,而不背离其精神或特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求书的范围所涵盖。