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

我在非繁忙时间在我们的(实时)数据库服务器上做了一些简单的手工基准testing,我注意到查询返回了一些不稳定的基准testing结果

前段时间,我在所有服务器上启用了“平衡”节电计划,因为我觉得它们远未达到高利用率,这样我们可以节省一些能源。

我认为这对绩效没有重大的可衡量的影响。 但是, 如果CPU节能function影响典型性能 – 特别是在共享数据库服务器上 – 那么我不确定这是否值得!

我们有点惊讶,即使在35-40%负载的情况下,我们的networking层次从2.8 GHz降至1.25 V,2.0 GHz降至1.15 V.

我完全期待下降时钟来节省电力,但是这个负载水平对我来说似乎足够高了,以至于它应该能够全速工作。

我们的8-cpu数据库服务器有大量的stream量,但CPU利用率非常低(只是由于我们的SQL查询的性质 – 很多,但真正简单的查询)。 它通常在10%以下。 所以我期望它比上面的截图还要低。 无论如何, 当我把电源pipe理转化为“高性能”时,我看到我简单的SQL查询基准提高了大约20%,并且从运行到运行变得非常一致

我想我以为在轻载服务器上的电源pipe理是双赢的 – 没有性能损失,并且节省了大量电能,因为在大多数服务器中,CPU通常是电力消耗的头号或者第二大用户。 这似乎不是这样; 你会放弃CPU电源pipe理启用的一些性能,除非你的服务器总是在这么大的负载下,电源pipe理已经有效地自行closures了。 这个结果让我很吃惊。

有没有人有任何其他的经验或build议,分享在服务器的CPU电源pipe理? 是在服务器上打开还是closures的东西? 你节省了多less电力? 你有没有基准和closures?

我不确定服务器,但目前embedded式设备的想法是不要在低功耗和低功耗之间采取措施,因为所花费的额外时间会节省您的功耗,所以基本上它们的功耗一直很低真正的CPU负载量在这一点上,他们翻转到最快的可能,所以他们可以完成工作,并回到低功耗怠速。

我一直closures服务器上的任何types的电源pipe理。 我很好奇别人经历了什么,但是我一直认为如果服务器时钟不足,总是会有一些延迟将CPU“提升”到100%,在数据中心设置这样的延迟是不可接受的。

您提供的数据似乎支持这个假设。 所以,我没有做任何特定的testing,但似乎不应该在Windows或BIOS中使用任何省电技术。 我甚至closures“closuresnetworking”和PCI卡设置是非常保守的。

这实际上将有多less能量拯救
如果你确定这个function可能会把你的服务器的稳定性置于危险之中(我有这方面的经验),那么你可以在别处寻找能源节省。

我会试图找出多less能量可以节省您的服务器的数量 (虽然也许你已经这样做了)。 由于您在答案中发布的图表是百分比,对于您的公司而言,节省的实际能力可能实际上很小。 如果你没有很多的服务器,实际上可能并不是那么多,而在办公室里获得运动激活的灯光或类似的东西可能会节省更多的能源(尽pipe这不是那么适合的)。

我记得几年前读到美国一家主要的汽车公司(忘记是哪个)有压力改变汽车排放废气的问题。 相反,该公司表明,如果盖上了一些工厂,这对他们来说便宜得多,并且可以节省更多的排放量。

不要忘记磁盘:
此外,您可能需要检查这些省电function如果不使用,则不会使磁盘停转。 也许有一段时间所有的SQL查询结果将在RAM中,磁盘将被使用,并进入睡眠(不知道它是否像那样工作)? 如果发生这种情况,将会有一个很大的性能损失,而一切都会重新出现。

你会放弃CPU电源pipe理启用的一些性能,除非你的服务器总是在这么大的负载下,电源pipe理已经有效地自行closures了。 这个结果让我很吃惊。

前言:我正在对英特尔至强处理器进行一些飞跃/概括,并通过SpeedStep进行节能performance。 在阅读英特尔至强“ Yorkfield ”45纳米CPU时,增强型英特尔SpeedStep技术(EIST)和增强暂停状态(C1E)似乎是这种情况的真正罪魁祸首。 我同意你的看法,认为打开这样的电源pipe理function将有助于节约能源,但是当CPU需要负载下的能量时,系统将恢复到正常的电压时钟速度设置。 看来EIST和C1E有一些副作用,在BIOS中使用/或选项时,并不直观。 在浏览大量的超频网站之后,看起来这两个设置在BIOS中会引起很大的沮丧。

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

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

