技术摘要| Windows 10/11 性能调度策略和 ThinkBook 14+ 2022 优化

2022-07-30 coding windows powershell

项目位于Github

这是我的 Thinkbook 14+ 2022 笔记本的 Windows 10/11 系统性能/功耗调教脚本,用于在离电时进行保守的性能释放和较长续航,同时在带电时获得最佳的性能释放。

Intel 12 代处理器普遍续航拉跨,我早期对机器进行了大量测试,发现早期 35 版本的 Bios 即便是在节电模式/安静模式下依然只有约 3-4h 的续航。我的实验结论和极客湾BV18B4y1b7gj中的结论完全一致:

  1. 过于激进的 CPU 频率 Boost 功耗,随便干点什么事情就把处理器频率拉到顶,导致了 CPU 的平均功耗降不下去,这是限制处理器频率以及 PL1/PL2 无法解决的。。
  2. 过于离谱的 Uncore 功耗,Intel也许真的是为了降低成本,使用了单路电路为所有核心供电,导致了单核跑满时,全核心电压都上涨了。同时,外围设备/PCIE/USB 的用电也不容小觑。根据我的测试结果,我的机器的系统功耗比 IA/GPU 功耗要多 5-10W。

我做了什么?

目前,针对第二点是没有解决办法的,我主要是对第一点在 Windows 操作系统的调度策略上进行了一些优化。主要是在已有的平衡电源计划 “Balanced” 的基础上,通过新建一个新的电源计划的方式来进行的。

首先需要解决的问题是,Windows 默认很多调度属性、变量默认都是不展示的,只有通过修改注册表或者powercfg命令的方式,才能将这些变量暴露给用户。这些值在注册表中的位置是\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings。可以通过将内部选项的 Attributes 的值修改为 02 的方式暴露给用户。我暴露的变量包括:

  1. 处理器电源管理(54533251-82be-4824-96c1-47b60b740d00)
    • 处理器性能核心放置最小核心数量(0cc5b647-c1df-4637-891a-dec35c318583)。这个值用于最少有多少处理器逻辑节点可以休眠,或者说有多少处理器即使在限制状态下也不可以休眠。在 12 代异构处理器下,这个值控制 E 核。在 11 代以前的 CPU 则是全部核心生效。
    • 0cc5b647-c1df-4637-891a-dec35c318584。和上面的变量功能一致,但是在 12 代异构处理器架构下,对 P 核的进行处理。
    • 处理器能源性能首选项策略 (36687f9e-e3a5-4dbf-b1dc-15eb381c6863)。这个值非常重要,真实这个变量控制了处理器频率设置的激进程度。这个值越大,睿频越保守,功耗越低。但是,这个值并不代表会限制处理器睿频到高频率,只是限制了发生这种状态的条件和纪律。同样,这个属性针对 E 核心。
    • 36687f9e-e3a5-4dbf-b1dc-15eb381c6864。 同上,针对 P 核。
    • 处理器最大状态(bc5038f7-23e0-4960-96da-33abaf5935ec)。这里限制了处理器相对基准频率的最大频率限制。100% 代表全部性能;99%则近似关闭了睿频(但是,其实我们有更好的方式关闭睿频)。针对 E 核心。有一个类似的属性“最大处理器频率”是一个意思,但是单位是MHz,而不是百分比。
    • bc5038f7-23e0-4960-96da-33abaf5935ed。同上,12 代中针对 P 核。
    • 处理器最小状态(893dee8e-2bef-41e0-89c6-b55d0929964c)处理器闲置时候的最小频率百分比。
    • bc5038f7-23e0-4960-96da-33abaf5935ed。同上,12 代中针对 P 核。
    • 处理器性能提升模式(be337238-0d82-4146-a960-4f3749d470c7)。这个值也非常重要,控制了睿频的目标频率,且对所有核心生效。根据实验,我发现其取值如下:

已禁用 000。关闭睿频。 已启用 001。启动睿频。 高性能 002。允许睿频到最高频率,对于我的 i7-12700H 来说是 4.7GHz。 高能效 003。允许睿频到一个相对节能的睿频频率,我的电脑是大约 3.5 GHz 左右。 高性能高效率 004。 大致是更加激进和更高概率的睿频到 3.5 GHz。 积极且有保障 005。没有测试。 高效、积极且有保障 006。 没有测试。

