CPU电源管理是否会影响服务器性能?


44

我在非高峰时段在(实时)数据库服务器上进行了一些简单的手动基准测试,我注意到查询返回的基准测试结果有些不稳定

不久前,我在所有服务器上启用了“平衡”节能计划,因为我发现它们远没有达到高利用率,因此我们可以节省一些能源。

我以为这不会对性能产生重大的,可衡量的影响。但是,如果CPU的省电功能正在影响典型的性能(尤其是在共享数据库服务器上),那么我不确定是否值得!

我感到惊讶的是,即使负载为35-40%,我们的网络层也从2.8 Ghz @ 1.25V降频至2.0 Ghz @ 1.15V。

我完全希望降低时钟频率可以节省功率,但是对于我来说,该负载水平似乎已经足够高,应该可以提高时钟频率。

我们的8-CPU的数据库服务器有一吨的流量,但非常低CPU使用率(只是由于我们的SQL查询的性质-他们很多,但真正简单的查询)。通常为10%或更少。因此,我希望它比上面的屏幕截图还要更慢。无论如何,当我将电源管理转向“高性能”时,我看到我的简单SQL查询基准提高了大约20%,并且每次运行都变得非常一致

我想我当时在想轻负载服务器上的电源管理是双赢的-没有性能损失,并且可以节省大量功率,因为​​CPU通常是大多数服务器中功耗的第一或第二消耗者。情况似乎并非如此;除非启用了CPU电源管理,否则您将放弃某些性能,除非您的服务器始终处于如此高的负载之下,以至于电源管理已有效地自行关闭。这个结果令我惊讶。

是否还有其他人可以分享服务器CPU电源管理方面的其他经验或建议?您是在服务器上打开还是关闭了它?您测量过省电吗?您是否已对其进行基准测试?


2
我不想这么说,但是,您提供了自己的答案。在平衡模式下,看到“性能”旁边的三个气泡,在高性能模式下,看到六个气泡?有区别:)节能主要是通过对CPU进行降频来实现的。您将看到由此带来的性能下降,即使它可以使其在负载下恢复正常。
Bill Weiss,

是的,但是Windows Server 2008 R2 默认情况下 “平衡” 处于启用状态。对我而言,这意味着在典型的使用中(例如,轻负载的服务器)不应有明显的性能损失。
杰夫·阿特伍德

4
三个泡泡和六个泡泡!看起来差别很大!:)
比尔·魏斯

1
Windows:自1985
Michael Graff

Answers:


16

我不确定服务器,但是目前嵌入式设备中的思想不会打扰低功耗和扁平化之间的步骤,因为所涉及的额外时间会消耗您的功率,因此基本上它们会以低功耗运行,直到获得任何电能为止。实际的CPU负载量,此时它们会翻转到最快可能的位置,这样他们就可以完成工作并以低功耗回到空转状态。


1
我同意这是它在服务器上工作的方式。
杰夫·阿特伍德

11

我总是关闭服务器上的任何类型的电源管理。我对其他人的经历感到很好奇,但是我一直以为如果服务器时钟不足,则将CPU“提升”到100%总是会有一些延迟,而在数据中心设置中,像这样的任何延迟是不可接受的。

您提供的数据似乎支持此假设。因此,我没有进行任何特定的测试,但是您似乎不应在Windows或BIOS中使用任何节能技术。我什至关闭了“关闭网络”和PCI卡设置,以免过于保守。


8

这实际上可以为您节省多少电能
如果您确定此功能可能会使服务器的稳定性受到威胁(我对此有经验),那么您可能会在其他地方寻求节能。

我将尝试找出这对于您拥有的服务器数量可能节省多少能量(尽管也许您已经这样做了)。由于您在答案中张贴的图表是百分比,因此对于您的公司而言,节省的费用实际上可能是很少的实际用电。如果您没有很多服务器,则实际上可能不是那么多,并且在办公室中使用动作激活的照明灯或类似的东西可能会节省更多的能源(即使那不适合销售)。

我记得几年前读过有关美国主要汽车公司之一(忘了哪一家)的压力,他们不得不改变汽车尾气的排放。取而代之的是,该公司表明,如果对一些工厂进行封顶,这对他们来说将便宜得多,并且可以节省更多的排放。