EIST(增强型英特尔SpeedStep技术) :这是一个非常强大的function,并具有各种节电function。 像其简单的表亲一样,EIST可以同时影响CPU的电压和倍频 – 但是,它具有更多的configuration级别。 SpeedStep可以利用所有可用的乘法器,而不是简单的“慢速或快速”设置。 在我们的示例中,EIST将允许您的处理器以6,7,8或9的倍数运行 ,并根据您的CPU所处的需求select使用哪一个。 EIST由Windows控制,并利用您可能在控制面板中看到的不同“电源scheme”。

虽然调整“高性能”的性能设置可能是数据库服务器的最佳设置,但我相当肯定EIST和/或C1E导致CPU执行不足,即使它们应该在负载回到正常设置大幅增加。 对我来说,最重要的警告似乎是“什么是实质负载?” 根据overclockers.net网站,他们声称EIST使用这些“电源scheme”设置如何操纵你的CPU设置。 但没有迹象表明负载的百分比或多久知道什么时候把CPU恢复到正常电压。

再说一次,我并不是英特尔CPU主题方面的专家,但我敢打赌,调整这两个设置可能会节省您想要的功耗性能,但仍坚持“最高性能”设置没有必要重新启动一样有效。

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

较长的答案是没有乐趣。 基本上,尝试一个设置,testing性能,并决定你可以住。

应用程序和系统非常复杂,除了“是的,反应时间和其他系统速度会受到影响”之外,这里没有切入点和干涉的答案。 如果它比硬盘或者networking慢得多,那么你就明白了。 在现实中testing。

我总是尝试尽可能多的虚拟机,但我必须“裸机”服务器通常是我需要的,或者想要完全一致的性能。 所以对于这些关键业务的机器,我绝对不会因为您遇到的原因而切换任何节电相关的东西。

***邦去,我的绿色的凭据*

一些东西:

  1. 检查BIOS以确保电源pipe理处于操作系统控制之下。 它有可能被设置为由固件pipe理,因此使用哑巴的,不理想的处理器电源pipe理。

  2. 检查是否有任何可能会丢失的与电源pipe理相关的修补程序。 Vista / Server 2008出现的时候,还有不less值得注意的东西。

  3. 检查Balanced的详细configuration。 另一个省电function可能会导致性能降低。 从理论上讲,EIST的性能应该可以忽略不计,尽pipe如此,SQL数据库有一个独特的足迹,可以想象,它受到处理器电源pipe理的不成比例的影响。

来自微软的一些信息(不幸的是,Word Doc格式)

使用Windows Server 2008 R2提高能源效率和pipe理功耗

Windows Server 2008比其前身Windows Server 2003整体效率更高。 默认情况下,Windows Server 2008运行“平衡”节电计划 ,旨在尽可能节省功耗,同时保持高性能。 这意味着Windows Server 2008比使用Windows Server 2003的基准安装功耗要低。由于“平衡”模式可以最大限度地提高开箱即用(OOB)的能效,Microsoft强烈build议select默认的“平衡”设置在多数情况下。

Windows Server 2008包含两个额外的默认模式,“节电器”和“高性能”,它们具有不同的功率和性能目标,在某些情况下可能适用。 “高性能”模式可能适用于运行速度非常高且需要提供最高性能的服务器,而不考虑电力成本。 “节电器”模式可用于比实际需要的性能更强的less用服务器; 在这种情况下使用“节电器”可能会节省更多的电量。

这些特定的硬件级别的CPU省电function在任何操作系统当然都是一样的,这只是你打开它的问题。

无CPU电源pipe理的功耗节省图与CPU电源pipe理:

我们很清楚(而且这个图表显示)在高利用率水平下,CPU电源pipe理被自动closures。 然而,我不清楚的是,在低利用率水平下是否会影响整体服务器的性能,例如简单的SQL Server查询的周转时间。

你永远不应该使用Windows设置或Intel处理器上的Bios Speedstep,而且还有一个与AMD相当的设备。 这些可能会导致问题,并且我已经看到了这样的问题,即使CPU资源使用率一致,使用Speedstep CPU时钟仍然会不稳定地反弹。