其他一些默认已经显示,且比较常用的参数包括:

  1. 硬盘休眠时间(0012ee47-9041-4b5d-9b77-535fba8b1442/6738e2c4-e8a5-4a42-b16a-e040e769756e)
  2. Wi-Fi 性能模式(19cbb8fa-5279-450e-9fac-8a3d5fedd0c1/12bbebe6-58d6-4636-95bb-3217ef867c1a)
  3. 睡眠/休眠(238c9fa8-0aad-41ed-83f4-97be242c8f20)。包括了睡眠时间(29f6c1db-86da-48c5-9fdb-f2b67b1f44da)、休眠时间(9d7815a6-7ee4-497e-8888-515a05f02364)。
  4. USB 模式(2a737441-1930-4402-8d77-b2bebba308a3/48e6b7a6-50f5-4782-a5d4-53bb8f07e226)
  5. Intel 核显模式(44f3beca-a7c0-460e-9df2-bb8b99e0cba6/3619c3f2-afb2-4afc-b0e9-e7fef372de36)。可选值 000 长续航,001 平衡,002 高性能。
  6. PCIE 节能模式(501a4d13-42af-4429-9fd1-a8218c268e20/ee12f906-d277-404b-b6da-e5fa1a576df5)
  7. 显示器(7516b95f-f776-4464-8c53-06167f40cc99)。其中包括了关闭显示器时间(3c0bc021-c8a8-4e07-a973-6b14cbcb2b7e)、亮度(aded5e82-b909-4619-9949-f5d71dac0bcb)、变暗比例(f1fbfde2-a960-4165-9f88-50667911ce96)、自适应亮度(fbd9aa66-9553-4097-ba44-ed6e9d65eab8)
  8. 播放视频优化(9596fb26-9850-41fd-ac3e-f7c3c00afd4b)。包括了性能/节能取向(10778347-1370-4ee0-8bbd-33bdacaade49),视频优化质量( 34c7b99f-9a6d-4b3c-8dc7-b6693b78cef4)。
  9. 节能模式(de830923-a562-41af-a086-e3a2c6bad2da),就是Windows 右下角按一下开启的省电模式。包括了亮度降低比例(13d09884-f74e-474a-a852-b6bde8ad03a8)、是否自动开启节能模式(5c5bb349-ad29-4ee2-9d0b-2b25270f7a81)、自动开启节能模式的电量比例(e69653ca-cf7f-4f05-aa73-cb833fa90ad4)。
  10. 其他选项,比如电池什么时候自动关机、什么时候自动警告等。

Windows 的电源管理策略允许在接入电源(AC)和使用电池(DC)两种状态下分别设置所有参数,以实现离电长续航,带电高性能的目标。因此,我们可以通过设置这些值来对机器的性能和能效进行调节。比如,Windows 的卓越性能模式就是将默认最低处理器频率拉到 100% 来保证处理器满血运行。

如何使用

我们也对这些变量进行了一些精确调控,具体的策略写在了 elliot-long-lifetime.pow 文件里面,该文件定义了了一个经过优化的电源策略,以实现离电长续航,带电高性能的目标。

载入 pow 文件的方式是

powercfg -import elliot-long-lifetime.pow -guid 3183f4d6-3435-48f6-aa41-dbe542ed6658

此后,应该可以在控制面板的“电源计划”里面看到一个名为“长续航模式”的电源计划。同时,也可以查询已有的电源计划:

powercfg -l

或者查询上述变量的名称、GUID和属性值:

powercfg -q

我们也可以进行进一步修改,比如:

powercfg /setdcvalueindex 3183f4d6-3435-48f6-aa41-dbe542ed6658 SUB_PROCESSOR be337238-0d82-4146-a960-4f3749d470c7 003 # 修改 DC(电源)模式下“处理器性能提升模式”为“高效率”
powercfg /setdcvalueindex 3183f4d6-3435-48f6-aa41-dbe542ed6658 SUB_PROCESSOR be337238-0d82-4146-a960-4f3749d470c7 000 # 禁用 DC 模式下的睿频。
powercfg /setacvalueindex 3183f4d6-3435-48f6-aa41-dbe542ed6658 SUB_PROCESSOR be337238-0d82-4146-a960-4f3749d470c7 000 # 修改 AC(带电)模式下“处理器性能提升模式”为“高效率”

并可以导出:

POWERCFG /EXPORT c:\scheme.pow 381b4222-f694-41f0-9685-ff5bb260df2e # 到处平衡模式的策略到 scheme.pow 文件

一键切换脚本

此外,我们有一个一键切换脚本,可以实现在“长续航”和系统默认的“平衡”电源计划下进行切换(当然,Windows默认自带的其他模式也可以很简单的实现)。具体的功能包括:

  1. 自动在 长续航模式 和 平衡模式下进行切换。
  2. 在“长续航”模式下,默认直接打开系统自带的“节电模式”
  3. 针对 Thinkbook 14+ 在“长续航”下切换显示器为 60Hz,在“平衡”模式且充电时,切换回 90Hz。

注意,脚本依赖“长续航模式”的GUID为 3183f4d6-3435-48f6-aa41-dbe542ed6658。因此在导入时需要注意指定 GUID,或者修改脚本的 $user_power_plan_uuid 变量。

实际结果

根据调整后,我在 v38 版本的 Bios 后,自我认知获得了一定的续航提升。连续制作 PPT 三个小时的轻度负载下,电池下降约为 50% 左右,没有感知到明显的卡顿和异常。

本人保留对侵权者及其全家发动因果律武器的权利

版权提醒

如无特殊申明,本站所有文章均是本人原创。转载请务必附上原文链接:https://www.elliot98.top/post/tech/windows-powerplan/

如有其它需要,请邮件联系!版权所有,违者必究!