不要忘记磁盘:
此外,如果不使用这些省电功能,则可能要检查这些省电功能是否不会降低磁盘的速度。也许一会儿所有的SQL查询结果都在RAM中,磁盘将被使用并进入睡眠状态(不确定它是否能那样工作)?如果发生这种情况,那么在一切重新旋转时,将会有很大的性能损失。


4
哦,是的,磁盘降速在服务器上很有风险。我们已经在NAS上启用了该功能,Brent Ozar(我们的SQL / DBA专家)建议我们这是一个非常糟糕的主意。每一次启动都像抽奖,看看驱动器是否真的可以恢复原状:)
Jeff Atwood

与“高性能”模式相比,“平衡”模式在空闲时为我节省了10瓦(在i7 4790内核上为〜15.5W与〜25.5W)。但是,Windows Server 2012上的平衡模式似乎无法提高到最大CPU时钟速度,这会严重损害数据库查询性能。
Ryan Anderson

8

除非启用了CPU电源管理,否则您将放弃某些性能,除非您的服务器始终处于如此高的负载之下,以至于电源管理已有效地自行关闭。这个结果令我惊讶。

前言:我正在对Intel Xeons及其通过SpeedStep的节能性能进行一些飞跃/概括。在阅读有关英特尔至强“ Yorkfield ” 45纳米CPU的文章时,增强型Intel SpeedStep技术(EIST)和增强型暂停状态(C1E)似乎是造成这种情况的真正原因。我同意您的说法,认为启用此类电源管理功能将有助于节省能源,但是当CPU需要负载下的能量时,系统将恢复到正常的电压时钟速度设置。看起来EIST和C1E具有一些在BIOS中使用“ /”或“ /”选项时没有直观暗示的副作用。爬过众多超频网站后,BIOS中的这两个设置似乎引起很多挫败感。

http://www.overclock.net/intel-cpus/376099-speedstep-guide-why-does-my-processor.html

C1E(增强的暂停状态):C1E是两个组件中更简单的一个。可以在BIOS中启用或禁用它,并且独立于操作系统执行。C1E具有两种配置-空闲和负载。当CPU使用率相对较低时,此功能会将处理器的乘法器降低到最低设置(通常为6倍),并稍微降低其vCore。在CPU密集型应用程序中,它将把倍频器提高到最大值,并在vCore中提供小幅提升以进行补偿。在我们的示例中,C1E将使您的处理器以FSB的6倍或9倍运行

EIST(增强型Intel SpeedStep技术):这是一个非常强大的功能,并且具有多种节能功能。就像它的表亲一样,EIST会影响您CPU的电压及其乘数-但是,它具有更多级别的配置。SpeedStep可以利用所有可用的乘法器来代替简单的“慢或快”设置。在我们的示例案例中,EIST将允许您的处理器以6、7、8或9的倍数运行,并根据CPU的需求量选择使用哪个。EIST由Windows控制,并利用您可能在控制面板中看到的不同“电源方案”。

虽然调整你的性能设置“高性能”可能是一个数据库服务器的最佳设置,我相当肯定要么EIST和/或C1E导致CPU来,即使执行虽然他们应该已经回到正常的设置,当负载大幅增加。对我来说,最大的警告似乎是“什么是重担?” 根据overclockers.net网站的说法,他们声称EIST使用这些“电源方案”设置来操纵CPU设置。但是,没有迹象显示负载百分比或知道何时将CPU恢复到正常电压的时间。

再说一次,我绝不是英特尔CPU主题方面的专家,但我敢打赌,调整这两个设置可能会为您带来所需的节电应该获得的性能,但坚持使用“最高性能”设置无需重启即可有效。


5

最快的答案是:当然省电会影响性能。

较长的答案很无聊。基本上,请尝试设置,测试性能并决定可以使用什么。

应用程序和系统非常复杂,除了“是的,反应时间和其他系统速度都会受到影响”之外,这里没有干脆的答案。如果它比硬盘驱动器或网络要慢得多,那么,您就会明白。在现实中测试。


4

我一直在尝试尽可能多地对VM进行VM,但是在必须“裸机”服务器的地方,通常要根据需要或完全一致的性能。因此,对于这些关键业务机器,我绝不会出于您遇到的原因打开任何与节电有关的东西。

***一路走来,我的绿色凭证*


3

