关联能量消耗与虚拟的制造方法
【专利摘要】本发明公开关联处理器和处理器核心能量消耗与任务(诸如虚拟机)。各种事件使跟踪记录被写入到用于处理器的跟踪缓冲器。读取与使用处理器的处理器核心的任务关联的标识符。此外,还读取与处理器核心的能量消耗关联的一个或者多个值。响应于事件,向跟踪缓冲器存储器写入与处理器核心的能量消耗关联的一个或者多个值以及标识符。
【专利说明】关联能量消耗与虚拟机
【技术领域】
[0001]本发明主题的实施例总体涉及计算机领域,并且更具体地,涉及关联在计算机上运行的虚拟机或者其它任务的能量消耗。
【背景技术】
[0002]用于大型数据中心和云计算环境的运营成本的很大一部分和与数据中心或者云服务器关联的能量成本有关。在这样的环境中,可以指派虚拟机来代表用户运行任务。通常指派虚拟机在多核心系统的一个或者多个核心上运行。数据中心或者云运营商可能希望针对虚拟机在处理器核心上运行时消耗的能量向用户开账单。然而目前没有用于直接测量处理器核心消耗的能量的方式。作为结果,先前系统已经使用各种模型来估计虚拟机的功率消耗。然而这样的模型通常使用未必与能量消耗良好相关的基于性能的值。
【发明内容】
[0003]公开各种实施例,在这些实施例中确定用于任务(诸如虚拟机)的能量消耗。各种事件使跟踪记录被写入到用于处理器的跟踪缓冲器。读取与使用处理器的处理器核心的任务关联的标识符。此外,还读取与处理器核心的能量消耗关联的一个或者多个值。响应于事件,向跟踪缓冲器存储器写入与处理器核心的能量消耗关联的一个或者多个值以及标识符。
【专利附图】
【附图说明】
[0004]可以通过参照附图更好地理解本实施例并且使许多目的、特征和优点为本领域技术人员所清楚。
[0005]图1描绘根据实施例的用于关联能量消耗与任务的系统。
[0006]图2描绘根据实施例的小芯片(chiplet)。
[0007]图3描绘在一些实施例中使用的跟踪缓冲器记录。
[0008]图4是图示用于关联能量消耗与虚拟机的方法的流程图。
[0009]图5是图示用于确定用于任务(诸如虚拟机)的能量消耗的方法的流程图。
[0010]图6是图示用于根据缩放因子调整能量消耗值的方法的流程图。
【具体实施方式】
[0011]以下描述包括体现本发明主题的技术的示例性系统、方法、技术、指令序列和计算机程序产品。然而理解无这些具体细节仍然可以实现描述的实施例。例如虽然示例涉及关联处理器核心的能量消耗与虚拟机,但是处理器核心的能量消耗可以与其它任务或者任务组关联。在其它实例中,并未具体示出众所周知的指令示例、协议、结构和技术以免模糊描述。
[0012]一般而言,实施例提供一种用于关联处理器核心的能量消耗与在处理器核心上运行的任务(例如虚拟机)的手段。各种传感器点检测或者测量与处理器核心的能量消耗关联的活动,这些处理器核心代表在系统上运行的虚拟机执行指令并且访问存储器。向处理器核心提供用于在核心上运行的虚拟机的标识符。多种事件可以触发向存储器写入跟踪缓冲器记录,其中跟踪缓冲器包括与核心和在核心上运行的虚拟机在写入跟踪缓冲器记录时的能量消耗关联的数据。可以聚合并且分析跟踪缓冲器中的记录以确定与在系统上运行的虚拟机关联的能量消耗。
[0013]图1描绘根据实施例的用于关联能量消耗与任务的系统100。在一些实施例中,系统10包括处理器102、存储器130和管理程序(hypervisor) 140并且可以可选地包括能量管理单元150。
[0014]处理器102是多核心处理器,其中在小芯片104中提供处理器核心。虽然在图1中图示三个小芯片(例如小芯片104AU04B和104C),但是从本公开内容受益的本领域技术人员将理解处理器102可以具有更多或者更少小芯片104。除了小芯片104之外,处理器102还包括跟踪存储器110和功率管理单元120。
[0015]小芯片104包括处理器核心、存储器(例如L2和L3缓存)和用于处理器核心的支持逻辑单元。小芯片104也包括功率代理(power proxy)单元106和任务标识(ID)寄存器108。任务ID寄存器108是专用寄存器,该专用寄存器存储用于在小芯片104的处理器核心上执行的任务的标识符。功率代理106收集小芯片104的处理器核心的能量消耗并且生成与该能量消耗关联的数据。某些事件(诸如定时器到期、电压改变等)使功率代理106向处理器102的跟踪存储器110中的与小芯片关联的小芯片队列112写入跟踪缓冲器记录114。跟踪存储器110包含用于处理器102上的每个小芯片的小芯片队列112。跟踪缓冲器记录114包括和与小芯片关联的能量消耗有关的各种数据元素。以下参照图3提供关于跟踪缓冲记录114的数据元素的更多细节。在一些实施例中,小芯片队列112是被配置用于存储八个跟踪缓冲器记录114的圆形队列。在小芯片队列112中维持的跟踪缓冲器记录114的数目可以根据跟踪存储器110的大小和处理器102上的小芯片数目而变化。希望跟踪缓冲器记录的数目大到足以避免数据在它被功率管理单元120处理之前被重写。跟踪存储器110可以如图1中所示是处理器102的一部分。从公开内容受益的本领域技术人员将理解跟踪存储器110可以位于处理器102可访问的其它部件上。
[0016]功率管理单元120从小芯片队列112定期地读取跟踪记录114并且处理数据使得来自与相同任务ID关联的跟踪记录114的数据被聚合在一起。在一些实施例中,功率管理单元每32毫秒读取并且处理跟踪记录。希望选择如下间隔,该间隔避免数据在功率管理单元120可以处理队列112中的跟踪记录之前在该跟踪记录中被重写。随着处理跟踪记录,功率管理单元递增用于队列的队列指针以指向下一跟踪记录。功率管理单元120然后向管理程序140可访问的存储器130中的能量阵列132添加按照任务ID聚合的数据。能量阵列132维持用于任务的能量消耗数据并且在一些实施例中根据任务标识符来编索引。例如在一些实施例中,可以通过包括虚拟机标识符的任务ID对能量阵列132编索引。功率管理单元120通过使用任务标识符作为进入能量阵列中的索引将用于任务的当前处理的能量消耗值与已经存储于能量阵列132中的值相加来积累能量消耗值。
[0017]管理程序140管理虚拟化的操作环境并且提供用于系统100的虚拟化的资源(例如虚拟化的硬件资源)。管理程序140管理在系统100的各种计算机上执行的虚拟机(也称为分区)。虚拟机在虚拟机内运行操作系统和应用。在一个虚拟机上运行的操作系统和应用可以完全不同于在其它虚拟机上运行的操作系统和应用。例如一个虚拟机可以在AIX操作系统上运行记账系统,而另一虚拟机可以在Linux操作系统上运行文件服务器应用。备选地,虚拟机可以运行与另一虚拟机相同的操作系统和应用并且在另一虚拟机中的故障或者超负荷的情况下用作备用。从虚拟机的观点来看,虚拟机表现为实际上控制下层硬件的独立计算机,每个虚拟机与其它虚拟机共享硬件资源。
[0018]在一些实现方式中,在管理程序140调度虚拟机以在处理器核心上运行时,管理程序140向用于处理器核心的小芯片104的任务ID寄存器108写入与虚拟机关联的虚拟机标识符,该处理器核心将执行虚拟机。功率代理106从任务ID寄存器108读取虚拟机标识符并且在用于小芯片104的能量消耗值被写入到跟踪存储器110中的小芯片队列112时在跟踪缓冲器记录114中存储虚拟机标识符。
[0019]如图1中所示,在一些实施例中,功率管理单元120是在处理器102上提供的片上控制器。在备选实施例中,功率管理单元120可以与处理器102分离。在更多备选实施例中,功率管理单元120提供的与处理跟踪存储器110中的跟踪记录114有关的功能可以由管理程序140执行。在这样的实施例中,管理程序140直接访问跟踪存储器110以处理记录。
[0020]能量管理单元150跨越多个计算系统提供能量管理功能。例如能量管理单元150可以提供用于数据中心或者用于支持云计算环境的计算系统的能量管理功能。能量管理单兀的不例是来自IBM公司的IBM Systems Director Active Energy Manager。在一些实施例中,能量管理单元15定期地查询管理程序140以获得与管理程序管理的任务(例如虚拟机)关联的能量消耗数据。
[0021]图2提供关于根据实施例的小芯片104的更多细节。小芯片104包括处理器核心202、L2缓存存储器204和L3缓存存储器206。处理器核心202、L2缓存存储器204和L3缓存存储器206各自包括一个或者多个活动感测点208、210和212。活动感测点检测可以与部件的能量消耗相关的事件。例如活动感测点208可以检测与处理器核心功能(诸如加载和存储操作、指令分派、定点运算、浮点运算和其它处理器核心功能)关联的事件。活动感测点210和212可以检测与L2和L3缓存读取和写入关联的事件。这些事件中的每个事件具有关联的能量消耗值。在活动感测点208、210和212检测到事件时,功率代理106可以递增与事件关联的事件计数器216。在一些实施例中,功率代理106可以使用活动权值214对在感测点208、210和212检测的各种活动加权。活动权值214根据与特定事件关联的能量消耗相对于其它事件调整事件计数器216。例如可以基于浮点运算比缓存查找使用更多功率向与浮点事件关联的计数器比与缓存查找事件关联的计数器加权更多。
[0022]活动权值214可以可配置。例如可以在管理程序140或者配置工具可以写入的存储器或者寄存器中维持活动权值214。
[0023]一般而言,可以通过对建模不同工作量以及回归测试来确定事件计数器216中计数的事件和用于活动权值214的具体值以确定如下活动和加权的组合,这些活动和加权提供与测试的系统的实际能量消耗的最强相关性。在一些实施例中,事件计数器可以与分派的指令、完成的指令、执行寄存器文件访问、执行流水线问题类型、指令提取单元事件、力口载-存储单元缓存事件、加载-存储单元D-ERAT(有效到实际数据地址转换)事件、加载-存储单元预提取事件、L2缓存读取/写入和L3缓存读取/写入中的一项或者多项的各种组合关联。从公开内容受益的本领域技术人员将理解可以对其它事件计数。
[0024]以上描述的事件可以根据电压源而与各种电压域关联。例如在一些实施例中,Vdd电压域包括与向核心和缓存逻辑供电的电压轨关联的事件,而Vcs电压域包括与向L2和L3缓存供电的Vcs轨关联的事件。Vdd和Vcs电压二者可以由VRM (电压调节器模块)控制并且可以随时间变化。从公开内容受益的本领域技术人员将理解存在的电压域数目和类型可以变化。
[0025]活动计数器220代表与特定电压域关联的事件的加权求和。因此,对于Vdd电压域:
[0026]Vdd 活动计数=event_counterl*event_weightl+…+
event_counterN*eventweightN
[0027]其中在计算中包括的事件计数器是与Vdd电压关联的那些事件。可以针对与其它电压域(例如Vcs电压域)关联的事件计算相似的活动计数。
[0028]在一些实施例中,小芯片104包括P状态(功率状态)改变寄存器218。P状态改变寄存器218提供一种用于管理程序140用信号通知电压改变点的机制。这样的改变可以使功率代理106向跟踪存储器110中的与小芯片关联的小芯片队列112写入新的跟踪缓冲器记录元素114。
[0029]图3描绘用于跟踪缓冲器记录114的示例数据结构。在一些实施例中,跟踪缓冲器记录114中的字段包括间隔定时器302、任务ID304、空闲状态306、一个或者多个活动计数器308、存储器活动计数器310、平均频率计数312、内部VRM (电压调节器模块)电压314、外部VRM电压316、事件ID318、核心温度320和序列号322。
[0030]间隔定时器302存储如下值,该值代表自从功率代理上次写入跟踪缓冲器记录114起的时间间隔。
[0031]任务ID304是在写入跟踪缓冲器记录114时在核心上运行的任务的任务ID。可以从任务ID寄存器108获得这一个值。
[0032]空闲状态306是如下值,该值代表处理器核心在写入跟踪缓冲器记录114时的空闲状态。在一些实施例中,空闲状态306的值指示用于处理器核心的非空闲状态、瞌睡状态(nap state)、睡眠状态、“费劲(winkle)”状态(即更深度睡眠)或者唤醒状态。
[0033]活动计数器308存储用于由功率代理106维持的一个或者多个活动计数器220的值。如以上描述的那样,在一些实施例中,可以将与特定电压域关联的计数器求和成一个元素。可以向活动计数器308写入用于与电压域关联的各种活动计数器的计算和加权的求和。存储器活动计数器310是与由处理器核心执行的存储器读取和写入关联的计数器。
[0034]平均频率计数312是处理器核心在测量的时间间隔内的平均频率。系统的各种部件可以改变电压和频率二者。例如在小芯片104上的性能管理程序或者安全管理程序可以请求电压或者频率改变。此外,管理程序140可以请求电压或者频率改变。如果频率已经在测量的间隔内改变,则使用平均频率计数在与瞬时或者当前频率比较时可以提供更准确能量消耗测量。
[0035]内部VRM (电压调节器模块)电压314是用于处理器102的内部VRM的电压值。内部VRM控制用于处理器102上的部件的电压。[0036]外部VRM电压316是用于外部VRM的电压值。外部VRM控制向处理器102供应的电压。
[0037]事件ID318是如下值,该值代表触发功率代理单元106写入跟踪记录114的事件。在一些实施例中,事件可以包括定时器到期、任务ID寄存器的值改变(这指示由处理器核心执行的任务已经改变)、进入空闲状态、退出空闲状态、内部或者外部电压改变或者内部或者外部VRM状态改变。从公开内容受益的本领域技术人员将理解其它事件可以使功率代理单元106向小芯片队列112写入新跟踪缓冲器记录114。在事件指示值已经改变(例如任务ID改变、电压改变等)的情况下,将在改变出现之前使用该值来写入跟踪记录114。
[0038]核心温度320是如下值,该值代表由用于处理器核心的温度传感器提供的温度。温度与处理器和有关部件的能量消耗良好相关并且可以用作输入以确定估计的功率消耗。
[0039]序列号322是如下值,该值指示跟踪缓冲器记录114的序列号,并且该序列号32可以由功率管理单元用来检测数据丢失或者无效记录。在一些实施例中,序列号322包括无效位,该无效位指示队列中的记录是否包含有效数据或者可用于写入。
[0040]以上描述的跟踪缓冲器记录元素是在一个示例实施例中包括的元素的示例。从公开内容受益的本领域技术人员将理解并非以上所有元素将在每个实施例中存在并且可以在备选实施例中在跟踪缓冲器记录中包括其它元素。
[0041]图4是图示用于关联能量消耗与任务(诸如虚拟机)的方法400的流程图。该方法始于块402,其中执行该方法的系统或者部件确定事件已经出现。如以上所言,事件可以是定时器到期、任务ID寄存器的值改变(这指示处理器核心执行的任务已经改变)、进入空闲状态、退出空闲状态、内部或者外部电压改变或者内部或者外部VRM状态改变中的任一项。
[0042]可以响应于在块402检测到事件来执行块404-408。事件可以是定时器到期、与在处理器核心上运行的任务关联的任务ID的值改变(因此指示处理器核心执行的任务已经改变)、进入空闲状态、退出空闲状态、内部或者外部电压改变或者内部或者外部VRM状态改变。从公开内容受益的本领域技术人员将理解可以检测其它事件。
[0043]在块404,读取与在处理器核心上执行的任务关联的任务标识符。在一些实施例中,在向处理器核心指派任务时从寄存器读取管理程序或者操作系统写入的任务标识符。任务标识符可以是任务专属标识符,诸如虚拟机标识符或者进程标识符。备选地,任务标识符可以与出于确定能量消耗的目的而将要分组在一起的一组任务关联。
[0044]在块406,确定代表自从功率代理单元写入的上个跟踪记录起的能量使用的能量使用值。如以上讨论的那样,这样的值可以包括代表能量消耗事件的活动计数器,也可以确定电压值和频率值。
[0045]在块408,向跟踪缓冲器中的小芯片队列写入在块406确定的能量使用值。在一些实施例中,写入跟踪缓冲器记录114 (图1和3)。在预期向跟踪缓冲器中的小芯片队列的下一写入时推进用于小芯片队列的指针。
[0046]可以与块402-408独立地执行块410。在一些实施例中,可以以周期性的间隔执行块410。例如可以每250微秒执行块410。在块410,从跟踪缓冲器读取一个或者多个记录。在一些实施例中,处理每个可用记录以根据记录中的数据确定由记录代表的总能量消耗。例如可以将用于记录中的与特定电压域关联的活动计数器中的每个活动计数器的能量消耗求和以确定与记录关联的总能量消耗。可以基于记录中的电压、温度和频率值调整每个电压域活动计数器对记录代表的总能量消耗的贡献。例如在一些实施例中,可以根据下式确定用于电压域Vdom的跟踪记录能量:
[0047]
【权利要求】
1.一种方法,包括: 接收与使用处理器核心的任务关联的标识符; 读取与所述处理器核心的能量消耗关联的一个或者多个值; 检测事件的出现;并且 响应于检测所述事件,向跟踪存储器写入与所述处理器核心的所述能量消耗关联的所述一个或者多个值以及所述标识符。
2.根据权利要求1所述的方法,其中接收与使用所述处理器核心的所述任务关联的所述标识符包括接收与虚拟机关联的标识符。
3.根据权利要求1所述的方法,其中检测所述事件的出现包括检测定时器到期、用于所述处理器核心的电压中的改变、用于所述处理器核心的频率中的改变、用于所述处理器核心的功率状态中的改变或者与使用所述处理器核心的所述任务关联的所述标识符中的改变中的一项或者多项。
4.根据权利要求1所述的方法,还包括: 从所述跟踪存储器读取一个或者多个记录;并且 针对与使用所述处理器核心的所述任务关联的每个标识符,确定用于所述任务的能量消耗值。
5.根据权利要求4所述的方法,还包括: 至少部分基于所述跟踪存储器中的一个或者多个记录确定用于处理器的估计的功率消耗值; 基于所述估计的功率消耗值和用于所述处理器的实际功率消耗值确定缩放因子;并且 至少部分基于所述缩放因子缩放用于所述任务的所述能量消耗值。
6.根据权利要求1所述的方法,其中读取与所述处理器核心的能量消耗关联的一个或者多个值包括读取用于耦合到所述处理器核心的L2缓存、L3缓存中的一个或者多个缓存的一个或者多个能量消耗值。
7.根据权利要求1所述的方法,还包括: 将加权应用于与所述处理器核心的能量消耗关联的所述一个或者多个值中的单独值。
8.一种处理器,包括: 多个小芯片,其中每个小芯片包括: 处理器核心;以及 功率代理单元,所述功率代理单元被配置用于: 读取与使用处理器核心的任务关联的标识符, 读取与所述处理器核心的能量消耗关联的一个或者多个值, 检测事件的出现,并且 响应于所述事件,向跟踪缓冲器写入与所述处理器核心的所述能量消耗关联的所述一个或者多个值以及所述标识符。
9.根据权利要求8所述的处理器,还包括存储器,其中在所述存储器中维持所述跟踪缓冲器。
10.根据权利要求8所述的处理器,还包括用于存储与使用所述处理器核心的所述任务关联的所述标识符的任务标识寄存器。
11.根据权利要求8所述的处理器,其中所述事件包括定时器到期、用于所述处理器核心的电压中改变、用于所述处理器核心的频率中的改变、用于所述处理器核心的功率状态中的改变或者与使用所述处理器核心的所述任务关联的所述标识符中的改变中的一项或者多项。
12.根据权利要求8所述的处理器,还包括:功率管理单元,被配置用于: 从所述跟踪缓冲器读取一个或者多个记录;并且 针对与使用所述处理器核心的所述任务关联的每个标识符,确定用于所述任务的能量消耗值。
13.根据权利要求8所述的处理器,其中每个小芯片包括耦合到所述处理器核心的至少一个缓存,并且其中所述功率代理单元还被配置用于读取用于所述至少一个缓存的一个或者多个能量消耗值并且向所述跟踪缓冲器写入所述一个或者多个能量消耗值。
14.根据权利要求8所述的处理器,其中每个小芯片包括: 一个或者多个活动计数器,用于存储所述能量消耗值;以及 一个或者多个活动权值寄存器,用于存储与所述一个或者多个活动计数器关联的加权; 其中所述功率代理单元还被配置用于将所述加权应用于与所述处理器核心的能量消耗关联的所述一个或者多个值。
15.一种装置,包括: 处理器,所述处理器具有一个或者多个存储器,所述一个或者多个存储器在其中包含计算机可用程序代码,所述计算机可用程序代码包括如下计算机可用程序代码,被配置用于: 读取与所述多个处理器核心中的处理器核心的能量消耗关联的一个或者多个值; 检测事件的出现;并且 响应于所述事件,向跟踪存储器写入与所述处理器核心的所述能量消耗关联的所述一个或者多个值以及所述标识符。
16.根据权利要求15所述的装置,其中被配置用于接收与使用所述处理器核心的所述任务关联的所述标识符的所述计算机可用程序代码包括被配置用于接收与虚拟机关联的标识符的计算机可用程序代码。
17.根据权利要求15所述的装置,其中被配置用于检测所述事件的出现的所述计算机可用程序代码包括被配置用于检测定时器到期、用于所述处理器核心的电压中的改变、用于所述处理器核心的频率中改变、用于所述处理器核心的功率状态中改变或者与使用所述处理器核心的所述任务关联的所述标识符中的改变中的一项或者多项的计算机可用程序代码。
18.根据权利要求15所述的装置,其中所述计算机可用程序代码还被配置用于: 将加权应用于与所述处理器核心的能量消耗关联的所述一个或者多个值中的单独值。
【文档编号】G06F11/36GK103838668SQ201310594796
【公开日】2014年6月4日 申请日期:2013年11月21日 优先权日:2012年11月27日
【发明者】B·布罗克, T·格洛克勒, C·R·勒夫格, K·拉加玛尼, G·S·斯蒂尔, M·S·艾伦-韦尔 申请人:国际商业机器公司