虚拟机功耗测量和管理的制作方法

文档序号:6359701阅读:752来源:国知局
专利名称:虚拟机功耗测量和管理的制作方法
虚拟机功耗测量和管理
背景技术
数据中心、云计算基础设施、计算集群、企业计算工具和高性能计算工具在将工作负载运行在共享物理服务器上的同时,越来越多地使用虚拟机来隔离工作负载。虚拟机是对计算设备的仿真,其严格意义上是软件但像物理计算设备那样运作。这意味着一个或多个虚拟机可驻留在单个物理主机服务器上。然而,在运行在虚拟机上的客户端和全部软件看来,每个虚拟机是独立的服务器。虚拟化(或使用虚拟机)允许将多个应用安全地置于单个物理主机服务器上,因为每个应用在其“虚拟”计算机内部运行,并且不影响其他应用。这允许服务器资源被更好地利用,并且降低所需的服务器的数量以及托管它们(诸如电力和冷却)的操作成本。因此,虚拟化是管理计算资源的高效技术,并正在数据中心和大规模计算工具中获得广泛的接受。数据中心和其他计算工具经常监视服务器的功率使用,以便正确地管理功率容量和分布。功率测量结果数据还用于制定若干手动和自动的功率管理决策。事实上,功率计 量在数据中心中是如此的广泛,以至于功率分配单元(PDU)、电源板、服务器电源都供应测量功率所需的功率计量仪器,并且在新服务器中,甚至是服务器主板已经包含了测量功率所需的功率计量仪器。测量物理服务器中的功耗的另一种方法是将功率计量仪器连接到服务器。物理服务器的功耗可通过计量被供应给服务器的电量来测量。然而,虚拟机是在软件中被创建的,并且不存在将功率表连接到虚拟机的简单方法。这使得测量虚拟机的功耗非常困难。用于物理服务器的技术仅能报告服务器的总的功率提取。但是,它们无法用于测量驻留在单个物理主机服务器上的多个虚拟机中每一个的单独功耗。事实上,单纯地使用硬件方案无法测量虚拟机的功耗。测量虚拟机的功耗的能力是重要的。用户或服务器管理器不能测量每台虚拟机所使用的功率。出于若干理由,测量该功率是有用的。例如,如果虚拟机正在使用过量的功率,则它可能必须被关闭或被迁移到具有额外能力的不同的电源电路。另外,软件开发者可测量出它们的软件在被运行于物理服务器上时消耗了多少能量,但无法在软件运行在虚拟机上时测量该能量。无法测量功率使用削弱了开发者优化软件以得到更低功耗的能力。测量虚拟机功耗的另一个用途是基于功率使用向用户返还费用。诸如在云计算中使用的共享物理服务器允许多个用户在共享的物理基础设施上运行虚拟机。物理服务器的所有者可能希望基于功率使用向虚拟机用户收费。而虚拟机功率计量的另一个用途、以及下面更详细地描述的一个用途产生于虚拟机功率设限。功率设限允许电力基础设施的过度预订,并带来功率容量的更高效的利用率。然而,当前的功率设限技术被设计用于物理服务器,而无法在被应用到虚拟机时很好地工作。例如,对物理服务器的功率进行设限导致了对在该服务器上托管的全部虚拟机的设限。这破坏了虚拟机所提供的工作负载的隔离,并可使得使用虚拟化的益处受挫。因此,大规模计算工具中功率管理的主要组件之一是对功率的可视性。然而,越来越多地在数据中心中使用的虚拟化机器正缺少这种能力。使用虚拟机允许安全地隔离多个处于相同位置的工作负载,使得多个工作负载能在更少的服务器上被合并,并且带来被改善的资源利用率。然而,缺少对虚拟机功率使用的可见性带走了在无虚拟化的情况下可用的服务器功率计量的许多好处。

发明内容
提供本发明内容以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。虚拟机功率计量系统和方法的各实施例测量各个虚拟机的功耗。功耗计量通常用在物理服务器上,以制定若干功率管理和操作决策。虚拟机功率计量系统和方法的各实施例允许在虚拟机上也能作出这样的决策。一般的想法是测量整个物理主机服务器的功耗的功率表测量被转换成各个虚拟机功率表,该虚拟机功率表测量驻留在主机服务器上的每个单独虚拟机的功耗。虚拟机功 率计量系统和方法的各实施例将与任意数量的虚拟机一同工作,并且跨多个物理主机服务器工作。了解单个虚拟机的功耗对于在数据中心或任一虚拟化服务器中制定的若干功率管理决策来说是有用的。例如,虚拟机功率计量可用于虚拟机功率设限,以允许虚拟化环境中的功率过度预订。可以执行该虚拟机管理设限,而不破坏隔离属性。各个虚拟机功耗测量结果还可用于跟踪跨越多个虚拟机的活动(诸如,搜索查询)的功耗。虚拟机功率计量系统和方法的各实施例不需要供应功率模型的硬件。在进行中得知所需要的任何信息。该系统和方法的各实施例自动地学习将硬件(或资源)使用(诸如,中央处理单元(CPU)使用、磁盘使用、存储器使用、网络使用等)与功耗相关的功率模型。随后跟踪每个虚拟机的硬件使用以推断该虚拟机的功耗。该系统和方法的各实施例在两大步骤中计算该功耗。第一,使用物理主机服务器的总功耗以及特定虚拟机的资源利用率来生成并训练功率模型。资源利用率是对虚拟机正在使用多少资源的判定。将这些资源利用率相加以发现虚拟机的总的资源利用率。生成将总的资源利用率与总功耗相关的功率模型。该系统和方法的各实施例还在该步骤期间确定最优功率模型系数。这通过确定由虚拟机正在使用的资源的数量N来实现。生成并求解具有N个未知数的一系列N个等式,以获得最优功率模型系数。该系统和方法的各实施例还包括功率模型学习技术,其中所学到的模型对于在每个虚拟机内部托管的工作负载是唯一的。这说明了在功率使用中工作负载之间可被发现的差距,即使工作负载具有相同或看起来相似的资源使用。第二,该系统和方法的各实施例计算虚拟机所使用的能量。可使用若干实施例来计算该能量。一个实施例使用虚拟机所使用的资源的百分比,并随后将这些百分比相加以获得该虚拟机的功耗。在其他实施例中,按照单位而不是百分比来测量所使用的资源。作为示例,仅举数例,所测量的资源可包括CPU、存储器、磁盘、网卡和风扇。在这些实施例中,可通过考虑主机服务器的CPU频率来扩充功率模型。该系统和方法的各实施例还可用于获得特定活动的功耗。活动可以是服务、请求(诸如,web搜索查询)、电子邮件递送、网页检索、数据库操作、或文件更新。即使该活动是跨多个虚拟机并且跨多个主机服务器,也可以计算该活动的功耗。确定活动时间段,该活动时间段是在计算基础设施上该活动为活跃的时间段。该系统和方法的各实施例随后通过将各个活动时间段期间在该活动上工作的每个虚拟机的功耗相加以获得总的活动功耗,来计算功耗。应当注意,替换实施例也是可能的,并且此处所讨论的步骤和元素可取决于特定实施例而改变、添加或消除。这些替换实施例包括可使用的替换步骤和替换元素,以及可做出的结构上的改变,而不脱离本发明的范围。