一些东西:

  1. 检入BIOS以确保电源管理受OS控制。可能会将其设置为由固件管理,因此使用了愚蠢的,非最佳的处理器电源管理。

  2. 检查是否存在您可能缺少的与电源管理相关的修补程序。早在Vista / Server 2008发行之时,就有许多著名的产品。

  3. 检查平衡的详细配置。另一个省电功能可能会导致性能降低。从理论上讲,EIST对性能的影响应该可以忽略不计,尽管话又说回来,SQL数据库具有唯一的占用空间,并且可以想象它受到处理器电源管理的影响不成比例。


1
噢,男孩,我迟到了派对……
Bigbio2002

2

Microsoft的一些信息(不幸的是,Word Doc格式)

使用Windows Server 2008 R2提高能源效率并管理功耗

Windows Server 2008总体上比其前身Windows Server 2003更加节能。默认情况下,Windows Server 2008运行“平衡”节能计划,该计划旨在在保持高性能的同时尽可能地节能。这意味着Windows Server 2008的能耗低于Windows Server 2003的基准安装。由于“平衡”模式可最大程度地提高即用(OOB)的能效,因此Microsoft强烈建议保留默认的“平衡”设置在大多数情况下。

Windows Server 2008包括两个其他默认模式,“省电模式”和“高性能”,它们具有不同的功耗和性能目标,在某些情况下可能适用。“高性能”模式可能适用于以很高的利用率运行并且需要提供最高性能的服务器,而与功耗无关。“节电”模式可用于性能未达到实际需要的,利用率不高的服务器。在这种情况下使用“节电器”可以节省更多电量。

这些特定的硬件级CPU省电功能在任何操作系统下都是相同的,这只是您是否打开它们的问题。

无CPU电源管理与CPU电源管理的节能图表:

我们很清楚(该图显示)在高利用率级别下,CPU电源管理会自动关闭。但是,我尚不清楚的是,在低利用率水平上是否会对整体服务器性能产生影响,例如,简单的SQL Server查询的周转时间。


相信微软撰写的有关他们自己的产品的白皮书似乎有些天真。该功能的目的可能是正确的,但实际数字可能并且将有所不同。
gekkz

1
不相信什么?该“平衡”默认情况下处于启用状态?这是事实..如果您不相信我,请安装Windows Server 2008 R2。
杰夫·阿特伍德

@Jeff Atwood:我认为他可能意味着图表的实际节能结果。出于市场原因,以某种方式显示统计信息以显示最可能的节能效果可能对他们有利。例如,最大功率百分比似乎有些奇怪,为什么不仅仅节省实际功率呢?但是,作为免责声明,他们选择该指标可能有很好的理由(如果这是正确的话)。
凯尔·布​​兰特

毫无疑问,启用CPU电源管理所节省的功率(每个图形仅占10%)..您可以使用千瓦特和自己的家用PC进行验证。实际上,这在家用PC上会更高,因为它们倾向于减少驱动器,内存,RAID控制器等的功耗。
杰夫·阿特伍德

@KyleBrandt-我怀疑使用最大功率百分比来使发现更加通用。这样,您就可以将发现结果应用于机器(与本文中的XXX瓦服务器相比,全功率消耗400w)。
EricB

0

您永远都不应诉诸于Windows设置或Intel处理器附带的Bios Speedstep,并且还有AMD等效功能。这些可能会导致问题,而且我已经看到了这样的问题:即使CPU资源使用情况保持一致,使用Speedstep时,CPU时钟仍会不规则地上下波动。

如果您想更环保,省电,请使用低功耗处理器,该处理器在型号名称前用L字符指定,例如Intel的L 54XX系列和L 55XX系列。

编辑:对不起,如果我给人以为该功能将永远失败的印象,我只是被它烧死了,并且在关键任务系统中我无法发生这种事情,所以我只想留下远离它。


我认为这不会引起问题,或者默认情况下,几乎在每个现代OS和CPU中都不会启用它。您可能在想几年前的CPU节能技术的更旧版本?
杰夫·阿特伍德

看来您假设所有功能都是正常的。我实际上是在谈论在两个不同的服务器上使用双重E5520设置时遇到的第一手经验。
gekkz

@gekkz我认为没有人会说它不可能引起问题,但是您的回答表明它总是或几乎总是会引起问题,这是不正确的。如果是这样,那么现在有成千上万的服务器可能会因此而出现问题。
phoebus

0

当您谈论服务器的性能时,有几种不同的查看方式。有明显的响应时间(类似于网络延迟)和吞吐量(类似于网络带宽)。

