针对 Windows Server 平衡电源计划的处理器电源管理 (PPM) 优化
从 Windows Server 2008 开始,Windows Server 提供三种电源计划:“平衡”、“高性能”和“节能”。 “平衡”电源计划是默认选择,旨在为一组典型的服务器工作负载提供最佳能效。 本主题介绍用于确定以往几个 Windows 版本的“平衡”方案默认设置的工作负载。
如果你运行的服务器系统的工作负载特征或性能和电源要求与这些工作负载截然不同,则可能需要考虑优化默认电源设置(即创建自定义电源计划)。 服务器硬件电源注意事项是一个有用的优化信息来源。 或者,你可能认为需要消耗大量能源才能换取一定程度的响应能力提升,因此“高性能”电源计划是适合你环境的正确选择。
重要
除非你要创建自定义策略来解决特定的需求并且非常清楚结果会因工作负载的特征而异,否则应该利用 Windows Server 随附的电源策略。
Windows 处理器电源优化方法
测试的工作负载
选择的工作负载应涵盖一组尽力而为的“典型”Windows Server 工作负载。 显然,这一组工作负载并不能代表整个现实服务器环境。
每个电源策略中的优化是由以下五个从 Windows Server 2008 启动的工作负载驱动的数据
IIS Web 服务器工作负载
名为 Web Fundamentals 的 Microsoft 内部基准测试用于优化运行 IIS Web 服务器的平台的能效。 该设置包含一个 Web 服务器和多个模拟 Web 访问流量的客户端。 动态、静态热(内存中)和静态冷(需要磁盘访问)网页的分布基于生产服务器的统计研究。 为了充分利用服务器的 CPU 核心(测试范围的一端),该设置需要足够快的网络和磁盘资源。
SQL Server 数据库工作负载
TPC-E 基准是一种流行的数据库性能分析基准。 它用于为 PPM 调优生成 OLTP 工作负载。 该工作负载具有大量的磁盘 I/O,因此对存储系统和内存大小有很高的性能要求。
文件服务器工作负载
Microsoft 开发的名为 FSCT 的基准测试用于生成 SMB 文件服务器工作负载。 它在服务器上创建一个大型文件集,并使用许多客户端系统(实际或虚拟化的)来生成文件打开、关闭、读取和写入操作。 操作组合基于生产服务器的统计研究。 它对 CPU、磁盘和网络资源施加压力。
SPECpower – JAVA 工作负载
SPECpower_ssj2008 是第一个联合评估功率和性能特征的行业标准 SPEC 基准。 它是具有不同 CPU 负载级别的服务器端 Java 工作负载。 它不需要太多的磁盘或网络资源,但对内存带宽有一定的要求。 几乎所有的 CPU 活动都在用户模式下执行;内核模式活动对基准测试的功率和性能特征没有太大影响,但电源管理决策除外。
应用程序服务器工作负载
SAP-SD 基准用于生成应用程序服务器工作负载。 使用两层设置,数据库和应用程序服务器位于同一台服务器主机上。 此工作负载还利用响应时间作为性能指标,这与其他受测试的工作负载不同。 因此它被用来验证 PPM 参数对响应能力的影响。 但是,它并不代表所有延迟敏感型生产工作负载。
SPECpower 除外的所有基准测试最初都是为性能分析而设计,因此创建为在峰值负载级别下运行。 但是,中等到轻度负载级别对于现实生产服务器更为常见,并且对“平衡”计划优化更有意义。 通过使用各种限制方法(例如,通过减少活跃用户/客户端数量),我们有意在从 100% 到 10%(以 10% 为步长)的不同负载级别下运行了基准测试。
上述工作负载使用吞吐量作为优化的性能指标。 在稳定状态下,吞吐量不会随着利用率的变化而变化,直到系统过载(~100% 利用率)。 因此,“平衡”电源计划非常有利于能耗,同时可以最小化处理器频率和最大化利用率。 从 Windows Server 2016 开始,对快速响应的要求急剧增加。 尽管 Microsoft 建议用户在需要快速响应时切换到“高性能”电源计划,但某些用户不希望在轻度至中等负载级别期间失去功率优势。 因此,Windows Server PPM 优化还包括优化的响应时间敏感型工作负载。
GeekBench 3
GeekBench 3 是一种跨平台处理器基准测试,可区分单核和多核性能的评分。 它模拟一组工作负载,包括整数工作负载(加密、压缩、图像处理等)、浮点工作负载(建模、分形、图像锐化、图像模糊等)和内存工作负载(流式处理)。
响应时间是其评分计算中的一个主要度量。 在我们测试的系统中,与“高性能”电源计划相比,Windows Server 2008 默认的“平衡”电源计划在单核测试中有大约 18% 的退化,在多核测试中有大约 40% 的退化。 Windows Server 2016 消除了这些退化情况。
DiskSpd
Diskspd 是 Microsoft 开发的用于存储基准测试的命令行工具。 它广泛用于针对存储系统生成各种请求,以进行存储性能分析。
我们已设置一个 [故障转移群集],并使用 Diskspd 生成 IO 大小不同的、对本地和远程存储系统的随机和顺序读写 IO。 我们的测试表明,在不同的电源计划下,IO 响应时间对处理器频率很敏感。 在某些工作负载下,默认的 Windows Server 2008“平衡”电源计划的响应时间可能是“高性能”电源计划的两倍。 Windows Server 2016“平衡”电源计划消除了大部分性能退化。
重要
从运行 Windows Server 2016 的 Intel [Broadwell] 处理器开始,大部分处理器电源管理决策都是在处理器而不是操作系统级别做出的,以更快地适应工作负载的变化。 操作系统使用的传统 PPM 参数对实际频率决策的影响微乎其微,只不过它们能够告知处理器它是应该偏向于功耗还是性能,或者是否限制最小和最大频率。 因此,此处提到的 PPM 优化结果仅在 pre-Broadwell 系统上观察到。
硬件配置
对于每个版本的 Windows,在电源计划分析和优化过程中使用了最新的生产服务器。 在某些情况下,测试是在发布计划与下一个 Windows 版本相匹配的预生产系统上执行的。
鉴于大多数服务器都配备了 1 到 4 个处理器插槽,并且由于纵向扩展服务器不太可能将能效作为主要关注点,因此电源计划优化测试主要在 2 插槽和 4 插槽系统上运行。 为每个测试选择 RAM、磁盘和网络资源的数量,使每个系统能够一直运行到耗尽其整个容量,同时考虑到现实服务器环境中通常存在的成本限制,例如使配置保持合理。
重要
即使系统可以在其峰值负载下运行,我们通常也会针对较低的负载级别进行优化,因为始终以峰值负载级别运行的服务器最好使用“高性能”电源计划,除非能效的优先级较高。
指标
所有测试的基准都使用吞吐量作为性能指标。 响应时间被视为这些工作负载的 SLA 要求(SAP 除外,它是主要指标)。 例如,如果平均或最大响应时间小于特定值,则基准运行被视为“有效”。
因此,PPM 优化分析也使用吞吐量作为其性能指标。 在最高负载级别(100% CPU 利用率)下,我们的目标是吞吐量不应因电源管理优化而下降几个百分点以上。 但首要考虑的是在中低负载级别下最大程度地提高电源效率(定义如下)。
以较低的频率运行 CPU 核心可降低能耗。 但是,较低的频率通常会降低吞吐量并增加响应时间。 “平衡”电源计划在响应速度和电源效率之间有意做出了取舍。 SAP 工作负载测试以及其他工作负载的响应时间 SLA 确保这些特定工作负载的响应时间增加不会超过特定阈值(例如 5%)。
注意
如果工作负载对响应时间非常敏感,则系统应切换到“高性能”电源计划或更改“平衡”电源计划,以便在运行时激进地提高频率。
Windows Server 平衡电源计划默认参数
从运行 Windows Server 2016 的 Intel Broadwell 处理器开始,Windows Server 电源管理使用 Intel 的硬件控制 P 状态 (HWP) 作为 Intel 系统上的默认设置。 HWP 是用于协作式硬件和软件性能控制的新功能。 启用 HWP 后,CPU 将监视活动和可伸缩性,并根据硬件时间刻度选择频率。 操作系统不再需要定期监视活动和选择频率。 切换到 HWP 可以获得多种好处,例如快速响应、更好地了解 TDP 下的处理器和其他组件的硬件电源效率。
对于 HWP 系统,Windows 仍可以选择设置最小和最大处理器状态以提供约束。 它还可以使用“能源性能首选项”(EPP) 参数来设置功耗和性能之间的平衡。 较低的值有利于性能,较高的值有利于功耗。 默认值为 50,它可以在功耗和性能之间实现平衡。
参数 | Windows Server 2012R2 及更低版本 | Windows Server 2016 及更高版本 |
---|---|---|
已启用 HWP | 不可用 | Intel Broadwell+ |
能源性能首选项 | 不可用 | 50 |
对于 Intel pre-Broadwell 系统或任何不支持 HWP 的系统(例如 AMD 服务器),Windows 仍处于完全受控状态,并根据 PPM 参数确定处理器频率。 Windows Server 2012R2 中的默认 PPM 参数过于偏向于功耗,这可能会显著影响工作负载性能,尤其是对于突发性工作负载。 Windows Server 2016 RS2 中更改了四个 PPM 参数,使频率在中等负载级别附近提高得更快。
参数 | Windows Server 2016 (RS1) 及更低版本 | Windows Server 2016 (RS2) 及更高版本 |
---|---|---|
处理器性能提升阈值 | 90 | 60 |
处理器性能降低阈值 | 80 | 40 |
处理器性能提升时间 | 3 | 1 |
处理器性能提升策略 | Single | 理想 |
基于 CPU 利用率的电源管理算法可能会加剧 IO 或网络密集型工作负载的延迟。 逻辑处理器在等待 IO 完成或网络数据包时可能处于空闲状态,导致整体 CPU 利用率较低。 为了解决此问题,Windows Server 2019 会自动检测 IO 响应周期并将频率下限提升到更高级别。 无论系统是否使用 HWP,都可以通过以下参数优化该行为。
参数 | 低于 Windows Server 2019 的版本 | Windows Server 2019 及更高版本 |
---|---|---|
处理器响应能力替代启用阈值 | 不可用 | 10 |
处理器响应能力替代禁用阈值 | 不可用 | 5 |
处理器响应能力替代启用时间 | 不可用 | 1 |
处理器响应能力替代禁用时间 | 不可用 | 3 |
处理器响应能力替代能源性能首选项上限 | 不可用 | 100 |
处理器响应能力替代性能下限 | 不可用 | 100 |
自定义优化建议
如果主要工作负载特征与用于默认“平衡”电源计划 PPM 优化的五种工作负载有很大不同,你可以试着更改一个或多个 PPM 参数,以找到最适合你环境的参数。
由于参数的数量和复杂性,这可能是一项颇具挑战性的任务,但如果你正在为特定环境寻找能耗和工作负载效率之间的最佳权衡,则值得付出这些努力。
可以在处理器电源管理优化中找到整组可优化 PPM 参数。 可以从下面这些最简单的电源参数开始:
对于已启用 HWP 的系统:
- 能源性能首选项 - 较大值更偏向于能耗而不是性能
对于非 HWP 系统:
处理器性能提升阈值和处理器性能提升时间 – 较大值会减慢对增加的活动的性能响应
处理器性能下降阈值 - 较大值会加快对空闲时间的电源响应
处理器性能下降时间 – 值越大,空闲期的性能下降速度越缓慢
处理器性能提升策略 – “单个”策略会减缓对增加和持续活动的性能响应;“飞跃”策略对增加的活动做出快速反应
处理器性能降低策略 – “单个”策略会随着空闲期变长而更缓慢地降低性能;进入空闲期时,“飞跃”策略很快会掉电
重要
在开始进行任何试验之前,应该首先了解工作负载,这有助于做出正确的 PPM 参数选择并减少优化工作量。
了解大致的性能和能耗要求
如果工作负载是“实时”的(例如,容易出现小故障或受到其他明显的最终用户影响)或具有非常严格的响应要求(例如证券经纪业务),并且能耗不是环境的主要标准,则你也许只需切换到“高性能”电源计划。 否则,应该了解工作负载的响应时间要求,然后优化 PPM 参数以获得最佳电源效率,同时仍可满足这些要求。
了解基础工作负载特征
应该了解工作负载并设计用于优化的试验参数集。 例如,如果 CPU 核心的频率需要快速提升(也许你的突发工作负载会出现很长的空闲期,但在出现新事务时需要极快做出响应),则处理器性能提升策略可能需要设置为“飞跃”(顾名思义,将 CPU 核心频率蹿升到最大值,而不是在一段时间内逐步提高)。
如果工作负载的突发性很高,则可以减少 PPM 检查间隔,使 CPU 频率在突发事件到来后更快地开始上升。 如果工作负载没有高线程并发性,则可以启用核心暂停,以强制工作负载在较少数量的核心上执行,这也可能提高处理器缓存命中率。
如果你只想在中等利用率级别(即非轻量工作负载级别)下增加 CPU 频率,则可以调整处理器性能提升/降低阈值,使其在观察到特定活动级别之前不做出反应。
了解周期性行为
在白天和夜间或周末可能需要满足不同的性能要求,或者可能有不同的工作负载在不同的时间运行。 在这种情况下,一组 PPM 参数对于所有时间段可能不是最佳的。 由于可以设计多个自定义电源计划,因此甚至可以针对不同的时间段进行优化,并通过脚本或其他动态系统配置在电源计划之间切换。
同样,这会增大优化过程的复杂性,因此问题在于,从这种类型的优化中可以获得多大的价值,当出现重大硬件升级或工作负载变化时,可能需要重复这种优化。
这就是 Windows 首先提供“平衡”电源计划的原因,因为在许多情况下,可能不值得为特定服务器上的特定工作负载进行手动优化。