如果您希望更环保,更省电,请使用型号名称前带有L字符的低功耗处理器,例如英特尔的L 54XX系列和L 55XX系列。

编辑:对不起,如果我给人的印象是,这个function将永远失败,我刚刚被它烧了,在关键任务系统,我不能有这样的事情发生,所以我只是想留下来远离它。

当你在服务器上谈论性能时,有几种不同的方式来看待它。 有明显的响应时间(类似于networking延迟)和吞吐量(类似于networking带宽)。

某些版本的Windows Server默认启用平衡功耗设置。 正如杰夫指出的那样。 Windows 2008 R2就是其中之一。 现在很less有CPU是单核心的,所以这个解释几乎适用于所有的Windows服务器,除了单核虚拟机以外, (稍后更多)。

平衡电源计划处于活动状态时,CPU会尝试恢复使用的电量。 这样做的方式是通过在称为“停放”的过程中禁用一半的CPU核心。 一次只有一半的CPU可用,因此在低stream量时使用更less的电力。 这本身并不是一个问题。

问题在于,当CPU处于停放状态时,系统可用的CPU周期翻倍,系统负载突然不平衡,从70%的利用率到35%的利用率。 系统看,在处理stream量爆发后,它认为“嘿,我应该拨这一点来节约电力”。 这样做。

这是坏的一部分。 为了防止CPU核心内热量和功率的不均匀分布,有一种倾向于停放最近未停放的CPU。 为了正常工作,CPU需要刷新CPU寄存器(L1,L2和L3caching)中的所有内容(最有可能的主内存)。

作为一个假设的例子,比方说,你有一个8核心CPU与C1-C8。

  • 有效:C1,C3,C5,C7
  • 停放:C2,C4,C6,C8

当这种情况发生时,所有这些都会在一段时间内变得活跃,然后系统将把它们停放在如下位置:

  • 有效:C2,C4,C6,C8
  • 停放:C1,C3,C5,C7

但是在这样做的时候,为了清除L1-L3高速caching中的所有数据,需要花费大量的开销,以避免奇怪的错误发生在CPUstream水线刷新的程序上。

有可能是一个正式的名字,但我喜欢解释它CPU的抖动。 基本上,处理器花费更多的时间在忙于内部传输数据,而不是在处理工作请求。

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

  1. 打开“任务pipe理器”
  2. 点击“性能”标签。
  3. 点击“打开资源监视器”
  4. select“CPU”选项卡
  5. 看看各个CPU的窗口右侧。

如果你看到有人停下来,你会注意到其中有一半是停在任何时候,他们都会起火,然后另一半停下来。 它来回交替。 因此,系统CPU正在抖动。

虚拟机:当你运行虚拟机时,这个问题更加严重,因为虚拟机pipe理程序有额外的开销。 一般而言,为了使虚拟机运行,硬件需要在每个时间片上为每个核心提供时隙。

如果你有一个16核心的硬件,你可以使用16个以上的内核来运行虚拟机,但是对于每个时间片,最多只有16个虚拟CPU将符合这个时间片的要求,并且虚拟机pipe理程序必须适合虚拟机的所有内核进入那个时间点。 它不能分散在多个时间片上。 (时间片基本上是一组X CPU周期,可能是1000次,也可能是10万次)

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

Timeslice 1:4x4C Timeslice 2:2x8C Timeslice 3:2x4C + 1x8C Timeslice 4:1x8C + 2x4C

pipe理程序无法做到的是将一个时间片分配的一半分配给8个vCPU虚拟机的前4个CPU,然后在下一个时间片上将剩下的部分分配给该虚拟机的其他4个vCPU。 在时间片中,这是全部或没有。

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

一旦你看到这是如何工作,很容易看到如何使用平衡电源控制设置导致性能问题和缓慢的服务器。 其中一个潜在的问题是传入的请求需要等待CPU停放/卸载过程完成,然后服务器才能够响应传入的请求,无论是数据库查询,Web服务器请求还是其他任何事情。

有时,系统会在请求中间停放或取消停放CPU。 在这种情况下,请求将启动到CPUpipe道中,并从中取出,然后另一个CPU内核将从中取出进程。 如果请求的数据量足够大,则在整个请求过程中可能会发生多次,将本来应该是5秒的数据库查询改为15秒的数据库查询。

使用Balanced Power最重要的一点是,系统对每个请求的响应速度都会变慢。