现在参考附图,在全部附图中,相同的参考标号表示相应的部分图I是示出在主机服务器计算设备上实现的虚拟机功率计量系统和方法的各实 施例的综合概述的框图。图2是示出在图I所示的虚拟机功率计量系统和方法的各实施例中使用的模块和数据的框图。图3是示出图I和2所示的虚拟机功率计量系统的各实施例的总体操作的流程图。图4是示出图2所示的功率模型训练模块的各实施例的操作细节的流程图。图5是示出图2所示的能量计算模块的第一实施例的操作细节的流程图。图6是示出图2所示的能量计算模块的第二实施例的操作细节的流程图。图7是示出图2所示的功率设限模块的各实施例的操作细节的流程图。图8示出了其中可实现图1-7所示的虚拟机功率计量系统和方法的各实施例的合适的计算系统环境的一个示例。
具体实施例方式在以下对虚拟机功率计量系统和方法的各实施例的描述中,对附图进行了参考,附图形成了该描述的一部分,并且其中作为说明示出了可实施虚拟机功率计量系统和方法的各实施例的一个具体示例。可以理解,可以利用其他实施例,并且可以作出结构上的改变而不背离所要求保护的主题的范围。I.功率计量概念由于没有硬件功率测量设备可被连接到单个虚拟机,因此,虚拟机功率计量系统和方法从资源使用来推断能量。原则上,虚拟机功率计量系统和方法跟踪软件中每台虚拟机所使用的资源,并且随后通过利用各个资源的功率模型将资源使用转换成能量。对于该方法,系统和方法跟踪对全部硬件资源的使用,诸如CPU核、磁盘阵列、存储体(memory bank)、网卡和图形卡。跟踪资源使用包括确定资源处于什么功率状态,以及它为什么样的虚拟机工作。如果系统和方法根据哪一个虚拟机正在使用资源来正确地标记每个资源,并还在该期间(通常是几微秒或毫秒)测量功率提取,则该系统和方法可计算每台虚拟机的活动能量使用。活动能量可被定义为资源在代表某个虚拟机或系统工作时所消耗的能量。
除活动能量以外,系统还使用某些空闲能量和共享能量。作为示例,对于CPU,空闲能量可包括对于活动状态之间的小的持续时间,在睡眠状态中消耗的能量。共享能量包括当所执行的工作对多个虚拟机有益时资源所使用的能量,诸如在来自多个虚拟机的输入/输出操作之前在磁盘加速自旋上消耗的能量。无论任一虚拟机是否在运行,空闲能量的某些都被消耗,而空闲能量的一部分受到虚拟机是否存在的影响。例如,虚拟机的空闲时间段之间的持续时间可能影响在空闲时间期间更深的睡眠状态是否被处理器采用。空闲和共享能量可被分开地报告,或者依赖于将如何使用计量信息,与虚拟机的活动能量使用相等地或成比例地在虚拟机之间被划分。对于下面详细地讨论的功率设限应用,分开地报告最有效。因此,跟踪虚拟机能量归结于两个挑战。第一,微秒或毫秒粒度的功率测量;应当每隔几微秒确定每个资源的瞬时功率,因为使用资源的虚拟机可能(依赖于用于上下文切换的时间段)每隔几微秒就改变。这可能导致组件使用和功率状态改变。
第二,标记每个单独的虚拟机的资源使用。必须确定哪个虚拟机负责使用每个资源。理想地,这个过程不需要操纵在虚拟机内部运行的应用源代码,因为平台开发者可能无法对其进行访问,并且在实践中,要求应用开发者操纵其源代码不可能衡量。为了解决第一个挑战,系统和方法的各实施例利用将资源的软件可观察状态与其功率使用相关的功率模型。如果能以微秒粒度来观察状态改变,则能推断在该精细的时间刻度的功率使用。观察功率状态是不同寻常的,并且必须作出若干近似。例如,在方法和系统的某些实施例中可能无法完全知道资源状态,诸如处理器内子组件的时钟选通、或磁盘阵列内机械运动的确切特性。另外,可能不存在对平台内某些硬件资源的功率状态(诸如,硬件控制的设备功率状态、或图形处理活动)的可视性。在观察资源状态之后,下一个步骤是使用其功率模型来确定该状态中的功率使用。然而,功率模型不容易获得。系统和方法的各实施例就地构建功率模型。为了解决第二个挑战,系统和方法的各实施例利用关于调度虚拟机的资源的知识。同样,缺少对全部资源的完整的可视性,并且必须进行操纵开销和准确性之间的折衷。II.系统概览图I是示出在主机服务器计算设备110上实现的虚拟机功率计量系统100和方法的各实施例的综合概述的框图。一般而言,虚拟机功率计量系统100和方法的各实施例确定在主机服务器计算设备110上运行的各个虚拟机的功耗,而不需要专用硬件。虚拟机功率计量系统100的各实施例驻留在主机服务器计算设备110上。主机服务器计算设备110表示物理服务器。一个或多个虚拟机120由主机服务器计算设备110来托管。这些一个或多个虚拟机120可被表示为VMpVM2...到VMn,其中N是虚拟机的数量。功率跟踪模块130测量全部的系统功率,或者由主机服务器计算设备110消耗的总功率。在某些实施例中,功率跟踪模块130代表软件驱动器,从主机服务器计算设备110主板上的可用的功率传感器读取全部的系统功耗。资源跟踪模块140代表跟踪虚拟机的资源使用的系统管理程序性能计数器。系统管理程序(也被称为虚拟机管理器)是允许多个操作系统在主机计算机上并发地运行的管理软件。资源跟踪模块140跟踪主机服务器计算设备110的资源。为了保持虚拟机功率计量系统100的各实施例可用于现有的系统管理程序,系统100的各实施例使用现有的系统管理程序性能计数器。然而,在系统和方法的某些实施例中,与现有系统管理程序的可用性不是必需时,可添加额外的性能计数器和工具以监视资源使用。系统100的各实施例处理该信息以计算并输出每台虚拟机150的功耗。图2是示出在图I所示的虚拟机功率计量系统100和方法的各实施例中使用的模块和数据的框图。一般而言,虚拟机功率计量系统100的各实施例包括用于虚拟机中功率测量和管理的模块。更具体地,虚拟机功率计量系统100的各实施例包括功率模型训练模块200,该功率模型训练模块200基于来自功率跟踪模块130和资源跟踪模块140的信息来生成功率模型。在模块200的某些实施例中,该功率模型还通过考虑中央处理单元(CPU)的频率来细化。系统100的各实施例还包括能量计算模块210,该能量计算模块210使用该功率模型来计算一个或多个虚拟机120中每一个的功耗。如下面所解释的,该模块的各实施例使用至少两个实施例来获得功耗。结果是每个单独的虚拟机150的功耗。功率设限模块220使用该信息来按需提供每台虚拟机的功率限制。
功率模型训练模块200使用主机服务器230的总的功率使用和资源利用率测量结果240来生成功率模型250。如下面详细地解释的,采用多个测量结果来获得一系列功率模型等式。对该系列等式求解以发现最优功率模型系数260。能量计算模块210使用功率跟踪模块130信息、资源跟踪模块140信息、和最优功率模型系数260来计算一个或多个虚拟机120中每一个的功耗。存在能量计算模块210的两个实施例,如图2中虚线所示。能量计算模块210的第一个实施例使用虚拟机资源百分比来进行计算270。在该实施例中,虚拟机中每一个所使用的系数是相同的。例如,如果两个虚拟机都使用10% CPU(并且没有其他资源),则它们的能量使用将是相同的。能量计算模块210的第二个实施例使用虚拟机资源百分比和虚拟机专用的功率模型来进行计算280。在该实施例中,作为示例,即使两个虚拟机中每一个都使用10% CPU,但能量使用可能不同,因为一个虚拟机可能在执行浮点运算,而另一个虚拟机可能在执行定点运算(这两个运算使用CPU的不同的子单元,并因此可能使用不同量的能量)。下面讨论这两个实施例的数学细节。这两个实施例都通过使用功率模型扩充模块290稍微增加功率模型的复杂度来细化。功率模型扩充模块290通过考虑主机服务器计算设备110的中央处理单元(CPU)的频率来扩充功率模型。结果是每个单独的虚拟机150的功耗。该结果随后由功率设限模块220用来对每个虚拟机所使用的功率进行设限。下面详细地讨论功率设限过程的细节。III.操作概览计算基础设施(诸如数据中心)中的计算活动通常包括由在不同的物理机器上托管的多个虚拟机或服务器角色所执行的多个任务。例如,搜索查询可首先被web前端服务(也被称为web前端服务器角色)接收,并可被主存在虚拟机内部。随后,该搜索查询可由多个搜索数据检索服务器、广告服务器、和内容呈现服务器来处理。处理的结果被收集并被发送给用户。作为另一个示例,活动可包括接收特定用户的电子邮件。首先,(可能在虚拟机内部托管的)传入电子邮件服务器角色将接收该消息,并确定该消息的正确的用户账户。病毒扫描服务器可以检查该电子邮件消息的内容。垃圾邮件过滤服务器也可以检查该消息的内容。随后,存储服务器可将该消息置于其存储中。每一情形中的活动包括多个分布式服务器角色上的能量支出,服务器角色中的某些可在同一机器上被托管,而某些可在不同的机器上。期望确定活动作为整体所使用的能量。图3是示出图I和2所示的虚拟机功率计量系统100的各实施例的总体操作的流程图。一般而言,虚拟机功率计量系统100和方法的各实施例确定单独活动的能量使用,该单独活动可被分布在若干虚拟机上。活动被定义为服务或请求。例如,搜索查询是具有可验证的起始和结束的活动。参考图3,该方法通过选择要确定其功耗的活动(框300)来开始。该活动跨越多个物理主机服务器中每一个上的至少一个虚拟机。接下来,当首先在虚拟机上初始化该活动时,生成一起始事件(框310)。该起始事件标记开始跟踪该活动所使用的每个资源(框320)。当活动使用特定的虚拟机时,确定在活动使用期间相关虚拟机的能量使用(或功耗)(框 330)。
应当注意,活动可在不同的时间、在不同的虚拟机上开始和结束。例如,在刚给出的电子邮件的示例中,虚拟机可在时间T1开始对电子邮件进行病毒扫描,并在时间T2结束扫描。另一个虚拟机随后可在时间T3开始对同一电子邮件进行垃圾邮件的分析,并在时间T4结束该分析。可使用下面详细地描述的虚拟机功率计量方法来确定每个虚拟机的功耗。这生成在所选择的活动上工作的每个虚拟机的功耗测量结果。随着活动进行,将跨多个服务器角色使用的能量相加以生成该活动所使用的总能量。系统100的各实施例随后确定并标记该活动在其中被终止的结束事件(框340)。该结束事件可以是履行搜索请求,或者标记该活动被完成或被终止并呈现给用户的时间的某些其它事件。活动时间段被定义为起始事件和结束事件之间的时间量(框350)。另外,不是虚拟机功率计量方法所跟踪的计算基础设施的一部分的设备可能消耗一些能量。这些可包括冷却计算工具和这些外围设备的仪器。如下估计在这些设备中使用的能量。系统100的各实施例确定在活动时间段期间被使用、但未被跟踪的设备的总功耗(框 360)。使用硬件功率计量或使用(基于规范和数据表或就地学到的)已知的功率模型来测量这些设备所使用的总能量。随后确定由所选择的活动在活动时间段期间所使用的总功耗的部分(框370)。总能量可在全部活动间被均等地分配、按其执行时间的比率或按先前计算的它们在虚拟机内消耗的能量的比率被划分。系统100的各实施例随后对所选择的活动在活动时间段期间的功耗求和,以获得总的活动功耗(框380)。具体而言,对在活动时间段期间为该活动工作的每个虚拟机的功耗测量结果、以及在活动时间段期间所使用的未被跟踪设备的功耗的部分求和。这产生总的活动功耗,或活动中所使用的全部虚拟机上的活动执行中使用的功耗,无论虚拟机驻留在哪个物理主机服务器上。随后输出总的活动功耗(框390)。上面的讨论使用术语“能量使用”和“功耗”。这些可以能量为单位(诸如,焦耳或千瓦时)来报告。还可使用功率单位(诸如瓦特),就已提取的功率来报告功耗。在报告是就功率而言的情形中,可以提供表示在单位时间间隔期间提取的功率的时间序列。总的活动功耗可被报告为每个虚拟机活动的以能量为单位的单个数字,或者在活动时间段期间每个虚拟机的以能量为单元的单个数字。或者,总的活动功耗可被报告为活动时间段期间以功率为单位的具有多个值的时间序列。 IV.系统和操作细节现在将讨论虚拟机功率计量系统100和方法的各实施例的系统和操作细节。这些实施例包括功率模型训练模块200、能量计算模块210、功率模型扩充模块290和功率设限模块220的各个实施例。现在将详细讨论该系统和这些模块中的每一个的操作细节。IV. A.功率樽型训练樽块功率模型训练模块200生成用于确定虚拟机功耗的功率模型。图4是示出图2所示的功率模型训练模块200的各实施例的操作细节的流程图。方法通过输入总功耗来开始(框400)。这由功率跟踪模块130来报告。换言之,主机服务器计算设备110向功率跟踪模 块120报告所使用的总功率。另一个输入是对虚拟机正在使用多少给定资源进行分解(框410)。该信息由资源跟踪模块140来报告。“资源”可以是主机服务器计算设备110的计算机基础设施的一部分的任一组件。例如,资源可以是处理器(诸如,中央处理单元(CPU))、磁盘、存储器等。资源跟踪模块140确定虚拟机正在利用每个资源中的多少(被称为“资源利用率”)。随后对每个资源的资源利用率求和,以获得总的资源利用率(框420)。主机服务器计算设备110包括将这些资源分配到驻留在其上的任意虚拟机的主机操作系统(未示出)。例如,主机操作系统可认为虚拟机能得到多达CPU储蓄的30%。当主机操作系统保留了这30%时,它还跟踪到该虚拟机当前正在使用它被分配的CPU存储的30%中的17%。因此,主机操作系统既要强调它绝不超出30%,又要跟踪该虚拟机当前正在使用什么。为驻留在主机服务器计算设备110上的每个虚拟机完成以上操作。以此方式,主机服务器计算设备110向资源跟踪模块给出关于每个虚拟机正在使用一个资源中的多少的信息。令M表示资源的数量,并令N表示观察的数量。对于物理服务器中M数量个资源中的每一个,模块200的各实施例确定将全部虚拟机相加的总的资源率(框430)。一般而言,基于每个虚拟机的资源利用率来生成功率模型。这通过取得每个资源的利用率并将虚拟机正使用的全部资源相加以获得总的资源利用率来完成。在数学上,假设存在由虚拟机正在使用的三个资源,并且%、a2和a3是最优功率模型系统,它们均是常数。随后功率模型将资源利用率与总功耗(TPC)如下相关
Q1* (CPU利用率)+ a2* (磁盘利用率)+ a3^ (网络利用率)=TPCo在理论上,如果对资源利用率的三个不同的值进行总功耗的三个不同的测量,则我们具有三个等式和三个未知数。因此,模块200的各实施例确定由虚拟机正在使用的M数量个资源。可对一系列M个等式求解以确定M个未知数。然而,在实践中,系统的大多数实施例收集N个测量结果,其中N大于M。拟合模型的已知方法(诸如线性回归)随后用于确定将最佳拟合N个等式的M个变量的值。使用大于M的N有助于克服测量结果噪声和这些变化。具体而言,模块200的各实施例以资源利用率的N个不同组合对主机服务器计算设备110的总功耗进行N数量个测量(框440)。这给出一系列N个等式和M个未知数。随后对该系列N个等式求解以获得M数量个最优功率模型系统(框450)。接下来,模块200的各实施例生成功率模型(框460),该功率模型将每个资源的利用率与功耗相关。这使用M个系数来表示,该系数将每个资源的利用率与功耗相关。该功率模型用于测量虚拟机所使用的功率。概念上,通过跟踪该虚拟机所使用的硬件资源(诸如CPU、磁盘、存储器、网络等)来测量该虚拟机所使用的功率。模块200的各实施例的输出是最优功率模型系数(框470)。下面的示例演示了如何可获得功率模型以及如何可跟踪每个硬件资源上的资源使用。将CPU作为第一资源考虑,并且假设在单个物理主机服务器上托管被表示为VM1JM2到VMn的多个虚拟机。随后,假设从时间段h到t2,VM1使用N-核CPU的两个核。假设这两个核的每一个被用至容量的70%。假设没有虚拟机在使用CPU时,其功率使用为Pidle。另外,假设当完全使用一个核 时,功耗为Pi^+P-e,并且当一个核被用至X#利用率时,功耗为Pidle+(Xl/l00)*PeOTe。假设全部核I到n的利用率被表示为xi、x2、…、xN。于是,在数学上,功率使用可被写为Pcpu=Pidie+ (x/lOO) *Pcore+ (x2/100) *Pcore+…+ (xN/100) *Pcore。上面的等式是CPU的功率模型的一个示例。该功率模型将(利用百分比X1, X2,...,Xn所表示的)使用与功率使用相关。注意,这是功率模型的一个示例。还可以使用更复杂的模型,该模型不仅包括每个核的利用率,还包括由处理器执行的指令的类型以及其他更详细的信息。继续上面的示例,虚拟机使用两个核的70%时,上面的功率模型可用于说明在时间与t2之间,虚拟机以速率Pvmicpu= (70/100) *Pcore+ (70/100) *Pcore提取CPU中的功率。类似地,使用其他硬件组件(诸如磁盘、存储器、网络等)的功率模型,可以计算每个组件的虚拟机所提取的功率。随后将每个组件所提取的功率相加以获得虚拟机所提取的总功率。在上面的示例中,CPU的Pidle未被分配给虚拟机。无论虚拟机是否存在,用户都可将Pidle认为是被浪费的功率,并由此感到不需要它。其他用户可以认为Pidle被消耗在维护由于虚拟机而被需要的服务器上。在该情形中,Pidle可被添加到虚拟机所提取的功率中,此功率或者使用服务器在全部虚拟机之间均等地被划分,或者按它们所提取的其他功率的比率成比例地被划分。现在将讨论各种各样的系统资源的某些实际的功率模型。功率模型训练模块200的各实施例使用这些模型将资源利用率与主机服务器计算设备110的总功耗相关,并由此测量虚拟机所使用的功率。IV. A. I. CPU的实际功率樽型CPU的功率使用依赖于若干因素,诸如活动的处理器内部的子单元、被执行的专用指令、芯片上的高速缓存使用、处理器是否具有动态电压频率缩放(DVFS)、随时间的睡眠状态使用、以及所使用的(被表示为P-状态的)频率。为了精确,只有DVFS频率状态被称为P-状态,而DFS状态被称为节流(或T-状态)。在本文中,P-状态用于表示全部频率级别,因为在本上下文中,区别是不相关的。可使用循环准确模拟器来获得考虑了这些因素的准确的功率估计。然而,那需要处理器的完整的体系结构模型并具有较高的处理开销,使其不适于运行时虚拟机功率计量。
一个较轻量的替换方案是跟踪处理器状态,该状态捕捉主要的功率使用变化。假设存在被表示为PO、Pl. . . Pm的m个P-状态,它们表示渐进地更低的频率。当处理器未在主动地执行任何线程时,它进入被称为C-状态的低功率睡眠状态。按照惯例,CO用于表示活动状态,并且Cl、C2. . . Cn表示渐进地更深的睡眠状态,其中n是睡眠状态的数量(通常11£ {3,...,6})。假设处理器在时间t所使用的瞬时功率是Pepu(t)。假设功率仅依赖于P-状态和C-状态,它可由在时间处t的频率p (t)和睡眠状态c (t)的每个不同组合中的常数来表示Pcpu(t) = kp(t),c(t)(I)其中kp,。表示P-状态与C-状态组合p,c中所使用的功率。如果有可能用每个P-状态和C-状态变化来测量Pmi (t),则得知kp,。的值将是容易的。微秒粒度的测量在专门操纵的主板上是可行的,但在实际平台上不行。相反,可以以更粗略的时间粒度(按秒的次序)来测量功率。因此,功率模型训练模块200的各实施例在较长的持续时间T内集成上面的功率模型,例如
f 凡/%>,c * AT1pse(2)
Oy), c其中ATp,。表示在持续时间T期间在状态{p,c}中花费的时间,并且对全部(p,c)组合求和。随后,上面的等式可被如下表达为实际系统上可用的可观察到的量。对于给定的P-状态,在全部睡眠状态Cl及更高状态中消耗的能量可被近似为kp-iMp,因为相对于作出的其他近似而言,差是较小的。活动能量是Ivait5令Eot^T)表示T期间功率的集成。同样,P-状态改变是缓慢的,并且系统管理程序计数器通常允许以间隔T的更新,使得P-状态在T期间是不变的。则,假设持续时间T的单个P-状态p,产生[_8] Ecpu(T) =kp,C0ucpu(p)T+(l-ucpu(p))kp,slMPT(3)= (kp, co-kp, sleep) Ucpu (p) T+kp> sleepT (4)其中,uCPU(p)表示T期间在固定的P-状态p中处理器是活动的时间百分比。令
Q (P) (kp,⑶ ^p, sleep
)。还令最低频率状态中的睡眠状态能量kpm,slf;e;p被表不为Y cm idle,并且睡眠状态能量中向更高频率的增长被表示为、则,出于方便,取T=I秒 Ecpu = a (P)Ucpu(P) +Y (P) +Ycpu, idle (5)其中Umi(P)如系统管理程序性能计数器一样易得,并且因此可用在实际平台上以监视处理器状态。如果模型参数是已知的,则可以估计处理器能量。下面详细地描述了得知参数a (p) , y (p)和YOT,idle的方法,以及其他资源的功率模型。向相关的虚拟机分配CPU使用需要考虑虚拟机所使用的确切的芯片资源,包括共享的高速缓存和处理组件。虚拟机功率计量系统100的各实施例使用轻量方法,该方法简单地跟踪虚拟机在处理器核上何时是活动的(通过跟踪每个核的上下文切换是可能的)。可在虚拟机于处理器上是活动的持续时间期间使用等式(I)来跟踪所使用的能量。处理器上下文切换事件对许多类型的系统管理程序是可用的。就更易得的性能计数器、被表示为uCPU,A (p)的虚拟机A的处理器利用率而言的重写,并且假设P-状态在间隔T期间保持不变,被表示为Emi, A的虚拟机A的能量使用可被写为_4] Ecpuj A = a (p) ucpUj A(p)(6)再一次,取T=I秒。注意,(消耗在睡眠状态中的)处理器空闲能量不包括在上面的讨论中,因为功率模型训练模块200的各实施例分开地对其进行报告。IV. A. 2.存储器的实际功率模型存储器能量使用的真实估计可使用其硬件设计的循环准确模拟。然而,先前的存储器功率模型已经发现影响存储器能量使用的关键因素是读和写吞吐量。虽然已经尝试了外部工具来准确地捕捉存储器吞吐量,但存储器吞吐量的低开销估计是大多数处理器中可用的最后一级高速缓存(LLC)未中计数器。使用该度量,存储器功耗可被写为Ellem ⑴一a memNLLCM ⑴ + Y mem(7)其中Efa(T)表示存储器在持续时间T中所使用的能量,Nmm(T)是在T期间LLC未中的数量,并且《_和Ym是线性模型参数。 由于模块200的各实施例使用LLC未中作为对吞吐量的近似,因此与每个虚拟机相对应的未中被跟踪。在单核系统上,模块200的各实施例可在虚拟机具有处理器上的活动上下文期间分配LLC未中,作为该虚拟机的LLC未中。于是,虚拟机A所使用的存储器能量变为Ejlenlj A (T) — a memNLLCM, A⑶其中,与等式(7)中相同,并且N^m, _表示虚拟机在处理器上为活动期间的LLC未中的数量。IV. A. 3.磁盘的实际功率樽型虽然已经开发了用于磁盘的若干功率模型,但是该子系统仍然是最难建模的。由于缺少对硬盘的功率状态的可视性以及磁盘的硬件高速缓存的影响而产生了困难。另外,在数据中心服务器中,磁盘主要用于RAID阵列,并且甚至当使用RAID-O时,只有RAID控制器硬件控制物理磁盘,而系统管理程序仅能看到逻辑驱动器。为了便于实现,功率模型训练模块200的某些实施例可仅使用系统管理程序可观察的参数。替换的实施例是可能的,诸如RAID控制器被修改为展示关于磁盘功率状态和机械运动的更多细节。系统管理程序可观察被读和写的字节数量、以及对那些读和写的服务次数。然而,对于各个虚拟机,当前的系统管理程序仅跟踪被读和写的字节。这些用于磁盘能量模型,该模型可被如下写为Enisk (T) — a rbbR+a wbbw+Y disk (9)其中Ellisk(T)表示磁盘在持续时间T消耗的能量,而\和bw分别是在间隔T期间被读和写的字节量。a参数和Ydisk是要得知的模型参数。该模型包括近似,因为在RAID控制器外部不可见的磁盘加速/减速自旋动作未被捕捉。可变的自旋速度未被捕捉,但是由于多速度磁盘不常用于数据中心,因此这不是严重的问题。对于其他资源,功率模型训练模块200的各实施例跟踪等式(9)中各个虚拟机的磁盘使用参数。磁盘活动发生的时间通常与虚拟机在处理器上为活动的时间不相同,因为系统管理程序可批处理IO中断并缓冲IO操作。因此,IO操作需要在系统管理程序中被显式地跟踪,来代替在虚拟机的活动上下文期间查看存储系统活动。幸运的是,许多系统管理程序已经执行了该跟踪的大部分,并可用于分开地报告每个虚拟机的IO活动。这生成了下面的特定虚拟机A的磁盘能量模型EDisk,A = arb*br,A+awbbw,A (10)其中、4和&4分别表示虚拟机A读和写的字节量。另外,已经发现了磁盘读和写的能量间的差是可忽略的,并且由此公共参数,如h。,可用于表示被读和写的字节之和。这将模型改变为Enisk (T) — a iobjo+ Y Disk(11)对于上面描述的各实施例,可使用下面的公式来计算虚拟机磁盘能量EDisk,A = a io*bio,A(12)IV. A. 4.其他咨源
发现由于其他资源的功率使用的动态范围较小,并且不需要在功率模型训练模块200的全部实施例中对它们建模。然而,将那些资源的静态能量使用包括在模型的系统空闲能量中。这些资源中的某些对于在其他平台上建模是重要的。某些较慢的网卡例如不会示出网络活动的能量使用中的较宽的变化,但较高速度的卡确实在驱动物理介质中使用更多的能量,而且该能量可能随网络活动而变化。用使用多个这样卡的服务器来对物理能量建模将因此是重要的。许多服务器不会改变它们的风扇速度,但是如果使用可变速度的风扇,则它们对动态能量的贡献可被建模。可在某些实施例中考虑的另一个效果是供电效率随着所提取的功率改变而改变。IV. A. 5.功率樽型参数训练等式(5)、(7)和(11)中的功率模型使用由a和Y表示的、需要在服务器上就地得知的特定系数。真实的平台不允许分开地测量Emi(T)、EM ⑴和Ellisk(T),而只允许测量Esys(T)所表示的全部系统功率。将量Estati。⑴定义为表示由系统中的未建模资源所使用的能量。于是,与之前一样假设T=l,等式可被写为Esys = Ecpu+EMem+EDisk+Estatic= a (p) Ucpu (p) + Y (p) + Y cpu, idie+ a 隱Nllcm+ Y mem+ a iobio+ y disk+Estatic(13)关于等式(13)的以下各点值得注意并导致用于实际实现的少许修改。首先,在上面的求和中,由于常量ePU,idl—sjPEstati。不具有跨观察变化的任何可观察的参数,因此无法从Esys的测量结果中得知它们各个的值。它们的和可因此被表示为单个常量。第二,注意Umi(P)的大小是0和I之间的分数,而Nua^Pbi。则取上亿数量级的值。关于数值的稳定性,可相对于在系统上观察到的N^m和bi()的最大值对它们进行归一化,使得a参数被调整到类似的大小。在学习中使用的最终等式因此变成Esys = a (p) Ucpu (p) + Y (p) + a 隱Unieni+ a ioudisk+ Y(14)其中uM和Udisk分别表示Nmm和bi()的经归一化的值。总而言之,存在m*2+3个未知的模型参数斜;=1 affleffl) a io)和Y,其中m是P-状态的数量,以及没有额外工具的实际硬件上可用的四个可观察量Esys、uCPU、uM和udisk。取可观察量的多个观察允许使用具有普通的最小平方估计的学习技术(诸如线性回归)来估计模型参数。功率模型训练模块200的输出是最优功率模型系数260。IV. B.能暈计算模块能量计算模块210使用来自功率模型训练模块200的最优功率模型系数来获得虚拟机的功耗。具体而言,已得知的系数值用于等式(6)、(8)和(12),并且对已计算的资源能量求和以确定每个VM的能量使用。事实上,如果需要,可分开地报告虚拟机在每个资源上使用的能量。存在能量计算模块210的两个实施例。现在将讨论这些实施例中的每一个。IV. B. I.能暈计算的第一个实施例能量计算的第一个实施例跟踪资源百分比以获得虚拟机的功耗。图5是示出图2所示的能量计算模块210的第一个实施例的操作细节的流程图。方法通过输入最优功率模型系数来开始(框500)。该方法还输入虚拟机所使用的每个资源的百分比(框510)。
随后将每个资源乘以其对应的最优功率模型系数以获得中间资源结果(框520)。随后将中间资源结果的每一个相加以获得虚拟机的功耗(框530)。例如,对于每个虚拟机,该虚拟机所使用的CPU资源的百分比加上该虚拟机所使用的磁盘资源的百分比,以此类推,将全部资源相加。模块210的输出是虚拟机的功耗(框540)。该第一个实施例通过受控工作负载在等式(14)中生成功率状态的线性独立的组合,该受控工作负载导致各种资源功率状态被使用。该方法是基本方法并具有最低的开销,因为一个工作负载用于训练。然而,受控工作负载可能不以表示真实工作负载的方式来使用处理器和其他资源。IV. B. 2.能暈计算的第二个实施例能量计算的第二个实施例相比第一个实施例跟踪更具体的信息。该第二个实施例是第一个实施例的变型,使得等式稍微更具体。我们跟踪为虚拟机工作的CPU%,而非仅跟踪资源百分比。这考虑了虚拟机正在进行的工作的类型。这带来更复杂的等式,该等式考虑了每个虚拟机正在进行的工作的特性。图6是示出图2所示的能量计算模块210的第二个实施例的操作细节的流程图。方法通过输入最优功率模型系数来开始(框600)。另外,该方法输入为特定虚拟机工作的CPU的百分比(框610)。接下来,模块210的各实施例使用最优功率模型系数来计算虚拟机专用的系数(框620)。例如,情况可能是VM1正在使用CPU的10% (例如,10瓦特),而VM2正在使用CPU的10%(例如,12瓦特)。第二个实施例将这个也考虑进来。这意味着第二个实施例还使用虚拟机专用的系数,使得a !,VMi是为VM1工作的a i值,a 1;VM2是为VM2工作的a i值,以此类推。换言之,每一个\用于第一个资源(诸如,CPU资源),并且%用于第二个资源(诸如,磁盘资源),以此类推。随后将每个CPU百分比和资源百分比乘以其对应的虚拟机专用系数以获得中间资源结果(框630)。随后将中间资源结果的每一个相加以获得虚拟机的功耗(框640)。模块210的输出是虚拟机的功耗(框650)。功率模型扩充模块290通过考虑CPU可按不同频率运行的事实来扩充上面的功率模型。功率扩充模块290用于克服上面说明的两个实施例的准确性限制。功率扩充模块290的一般想法是分开地得知每个虚拟机的模型参数(或最优功率模型系数)。由于对于给定的工作负载,未观察的功率状态与已观察的功率状态高度相关,因此基于少量已观察状态的模型将更准确地捕捉功率使用。事实上,有了功率模型扩充模块290,即使由于跨处理器的可移植性限制而未捕捉用于LLC未中的处理器计数器,这简单地变成对于给定的工作负载,可与已观察到的状态相关的另一个未观察到的状态。V.功率计量应用虚拟机功率计量系统100和方法包括上面说明的虚拟机功率计量技术。这些虚拟机功率计量技术可用于各种功率管理决策。现在将讨论这些功率管理决策和应用之一,即功率设限。V. A.功率设限樽块功率设限模块220使用用虚拟机的功率设限技术的上述技术为每个虚拟机计算的功耗。该虚拟机功率设限允许在功率过度预订电路中托管虚拟机,导致功率供应成本中的明显优势。
为了更好地解释功率设限模块220的操作,将首先描述用于(没有虚拟机的)物理服务器的过度预订电路中的功率设限概念。假设对服务器评级以得到功率PMt。随后,常规所供应的功率分布电路将具有足够的功率容量向连接到该电路的全部服务器供应PMt。然而,如果服务器的每个组件(CPU、磁盘、主板芯片组、存储器等)同时被用到全功率,则被评级得到PMt的服务器只能使用PMt。实际上,这不会发生。当CPU忙于访问存储器时,磁盘可能未被完全使用,而当CPU忙于处理数据时,存储器可能未被完全使用。实际的工作负载因此使用比pMt更低的功率。假设要在服务器上执行的软件的任意组合所使用的实际功率的最大值由Part来表示。则可使用有能力仅向每个服务器供应Part的功率分布单元。由于Pact比Prat更低,因此功率电路被认为是过度预订的,因为有可能(虽然不太可能)超出功率容量。例如,如果执行软件的某些意外的组合,该组合同时使用比任何之前测量到的软件组合都更多的资源,则可能超出容量。如果超出了功率容量,则电路断路器将断路,使该电路所服务的多个服务器停止工作。这显然不是所期望的。因此,期望如果服务器被供应用于Pac;t功率容量,则它保持在Paet以内。确保每个物理服务器保持在Paet以内的方法作为功率设限是已知的。通常,它被实现在服务器主板的固件中。当服务器超出Pd时,它的资源使用被节流(例如,CPU频率可被降低)以将功率使用保持在Pm以下。然而,上面的功率设限方法不会直接地应用到虚拟机。如在本文档中更早提到的,如果通过对服务器中的物理资源(诸如CPU频率)节流来对托管多个虚拟机的物理服务器进行设限,则它可导致多个虚拟机被节流,即使只有一个超出其功率评级的虚拟机。显然,期望分开地实施每个虚拟机上的功率容量限制。功率设限模块220使用上面描述的虚拟机计量信息来启用虚拟机的功率设限。图7是示出图2所示的功率设限模块220的各实施例的操作细节的流程图。首先,监视每个虚拟机的功率使用(框700)。测量该虚拟机提取的峰值功率(框710),并将虚拟机置于物理服务器上,使得它们峰值的总和小于或等于分配给该服务器的功率容量(框720)。接下来,作出关于虚拟机是否已经超出其功率预算的判定(框730)。若否,则不采取动作(框740)。若是,则当虚拟机已经超出(或将要超出)其功率预算时,模块290检查该超出是否将导致物理服务器的功率预算被超出(框750)。如果虚拟机中的一些正超出其预算但足够多的其他虚拟机在其预算以下操作,使得物理服务器作为整体处于所分配的功率容量限制以下,则不存在电路断路器断路的危险。在该情形中,不需要采取动作(框740)。另一方面,如果一个或多个虚拟机正超出其容量预算,使得托管那些虚拟机的物理服务器已经超出了(或将要超出)其被分配的功率容量,则在各个虚拟机上采取适当的动作以降低该服务器上的功率使用(框760)。注意,不对整个服务器节流(与现有技术不同)。适当的动作包括多个选项之一。注意,以下选项中的每一个在图7中被示为用虚线箭头被连接以便指示可以使用四个选项中的任一个。第一个选项是将正超出其功率预算的虚拟机节流到允许服务器处于其被分配的容量以内的功率水平(框765)。节流可通过降低分配给该VM的CPU时间量来实现。第二个选项是允许虚拟机以更高的功率操作,但是对某些其它较低优先级的虚拟机节流以降低总的功率使用(框770)。例如,可以允许生成受益的虚拟机运行在其预算之上,而临时地节流某些后台任务。第三个选项是将一个或多个虚拟机从该服务器迁移到具有多余容量的另一个服务器(框775)。第四个选项是关闭一个或多个虚拟机以在稍后执行(框780)。未在图7中示出的附加选项包括减少正被提交给虚拟机的请求的数量,以及提高在具有多余功 率容量的其他服务器上的虚拟机的数量。在功率设限模块220的其他实施例中,使用上面方法的变型。实际上,虚拟机(或在虚拟机上主存的应用)具有可变的用户负载。峰值用户负载仅发生于一天中的较短时间段,而在其他时间,它们运行在峰值以下。实际上,虚拟机功率使用的和的峰值比功率使用的峰值的和更低。同样,共享一个服务器的多个虚拟机的峰值负载可在不同的时间发生。因此,功率设限模块220的某些实施例分配比峰值低的功率容量级别,而不是分配峰值负载的功率容量。当超出服务器功率容量时,使用与上面的方法相类似的适当的动作(诸如,节流各个VMjf VM迁移到其他服务器等)。V. B.分布式活动的能量计量计算基础设施(诸如数据中心)中的计算活动通常包括由在不同的物理机器上托管的多个虚拟机或服务器角色所执行的多个任务。例如,搜索查询可首先被web前端服务(也被称为web前端服务器角色)接收,并可被主存在虚拟机内部。随后,该搜索查询可由多个搜索数据检索服务器、广告服务器、和内容呈现服务器来处理。处理的结果被收集并被发送给用户。作为另一个示例,活动可包括接收特定用户的电子邮件。首先,(可能在虚拟机内部托管的)传入电子邮件服务器角色将接收该消息,并确定该消息的正确的用户账户。病毒扫描服务器可以检查该电子邮件消息的内容。垃圾邮件过滤服务器也可以检查该消息的内容。随后,存储服务器可将该消息置于其存储中。每一情形中的活动包括多个分布式服务器角色上的能量支出,服务器角色中的某些可在同一机器上被托管,而某些可在不同的机器上。期望确定活动作为整体所使用的能量。虚拟机功率计量系统100和方法还包括各实施例确定可被分布在若干虚拟机上的单独活动的能量使用的技术。活动被定义为服务或请求。例如,搜索查询是具有可验证的起始和结束的活动。具体而言,当对活动进行初始化时,生成一事件。这开始了对活动所使用的每个资源的跟踪。例如,当活动使用特定的服务器角色时,使用监视虚拟机的能量使用的先前描述过的方法来确定在该活动使用的持续期间相关的服务器角色的能量使用。如上所述,活动可在不同的时间、在不同的虚拟机上开始和结束。随着活动进行,向上添加跨多个服务器角色使用的能量以生成该活动所使用的总能量。另外,不是虚拟机功率计量方法所跟踪的计算基础设施的一部分的设备可能消耗一些能量。这些可包括冷却计算工具和这些外围设备的仪器。如下估计在这些设备中使用的能量。使用硬件功率计量或使用(基于规范和数据表或就地得知的)已知的功率模型来测量那些设备所使用的总能量。则使用监视虚拟机功率计量方法可访问的计算基础设施的方法来跟踪计算工具所服务的总的活动工作负载。随后在由计算基础设施执行的全部活动间分配总的功耗。总能量可在全部活动间被均等地分配、按其执行时间的比率或按先前计算的它们在虚拟机内消耗的能量的比率被划分。此处呈现的技术使用术语“能量使用”或“功耗”。这些可按能量单位(诸如,焦耳或千瓦时)来报告。还可使用功率单位(诸如瓦特),就已提取的功率来报告功耗。在报告是就功率而言的情形中,可以提供表示在单位时间间隔期间提取的功率的时间序列。VI.示例件操作环塏
虚拟机功率计量系统100和方法的各实施例被设计成在计算环境中操作。以下讨论旨在提供其中可实现虚拟机功率计量系统100和方法的各实施例的一个合适的计算环境的简要概括描述。图8示出了其中可实现图1-7所示的虚拟机功率计量系统100和方法的各实施例的合适的计算系统环境的一个示例。计算系统环境800只是合适计算环境的一个示例,而非意在暗示对本发明使用范围或功能有任何限制。也不应将计算环境800解释为对该示例性操作环境中示出的任一组件或其组合有任何依赖性或要求。虚拟机功率计量系统100和方法的各实施例可用众多其它通用或专用计算系统环境或配置来操作。适用于虚拟机功率计量系统100和方法的各实施例的众所周知的计算系统、环境和/或配置的示例包括但不限于,个人计算机、服务器计算机、诸如蜂窝电话和PDA等手持式(包括智能电话)、膝上型或移动计算机或通信设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机、大型计算机、包括任一上述系统或设备的分布式计算环境等等。虚拟机功率计量系统100和方法的各实施例可在诸如程序模块等由计算机执行的计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。虚拟机功率计量系统100和方法的各实施例也可以在其中任务由通过通信网络链接的远程处理设备来执行的分布式计算环境中实践。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和远程计算机存储介质中。参考图8,用于虚拟机功率计量系统100和方法的各实施例的示例性系统包括计算机810形式的通用计算设备。计算机810的组件可包括但不限于,处理单元820(诸如中央处理单元,CPU)、系统存储器830以及将包括系统存储器的各类系统组件耦合至处理单元820的系统总线821。系统总线821可以是若干类型的总线结构中的任一种,包括使用各种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线、以及局部总线。作为示例而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA (EISA)总线、视频电子标准协会(VESA)局部总线,以及也称为夹层(Mezzanine)总线的外围部件互连(PCI)总线。
计算机810通常包括各种计算机可读介质。计算机可读介质可以是可由计算机810访问的任一可用介质,并包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、R0M、EEPR0M、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD )或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储设备、或可以用来储存所期望的信息并可由计算机810访问的任一其他介质。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。以上的任何组合也应包括在计算机可读介质的范围内。系统存储器830包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM) 831和随机存取存储器(RAM) 832。基本输入/输出系统833 (BIOS)包括如在启动时帮助在计算机810内的元件之间传输信息的基本例程,它通常储存在ROM 831 中。RAM 832通常包含处理单元820可立即访问和/或当前正在操作的数据和/或程序模块。作为示例而非限制,图8示出了操作系统834、应用程序835、其他程序模块836和程序数据837。计算机810也可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图8示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器841,从可移动、非易失性磁盘852中读取或向其写入的磁盘驱动器851,以及从诸如⑶ROM或其他光学介质等可移动、非易失性光盘856中读取或向其写入的光盘驱动器855。可在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器841通常通过诸如接口 840之类的不可移动存储器接口连接到系统总线821,并且磁盘驱动器851和光盘驱动器855通常通过诸如接口 850之类的可移动存储器接口连接到系统总线821。以上讨论并在图8中示出的驱动器及其相关联的计算机存储介质为计算机810提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。在图8中,例如,硬盘驱动器841被示为存储操作系统844、应用程序845、其他程序模块846和程序数据847。注意,这些组件可与操作系统834、应用程序835、其他程序模块836和程序数据837相同,也可与它们不同。在此操作系统844、应用程序845、其他程序模块846以及程序数据847被给予了不同的编号,以说明至少它们是不同的副本。用户可以通过输入设备,如键盘862和定点设备861,通常指鼠标、跟踪球或触摸板,以及触摸面板或触摸屏(未示出),向计算机810输入命令和信息(或数据)。其他输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、无线电接收机或电视或广播视频接收机等等。这些和其他输入设备通常通过耦合至系统总线821的用户输入接口 860连接至处理单元820,但是也可以通过其他接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。监视器891或其他类型的显示设备也通过诸如视频接口 890之类的接口连接至系统总线821。除了监视器以外,计算机还可包括诸如扬声器897和打印机896之类的其他外围输出设备,它们可通过输出外围接口 895来连接。计算机810可使用到一个或多个远程计算机(诸如,远程计算机880)的逻辑连接而在联网环境中操作。远程计算机880可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点,并且通常包括许多或所有以上相对计算机810所描述的元件,但在图8中仅示出了存储器存储设备881。图8中所描绘的逻辑连接包括局域网(LAN)871和广域网(WAN)873,但还可包括其他网络。此类联网环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。当在LAN联网环境中使用时,计算机810通过网络接口或适配器870连接到LAN871。当在WAN联网环境中使用时,计算机810通常包括调制解调器872或用于通过诸如因特网等WAN 873建立通信的其他手段。调制解调器872可以是内置的或外置的,可经由用户输入接口 860或其他适当的机制连接到系统总线821。在联网环境中,相对于计算机810所示的程序模块或其部分可被存储在远程存储器存储设备中。作为示例而非限制,图8示出了远程应用程序885驻留在存储器设备881上。应当理解,所示的网络连接是示例性的,并且可使用在计算机之间建立通信链路的其他手段。 以上详细描述是出于图示和描述的目的而提出的。鉴于上述教导,许多修改和变型都是可能的。它并不旨在是穷尽性的,也不旨在将此处所公开的主题限于所公开的精确形式。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现所附权利要求书的示例性形式来公开的。
权利要求
1.一种在计算设备上实现的方法,用于计算跨驻留于物理主机服务器上的至少一个虚拟机而发生的活动的功耗,包括 将活动时间段定义为在起始事件与结束事件之间流逝的时间量; 在所述活动时间段期间跟踪用于所述活动的每个虚拟机上的每个资源; 计算在所述活动上工作的每个虚拟机在所述活动时间段期间的功耗,以获得功耗测量结果; 将在所述活动上工作的每个虚拟机在所述活动时间段期间的功耗测量结果相加,以获得总的活动功耗;以及 输出表示所述活动消耗的总功耗的所述总的活动功耗。
2.如权利要求I所述的方法,其特征在于,还包括 计算将虚拟机的总的资源利用率与所述主机服务器的总功耗相关的功率模型;以及 使用所述功率模型以及最优功率模型系数来计算所述虚拟机的功耗。
3.如权利要求I所述的方法,其特征在于,还包括 计算在所述活动时间段期间被使用但未作为资源被跟踪的设备的总功耗;以及确定未被跟踪设备的所述总功耗的一部分,所述部分在所述活动时间段期间被用于所述活动中。
4.如权利要求2所述的方法,其特征在于,还包括将在所述活动上工作的每个虚拟机的功耗测量结果、以及在所述活动时间段期间所使用的所述未被跟踪设备的功耗的所述部分相加,以获得总的活动功耗。
5.如权利要求4所述的方法,其特征在于,还包括 当在所述活动在所述虚拟机上被初始化时,生成起始事件;以及 当所述活动被终止并被呈现给用户时,确定并标记结束事件。
6.如权利要求2所述的方法,其特征在于,还包括 确定每个虚拟机所使用的每个资源的百分比; 将每个资源百分比乘以其对应的最优功率模型系数,以获得每个虚拟机的中间资源结果;以及 将每个虚拟机的所述中间资源结果的每一个相加,以获得每个虚拟机的单个功耗。
7.如权利要求2所述的计算机实现的方法,其特征在于,还包括 确定为每个虚拟机工作的中央处理单元(CPU)的百分比;以及 使用所述最优功率模型系数来计算每个虚拟机的每个资源的虚拟机专用的系数。
8.一种在计算设备上实现的方法,用于单独地控制驻留于物理主机服务器上的多个虚拟机的功耗,包括 使用所述计算设备执行以下动作 监视所述主机服务器上的每个虚拟机的功耗; 测量所述主机服务器上的每个虚拟机所提取的峰值功耗; 确定所述多个虚拟机中的任一个是否已经超出其功率预算; 若是,则确定所述主机服务器的功率预算是否已被超出;以及 若是,则将所述虚拟机中至少一个的功耗降至所述主机服务器的总功耗。
9.如权利要求10所述的方法,其特征在于,还包括基于每个虚拟机的已测量的峰值功耗来定位所述主机服务器上的虚拟机。
10.如权利要求10所述的方法,其特征在于,还包括 生成功率模型,所述功率模型将所述多个虚拟机中每一个的总的资源利用率与所述主机服务器的总功耗相关; 使用所述功率模型来获得最优功率模型系数;以及 使用所述功率模型以及所述最优功率模型系数来计算所述多个虚拟机中每一个的功耗。
11.如权利要求10所述的方法,其特征在于,还包括降低超出其功率预算的每个虚拟机的功耗,以便不超出所述主机服务器的功率预算。
12.如权利要求10所述的方法,其特征在于,还包括降低在所述主机服务器上驻留的每个较低优先级的虚拟机的功耗,以便不超出所述主机服务器的功率预算,其中与已经超出其功率预算的虚拟机相比,所述较低优先级的虚拟机具有较低的优先级。
13.如权利要求10所述的方法,其特征在于,还包括关闭已经超出其功率预算的所述虚拟机中的一个或多个,以便不超出所述主机服务器的功率预算。
14.如权利要求10所述的方法,其特征在于,还包括将一个或多个虚拟机迁移到另一个服务器,以便不超出所述主机服务器的功率预算。
全文摘要
虚拟机功率计量系统和方法的各实施例测量各个虚拟机的功耗。物理主机服务器的功率表测量被转换成测量驻留在主机服务器上的每个单独虚拟机的功耗的各个虚拟机功率表。通过使用主机服务器的总功耗以及虚拟机的资源利用率生成功率模型,来计算虚拟机功耗。使用该功率模型来计算最优功率模型系数。使用两个实施例之一来计算虚拟机使用的能量。该系统和方法的各实施例还可用于获得特定活动(诸如,服务、请求或搜索查询)的功耗。另外,虚拟机功率计量可用于虚拟机功率设限,以允许虚拟化环境中的功率过度预订。
文档编号G06F9/44GK102770826SQ201180011019
公开日2012年11月7日 申请日期2011年2月25日 优先权日2010年2月26日
发明者A·A·巴塔查里亚, A·坎萨尔, D·C·伯格, J·刘 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1