在企业和数据中心环境中,能效越来越重要,它为配置选项组合增添了另一组权衡。 管理服务器时,请务必确保它们尽可能高效地运行,同时满足工作负荷的性能需求。 Windows Server 针对出色的能效进行优化,在各种客户工作负载中对性能影响最小。 Windows Server 均衡电源计划的处理器电源管理(PPM)优化 描述了用于优化多个 Windows Server 版本中默认参数的工作负载,并提供自定义优化的建议。
本部分扩展了节能权衡,帮助你做出明智的决策(如果需要调整服务器上的默认电源设置)。 但是,运行 Windows Server 时,大多数服务器硬件和工作负载不应要求管理员进行电源优化。
选择优化指标
调整服务器以节省能源时,还必须考虑性能。 优化会影响性能和功耗,有时影响不成比例。 对于每个可能的调整,请考虑您的电源预算和性能目标,以判断这种权衡是否可以接受。
Windows Server 默认参数优化使用“节能”作为平衡电源和性能的关键指标。 节能是完成的工作与指定时间内所需的平均功率的比率。
可以使用此指标来设置实际目标,以尊重电源和性能之间的权衡。 相比之下,数据中心内 10% 的节能目标无法捕获对性能的相应影响,反之亦然。
同样,如果将服务器优化以提高性能5%,但结果导致能耗增加10%,则最终结果可能会或可能不会符合您的业务目标。 与单独使用功耗或性能指标相比,能源效率指标让你能够做出更明智的决策。
测量系统能耗
在优化服务器以提高效率之前,应先建立基线电源度量。
如果你的服务器具有必要的支持,则可以使用 Windows Server 2016 中的电源计量和预算功能来使用性能监视器查看系统级别的能耗。
确定服务器是否支持计量和预算的一种方法是查看 Windows Server 目录。 如果你的服务器模型符合 Windows 硬件认证计划中新的增强型电源管理资格,则保证支持计量和预算功能。
检查计量支持的另一种方法是在性能监视器中手动查找计数器。 打开性能监视器,选择 “添加计数器”,然后找到 “电源计量 ”计数器组。
如果命名的电源计量实例显示在标记为 “所选对象的实例”框中,则平台支持计量。 以瓦为单位显示电源的 电源 计数器显示在所选计数器组中。 未指定功率数据值的确切派生。 例如,它可以是瞬时功率消耗,也可以是某个时间间隔内的平均功率消耗。
如果服务器平台不支持计量,则可以使用连接到电源输入的物理计量设备来测量系统电源消耗量或能耗。
若要建立基线,应测量各种系统负载点所需的平均功率,从空闲到 100% (最大吞吐量)以生成负载线。 下图显示了三个示例配置的负载行:
可以使用负载线来评估和比较所有负载点的配置的性能和能耗。 在此特定示例中,可以轻松查看最佳配置。 在某些情况下,一个配置最适合繁重的工作负荷,而另一个则最适合轻型工作负荷。
需要全面了解工作负荷要求,以选择最佳配置。 不要假设找到良好的配置时,它始终保持最佳状态。 在工作负荷、工作负荷级别或服务器硬件发生更改后,应定期测量系统利用率和能耗。
诊断节能问题
PowerCfg.exe 支持一个命令行选项,可用于分析服务器的空闲能效。 使用 /energy 选项运行 PowerCfg.exe 时,该工具会执行 60 秒的测试来检测潜在的节能问题。 该工具在当前目录中生成一个简单的 HTML 报表。
重要
若要确保准确的分析,请确保在运行 PowerCfg.exe之前关闭所有本地应用。
缩短了计时器计时周期率、缺少电源管理支持的驱动程序以及 CPU 使用率过高的驱动程序是 powercfg /energy 命令检测到的一些行为问题。 此工具提供了一种简单的方法来识别和修复电源管理问题,这可能会导致大型数据中心节省大量成本。
有关 PowerCfg.exe的详细信息,请参阅 Powercfg 命令行选项。
在 Windows Server 中使用电源计划
Windows Server 2016 有三个内置电源计划,旨在满足不同的业务需求集。 这些计划提供了一种简单的方法,帮助你自定义服务器,以达到电能或性能目标。 下表介绍了这些计划,列出了使用每个计划的常见方案,并为每个计划提供一些实现详细信息。
计划 | 描述 | 常见适用方案 | 实现亮点 |
---|---|---|---|
平衡(推荐) | 默认设置。 以最低的性能影响为目标,实现良好的能效。 | 常规计算 | 匹配容量以满足需求。 节能功能在电力使用和性能之间保持平衡。 |
高性能 | 提高性能的代价是高能耗。 电源和热限制、运营费用和可靠性注意事项适用。 | 对处理器性能更改敏感的低延迟应用和应用代码 | 处理器始终锁定在最高性能状态(包括“涡轮增压” 频率)。 所有核心均已取消休眠。 热输出可能很重要。 |
电源节省器 | 限制性能以节省能源并降低运营成本。 在没有经过彻底测试以确保性能足够的情况下,不推荐使用。 | 具有有限电源预算和热约束的部署 | 将处理器频率上限为最大百分比(如果受支持),并启用其他节能功能。 |
这些电源计划存在于 Windows 中,用于交替电流(AC)和直接电流(DC)供电的系统,但我们假设服务器始终使用 AC 电源。
有关电源计划和电源策略配置的详细信息,请参阅 Powercfg 命令行选项。
注释
某些服务器制造商通过 BIOS 设置提供自己的电源管理选项。 如果作系统无法控制电源管理,则更改 Windows 中的电源计划不会影响系统电源和性能。
优化处理器电源管理参数
每个电源计划都表示许多基础电源管理参数的组合。 内置计划是建议设置的三个集合,涵盖各种工作负载和方案。 但是,我们认识到,这些计划不会满足每个客户的需求。
以下部分介绍了优化某些特定处理器电源管理参数的方法,以满足三个内置计划未解决的目标。 如果需要了解更广泛的电源参数数组,请参阅 Powercfg 命令行选项。
Intel 硬件控制 P 状态 (HWP)
从运行 WS2016 的 Intel Broadwell 处理器开始,Windows PPM 使用 Intel 的硬件控制 P 状态(HWP)。 HWP 是协作硬件和软件性能控制的新功能。 启用 HWP 后,CPU 会监视活动和可伸缩性,并在硬件时间范围内选择频率。 不再需要 OS 来监视活动,并定期选择频率。 切换到 HWP 具有以下优点:
- 快速处理突发工作负荷。 Windows PPM 检查间隔设置为默认值 30 毫秒,可减少为 15 毫秒。 但是,HWP 可以每 1 毫秒快速调整频率。
- CPU 更好地了解每个 P 状态的硬件电源效率。 它可以更好地选择处理器频率,以实现最佳电源效率。
- CPU 可以将其他硬件使用情况(例如内存、GPU 等)考虑在特定的 TDP(热设计电源)下实现最佳功率效率。
Windows 仍可以设置最小和最大处理器状态,以限制处理器可以执行的频率范围。 它还可以设置以下处理器能源性能首选项策略 (EPP) 参数,以指示 HWP 偏向电源或性能。
- 处理器能源性能首选项策略 ,用于在电源和性能之间设置平衡。 较低的值有利于性能,而较高的值有利于权力。 该值可以介于 0 和 100 之间。 默认值 50,用于平衡电源和性能。
以下命令将当前电源计划上的 EPP 值降低到 0,使性能完全优于功耗:
Powercfg -setacvalueindex scheme_current sub_processor PERFEPP 0
Powercfg -setactive scheme_current
最小和最大处理器性能状态
处理器在性能状态(P 状态)之间非常快速地变化,以匹配供需,在必要时提供性能,并尽可能节省能源。 如果服务器具有特定的高性能或最低能耗要求,则可以考虑配置 最低处理器性能状态 参数或 最大处理器性能状态 参数。
最小处理器性能状态和最大处理器性能状态参数的值表示为最大处理器频率的百分比,范围为 0 – 100。
如果服务器需要超低延迟、固定的 CPU 频率(例如,用于可重复测试),或者性能级别最高,你可能不希望处理器切换到低性能状态。 对于此类服务器,可以使用以下命令将最低处理器性能状态限制为 100% :
Powercfg -setacvalueindex scheme_current sub_processor PROCTHROTTLEMIN 100
Powercfg -setactive scheme_current
如果服务器需要较低的能耗,可能需要将处理器性能状态限制为最大百分比。 例如,可以使用以下命令将处理器限制为最大频率的 75% :
Powercfg -setacvalueindex scheme_current sub_processor PROCTHROTTLEMAX 75
Powercfg -setactive scheme_current
注释
将处理器性能上限限制为最大百分比需要处理器支持。 检查处理器文档以确定是否存在此类支持,或者查看处理器组中最大频率% 性能监视器计数器,以查看是否应用了任何频率上限。
处理器响应能力替代
基于 CPU 利用率的电源管理算法通常在时间检查时段内使用平均 CPU 利用率来确定频率是否需要增加或减少。 这可能会损害磁盘 I/O 或网络密集型工作负荷的延迟。 在等待磁盘 I/O 完成或网络数据包时,逻辑处理器可能处于空闲状态,这使得总体 CPU 利用率较低。 因此,电源管理将为此处理器选择低频率。 此问题也存在于基于 HWP 的电源管理上。 处理 IO 完成或网络数据包的 DPC 和线程位于关键路径中,不应以低速度运行。 若要解决此问题,Windows PPM 将 DPC 的数量考虑在内。 当 DPC 计数超过过去监视窗口中的特定阈值时,PPM 将进入 IO 响应期,并将频率下限提高到更高的级别。 当 DPC 计数在一段时间内足够低时,频率下限将被重置。 可以通过以下参数优化该行为。
参数 | 描述 | 默认值 | 最小值 | 最大值 |
---|---|---|---|---|
处理器响应能力替代启用阈值 | 性能检查内的 DPC 计数;如果高于此计数,应启用处理器响应能力替代 | 10 | 0 | 非适用 |
处理器响应能力替代禁用阈值 | 性能检查内的 DPC 计数;如果低于此计数,应禁用处理器响应能力替代 | 5 | 0 | 非适用 |
处理器响应能力替代启用时间 | 连续性能检查的计数;在启用处理器响应能力替代之前,该计数必须满足启用阈值 | 1 | 1 | 100 |
处理器响应能力替代禁用时间 | 连续性能检查的计数;在禁用处理器响应能力替代之前,该计数必须满足禁用阈值 | 3 | 1 | 100 |
处理器响应能力替代性能下限 | 启用处理器响应覆盖时允许的最低处理器性能 | 100 | 0 | 100 |
处理器响应能力覆盖能源性能首选项上限 | 启用处理器响应性替代时的最大能源性能首选项策略值 | 100 | 0 | 100 |
例如,如果服务器工作负荷对延迟不敏感,并且想要松动响应能力替代以支持电源,则可以增加处理器响应能力替代启用阈值和处理器响应能力替代启用时间、减少处理器响应能力替代禁用阈值和处理器响应能力替代禁用时间。 这之后,系统将很难进入响应能力替代状态。 处理器响应能力替代性能楼层的默认值设置为 100,以便响应能力替代期将以最大频率运行。 你还可以降低处理器性能下限,降低处理器响应能力替代能源性能首选项上限,以便 HWP 调整频率。 下面是用于设置当前活动电源计划参数的示例命令。
Powercfg -setacvalueindex scheme_current sub_processor RESPENABLETHRESHOLD 100
Powercfg -setacvalueindex scheme_current sub_processor RESPDISABLETHRESHOLD 1
Powercfg -setacvalueindex scheme_current sub_processor RESPENABLETIME 10
Powercfg -setacvalueindex scheme_current sub_processor RESPDISABLETIME 1
Powercfg -setacvalueindex scheme_current sub_processor RESPPERFFLOOR 5
Powercfg -setacvalueindex scheme_current sub_processor RESPEPPCEILING 50
Powercfg -setactive scheme_current
处理器性能提升模式
此参数优化仅适用于非 HWP 系统。
Intel Turbo Boost 和 AMD Turbo CORE 技术是允许处理器在最有用(即高系统负载)时实现额外性能的功能。 但是,此功能会增加 CPU 核心能耗,因此 Windows Server 2016 基于正在使用的电源策略和特定的处理器实现配置 Turbo 技术。
Turbo 在所有 Intel 和 AMD 处理器上都启用了高性能电源计划,并且禁用了节能电源计划。 对于依赖传统基于 P 状态的频率管理系统的均衡电源计划,只有当平台支持 EPB 寄存器时,Turbo 才会默认启用。
注释
仅 Intel Westmere 和更高版本的处理器支持 EPB 寄存器。
对于 Intel Nehalem 和 AMD 处理器,Turbo 默认在基于 P 状态的平台上禁用。 但是,如果系统支持协作处理器性能控制(CPPC),这是在 ACPI 5.0 中定义的操作系统与硬件之间的性能通信的新替代模式,则如果 Windows 操作系统动态请求硬件提供最高可能的性能级别,Turbo 可能会被启用。
若要启用或禁用 Turbo Boost 功能,处理器性能提升模式参数必须由管理员或所选电源计划的默认参数设置进行配置。 处理器性能提升模式有五个允许的值,如表 5 所示。
对于基于 P 状态的控制机制,可选项为“已禁用”、“已启用”(每当请求名义性能时,硬件可以使用 Turbo),以及“高效”(仅在实现 EPB 寄存器的情况下才可以使用 Turbo)。
对于基于 CPPC 的控制,选项为“禁用”、“高效启用”(Windows 指定要提供的 Turbo 的确切数量)和“攻击性”(Windows 要求“最大性能”以启用 Turbo)。
在 Windows Server 2016 中,提升模式的默认值为 3。
名字 | 基于 P 状态的行为 | CPPC 行为 |
---|---|---|
0(禁用) | 已禁用 | 已禁用 |
1 (已启用) | 已启用 | 启用高效率 |
2 (咄咄逼人) | 已启用 | 激进 |
3(启用高效率) | 高效 | 启用高效率 |
4(高效率激进) | 高效 | 激进 |
以下命令在当前电源计划上启用处理器性能提升模式(使用 GUID 别名指定策略):
Powercfg -setacvalueindex scheme_current sub_processor PERFBOOSTMODE 1
Powercfg -setactive scheme_current
重要
必须运行 powercfg -setactive 命令才能启用新设置。 无需重新启动服务器。
若要为当前所选计划以外的电源计划设置此值,可以使用别名(例如SCHEME_MAX(电源节省器)、SCHEME_MIN(高性能)和SCHEME_BALANCED(均衡)代替SCHEME_CURRENT。 将前面显示的 powercfg -setactive 命令中的“scheme current”替换为启用该电源计划所需的别名。
例如,若要在 Power Saver 计划中调整提升模式,并使 Power Saver 是当前计划,请运行以下命令:
Powercfg -setacvalueindex scheme_max sub_processor PERFBOOSTMODE 1
Powercfg -setactive scheme_max
处理器性能提高和降低阈值和策略
此参数优化仅适用于非 HWP 系统。
处理器性能状态增加或减少的速度由多个参数控制。 以下四个参数具有最明显的影响:
处理器性能增加阈值 定义处理器性能状态将增加的利用率值。 较大的值会降低性能状态的提高速度,以响应活动增加。
处理器性能降低阈值 定义处理器性能状态将降低的利用率值。 较大的值会增加空闲期间性能状态的降低率。
处理器性能提高策略和处理器性能降低 策略确定在发生更改时应设置哪些性能状态。 “单一”策略意味着它选择下一个状态。 “火箭”表示最大或最小功率性能状态。 “理想”尝试在电源和性能之间找到平衡。
例如,如果你的服务器需要超低延迟,同时仍希望在空闲期间从低功耗中获益,你可以针对负载的任何增加来加快性能状态的提高,在负载下降时减慢该状态的降低。 以下命令将增加策略设置为“火箭”,以加快状态增加,并将减少策略设置为“单一”。 增加和减少阈值分别设置为 10 和 8。
Powercfg.exe -setacvalueindex scheme_current sub_processor PERFINCPOL 2
Powercfg.exe -setacvalueindex scheme_current sub_processor PERFDECPOL 1
Powercfg.exe -setacvalueindex scheme_current sub_processor PERFINCTHRESHOLD 10
Powercfg.exe -setacvalueindex scheme_current sub_processor PERFDECTHRESHOLD 8
Powercfg.exe /setactive scheme_current
处理器性能核心休眠最大和最小核心数
核心停车是 Windows Server 2008 R2 中引入的功能。 处理器电源管理(PPM)引擎和计划程序协同工作,以动态调整可用于运行线程的核心数。 PPM 引擎为将要计划的线程选择最小核心数。
休眠的核心通常没有计划任何线程,并且当它们不处理中断、DPC 或其他严格关联的工作时,它们将进入非常低功耗的状态。 其余核心负责工作负荷的其余部分。 核心停车可能会在降低使用期间提高能效。
对于大多数服务器,默认的核心休眠行为在吞吐量和能源效率之间提供了合理的平衡。 在处理器上,核心闲置功能在常规工作负载中可能不会显示出太多好处,因此默认情况下可以禁用。
如果服务器具有特定的核心停车要求,则可以通过使用 处理器性能核心停车最大核心 参数或 Windows Server 2016 中的 处理器性能核心停车最低核心 参数来控制可供寄存的核心数。
核心休眠并不总是最优的一种情况是,NUMA 节点中有一个或多个活动线程关联到 CPU 的一个非平凡子集(即,节点上超过 1 个 CPU,但小于整个 CPU 集)。 当核心驻留算法在选择核心以取消驻留时(假设工作负荷强度增加),它可能不总是从活动关联子集(或子集)中选择核心来取消驻留,因此可能会最终取消驻留那些不会实际使用到的核心。
这些参数的值是范围 0 – 100 中的百分比。 处理器性能核心停车最大核心参数控制随时可以取消锁定(可用于运行线程)的最大核心百分比,而处理器性能核心停车最低核心参数控制可取消锁定的核心的最小百分比。 若要关闭核心停车,请使用以下命令将 处理器性能核心停车最低核心 参数设置为 100% :
Powercfg -setacvalueindex scheme_current sub_processor CPMINCORES 100
Powercfg -setactive scheme_current
若要将可调度核心数减少到最大数量的 50%,请将 处理器性能核心停车最大核心 参数设置为 50,如下所示:
Powercfg -setacvalueindex scheme_current sub_processor CPMAXCORES 50
Powercfg -setactive scheme_current
处理器性能核心休眠实用程序分发
实用工具分发是 Windows Server 2016 中的算法优化,旨在提高某些工作负载的电源效率。 它跟踪不可移动的 CPU 活动(即 DPC、中断或严格关联线程),并根据任何可移动的工作可平均分布在所有未休眠的核心上这一假设来预测每个处理器的未来工作。
对于某些处理器的均衡电源计划,默认情况下会启用实用工具分发。 它可以通过降低处于相当稳定状态的工作负荷请求的 CPU 频率来降低处理器能耗。 但是,对于高活动突发的工作负荷,或者对于工作负荷快速和随机跨处理器进行移动的程序,实用工具分发不一定是一个很好的算法选择。
对于此类工作负荷,我们建议使用以下命令禁用实用工具分发:
Powercfg -setacvalueindex scheme_current sub_processor DISTRIBUTEUTIL 0
Powercfg -setactive scheme_current