某些版本的Windows Server附带默认情况下启用了“平衡电源”设置。正如Jeff指出的那样。Windows 2008 R2是其中之一。目前,很少有CPU是单核的,因此,这种解释几乎适用于您将要运行的每台Windows服务器,单核VM除外。(稍后会详细介绍)。

平衡电源计划处于活动状态时,CPU会尝试调低其使用的电量。这样做的方法是在称为“停放”的过程中禁用一半的CPU内核。一次只能使用一半的CPU,因此在流量较低时它会消耗较少的功率。这本身不是问题。

问题是这样的事实,即当不停放CPU时,您将系统可用的可用CPU周期增加了一倍,并突然使系统上的负载不平衡,从而将其利用率从(例如)70%降低到35%。系统会对此进行处理,并在处理了突发流量后,认为“嘿,我应该拨回一点以节省电量”。确实如此。

这是不好的部分。为了防止CPU内核中的热量和功率分布不均,有一种趋势是将最近未停放的CPU停放。为了使它正常运行,CPU需要将所有内容从CPU寄存器(L1,L2和L3缓存)刷新到其他位置(最可能是主存储器)。

作为一个假设示例,假设您有一个带有C1-C8的8核CPU。

  • 活动:C1,C3,C5,C7
  • 停放:C2,C4,C6,C8

发生这种情况时,它们都会在一段时间内变为活动状态,然后系统将它们停放如下:

  • 活动:C2,C4,C6,C8
  • 停放:C1,C3,C5,C7

但是这样做会使从L1-L3缓存中刷新所有数据产生大量开销,从而使这种情况发生,从而使从CPU管道中刷新的程序不会发生奇怪的错误。

它可能有一个正式名称,但我想将其解释为CPU抖动。基本上,处理器要花更多的时间在忙于内部移动数据的时间上,而不是处理工作请求。

如果您有任何需要低等待时间的应用程序,则需要禁用“平衡电源”设置。如果不确定这是否有问题,请执行以下操作:

  1. 打开“任务管理器”
  2. 单击“性能”选项卡。
  3. 点击“打开资源监控器”
  4. 选择“ CPU”选项卡
  5. 在各个CPU的窗口右侧查看。

如果您看到它们中的任何一个被停放,您会注意到其中有一半在任何给定时间停放,它们都会点火,然后另一半被停放。它来回交替。因此,系统CPU运转异常。

虚拟机:当您运行虚拟机时,此问题甚至更加严重,因为虚拟机管理程序会带来额外的开销。一般而言,为了使VM运行,硬件需要在每个时间片上为每个核提供一个可用的时间槽。

如果您拥有16个核心硬件,则可以使用总共16个以上的核心来运行VM,但是对于每个时间片,该时间片最多只能使用16个虚拟CPU,并且虚拟机管理程序必须适合VM的所有核心。进入那个时间片。它不能分散在多个时间片上。(时间片本质上是一组X个CPU周期。可能是1000个周期,也可能是100k个周期)

例如:16个核心硬件和8个虚拟机。6个具有4个虚拟CPU(4C),2个具有8个虚拟CPU(8C)。

时间片1:4x4C时间片2:2x8C时间片3:2x4C + 1x8C时间片4:1x8C + 2x4C

系统管理程序无法执行的操作是将时间片的一半分配分配给8个vCPU VM的前四个CPU,然后在下一个时间片上,将其余分配给该VM的其他4个vCPU。时间片内的全部或全部为空。

如果您使用的是Microsoft的Hyper-V,则可以在主机OS中启用电源控制设置,这意味着它将向下传播到客户端系统,从而也影响它们。

一旦了解了它的工作原理,就很容易看到使用“平衡电源控制”设置如何导致性能问题和服务器性能下降。根本问题之一是传入请求需要等待CPU驻留/解除驻留过程完成,然后服务器才能响应传入请求,无论是数据库查询,Web服务器请求还是其他任何东西。

有时,系统会在请求中间停放或取消停放CPU。在这些情况下,请求将开始进入CPU管道,从请求管道中转出,然后其他CPU内核将从那里接管该过程。如果请求量足够大,则在整个请求过程中可能会发生多次,将原来应由5秒的数据库查询更改为15秒的数据库查询。

使用Balanced Power所能看到的最大事情就是,系统几乎无法响应您提出的每个请求。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.