关于Intel/AMD/笔记本OEM是如何通过Provisioning来覆盖Windows默认电源设置的调查

KxngDemon-avatar

KxngDemon

2024-06-15T11:34:51+00:00

接上贴[url=https://bbs.nga.cn/read.php?tid=40437498]关于AMD CPU和Intel CPU对Windows电源设置默认值的更改的初步调查[/url]

在每次全新安装Windows时,Windows会安装C:\Windows\Provisioning\Packages目录下的所有.ppkg文件。
这其中就包括了:
Power.Settings.Processor.Amd.ppkg
和Power.Settings.Processor.Intel.ppkg
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-4rc0K1oT3cSz9-yc.png[/img]

Power.Settings.Processor.Amd.ppkg是AMD提供给微软的,其中包括了所有已发售的AMD处理器的电源设置应用规则。
Power.Settings.Processor.Intel.ppkg是Intel提供给微软的,其中包括了所有已发售的Intel处理器的电源设置应用规则。
这两个ppkg文件会随着新一代CPU的发售和上市而同步更新版本和规则内容。

安装这些ppkg时,系统会检测CPU厂商、CPU类型、PC平台类型(桌面端或笔记本端或平板端,是否AOAC平台),并根据这些属性,应用对应的provisioning设置,即覆盖Windows电源设置的默认值。
比如我的13代桌面平台,就同时符合"IntelSystem"、"ProcessorTypeNonMobileRaptorLake"、"ProcessorTypeNonMobileRaptorLakeS"这3个属性,会应用这些属性对应的provisioning设置。
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-67dlK2qT3cSp7-107.png[/img]

ppkg安装完成后,注册表位置"计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\"的各个电源项目设置里会出现ProvAcSettingIndex和ProvDcSettingIndex。
ProvAcSettingIndex为AC电源即插电状态下的覆盖电源设置默认值,ProvDcSettingIndex为DC电源即电池状态下的覆盖电源设置默认值。
它们的优先级更高,在决定电源设置默认值时,会分别覆盖Windows默认的"ACSettingIndex"和"DCSettingIndex"。

以处理器性能核心放置最小核心数量/Processor performance core parking min cores/CPMinCores为例,
注册表位置"计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\0cc5b647-c1df-4637-891a-dec35c318583"
“平衡”电源计划(381b4222-f694-41f0-9685-ff5bb260df2e)的AC Windows默认值"ACSettingIndex"为100%,
AC 覆盖默认值"ProvAcSettingIndex"为4%。
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-5md4KtT3cS1pc-8s.png[/img]

当我们使用同一个系统硬盘,从IU平台切换到AU平台,或者从AU平台切换到IU平台,或者从桌面平台切换到笔记本平台,会希望清除给旧CPU/旧平台用的覆盖默认值,然后重新生成给新CPU/新平台用的覆盖默认值。
除了全新重装系统外,我们先卸载对应ppkg,再重新安装ppkg也可以达到这一目标。

以从Intel平台切换到AMD平台为例:
1. 卸载Intel的ppkg,以清除给旧CPU/旧平台用的覆盖默认值。
使用带管理员权限的命令行终端,输入命令"Uninstall-ProvisioningPackage -PackagePath C:\Windows\Provisioning\Packages\Power.Settings.Processor.Intel.ppkg"
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-j5ipKgT3cS13v-89.png[/img]
这种方法会删除对应.ppkg文件,建议先备份文件,万一以后还用得到呢
当然删除了也没关系,以后在网上问别人拿就是了

另一种方法:
使用带管理员权限的命令行终端,输入命令"(Get-ChildItem -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Power\PowerSettings" -Recurse).Name | ForEach-Object {Remove-ItemProperty -path Registry::$_ -Name "Prov*Index"}"
这种方法不会删除对应.ppkg文件,仅删除注册表值。

2. 重新安装AMD的ppkg,以重新生成给新CPU/新平台用的覆盖默认值。
像步骤1那样用"Install-ProvisioningPackage"命令来直接安装ppkg会报错并安装失败,需要利用Provisioning Tool才能安装成功。
先重启电脑,使用带管理员权限的命令行终端,输入命令"C:\Windows\system32\ProvTool.exe /turn 5 /source LogonIdleTask",这会把"C:\Windows\Provisioning\Packages"目录中的所有ppkg全部安装一遍。
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-94xlKdT3cSxd-7a.png[/img]

其实啥也不干,重启后系统空闲时Provisioning Tool也会根据计划任务"\Microsoft\Windows\Management\Provisioning\Logon"自动执行上述操作,上述操作只是等效于手动触发该计划任务,不用等而已。
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-kb0sZfT3cS1nj-15d.png[/img]

在事件查看器的"Microsoft-Windows-Provisioning-Diagnostics-Provider/Admin"日志里可以看到安装操作是否成功。如果第一次安装不成功,Provisioning Tool会自动生成一个计划任务,过几分钟再执行第二次安装。(我测试第一次安装总是部分不成功,第二次安装才全部成功)
[img]https://img.nga.178.com/attachments/mon_202406/15/9aQ19i-gto5ZeT3cS2dv-r6.png[/img]

最后感谢B站大佬[@二川二水的资料室],他的专栏很有帮助,并且还解答了我的具体疑问
t1m-avatar

t1m

我这边换平台之后有个疑难杂症,原本使用B550+5700X+Win10 LTSC2021的一台机子,硬件换成了Z790+14600K,但系统没有重做,通过手调异类调度的方式让它正常工作了
很长一段时间都没发现问题,后来突然发现当我设置“最小处理器状态”99%,也就是待机使用base clock、而不降低到1.1/0.8G的设置时,有且仅有pcore0是2.5G,而pcore1-5都是3.3G,3.3G才是对的

虽然其实没啥直接影响但还是看着闹心,之前一直不知道怎么解决,心里也一直怀疑这样换平台不换系统会不会有什么我还没发现的问题,用楼主的方法卸载AMD的ppkg重新安装一次Intel的就好了,感谢


哎,感觉PC区至少一半技术贴都是楼主发的……
Jubi-avatar

Jubi

嗯佬玩得好细致呀,前排看看其他几位“大神”何时会来锐评[s:ac:goodjob]
jaquavis-avatar

jaquavis

大佬,Power.Settings.Processor.Amd.ppkg和Power.Settings.Processor.Intel.ppkg是Windows自己带的还是OEM厂商自己放进去的?我安装原版Windows 10 19045没发现这两个文件。
而且我发现,我7840H和8840U的笔记本,全新安装原厂Windows 10 19045和AMD芯片组驱动后还是没有存在Power.Settings.Processor.Amd.ppkg,同时用PowerSettingsExplorer.exe看电源计划,里面都是默认,没有任何AMD优化内容,比如处理器自主性能模式是关闭,按理说应该是打开的。
这种情况应该怎么办?应该把OEM系统里的.ppkg拷出来手动按上面的教程安装?
בברה-avatar

בברה

Reply to [pid=765989137,40549025,1]Reply[/pid] Post by [uid=42300344]wangxianru123[/uid] (2024-06-19 16:39)

微软官方windows11全新安装自带
Windows10我很久没用过了,不太清楚怎么样,可能win10确实太老了没有提供最新cpu支持

你想凑合用的话就参考我之前的帖子的参考设置手动一个一个设置调整吧
或者尝试能不能用本帖提到的方法手动安装ppkg,别忘了要把ppkg文件放到那个目录下面
Monscu-avatar

Monscu

猫头佬,原神最近pc解锁帧率插件进副本后就失效,比如登录后大世界120,进副本/尘歌壶变回60且退回大世界依然60,有没有解决方案[s:ac:晕]
בברה-avatar

בברה

Reply to [pid=766065338,40549025,1]Reply[/pid] Post by [uid=42836043]天剑の龙玉[/uid] (2024-06-20 00:19)
去github下新版本试试,叫unlockfps_nc.exe的
SLOPPY-avatar

SLOPPY

Reply to [pid=765989137,40549025,1]Reply[/pid] Post by [uid=42300344]wangxianru123[/uid] (2024-06-19 16:39)

Win10上好像叫AMD.Power.Processor
jaquavis-avatar

jaquavis

Reply to [pid=766142346,40549025,1]Reply[/pid] Post by [uid=12792849]KPX[/uid] (2024-06-20 12:37)AMD.Power.Processor确实是有,但是很奇怪,7840H的笔记本所有的电源选项全部是Win10默认,AMD的芯片组驱动没有对他任何修改。我同样试了下,7800X3D+Win10,电源计划就被AMD优化了,估计还是笔记本用的那种新式电源计划AMD驱动不会去修改,然后Win10又太老,不包含7840H和8840U了
Monscu-avatar

Monscu

[quote][pid=766140987,40549025,1]Reply[/pid] Post by [uid=38922157]嗯嗯嗯嗯什么[/uid] (2024-06-20 12:30):

去github下新版本试试,叫unlockfps_nc.exe的[/quote]已经是最新版本了,5月的,3.0.4,依然不行
בברה-avatar

בברה

Reply to [pid=766146878,40549025,1]Reply[/pid] Post by [uid=42836043]天剑の龙玉[/uid] (2024-06-20 13:04)

那就不清楚了,我没遇到过这个现象
jaquavis-avatar

jaquavis

大佬,我想问下,移动端平台所谓的现代电源计划,就是只有默认,具体靠任务栏滑块的那种,且只有S0待机,似乎不会使用.ppkg的任何参数?我是重装Win10 19045后,安装AMD最新驱动(里面含AMD PPM Provisioning File Driver),结果用PowerSettingsExplorer看所有的参数全部都是默认。
大佬你有什么头绪吗?由于我笔记本都是到手就格机,还真不知道OEM系统是怎么把.ppkg的参数弄到现代电源计划里的。

同样7800X3D,Win10 19045,台式机都是传统电源计划(S3待机),安装完AMD PPM Provisioning File Driver后PowerSettingsExplorer里都是AMD优化的参数了
yASu-avatar

yASu

我看了下我那从bug10一路升级上来的bug11,居然没有安装任何ppkg。Get-ProvisioningPackage -AllInstalledPackages没有返回值
בברה-avatar

בברה

Reply to [pid=773300991,40549025,1]Reply[/pid] Post by [uid=42300344]wangxianru123[/uid] (2024-07-28 23:09)
我很久没用过windows的笔记本了,手上现在也只有台式机,所以不太清楚
以下纯靠我依据手上台式机所作的猜测,难免可能有错误:
首先你需要把设置里的滑条调成《平衡》之外的电源模式,比如说我这里改成《最佳性能》
[img]https://img.nga.178.com/attachments/mon_202407/28/9aQ2u-3bn0KaT3cS17p-i6.png[/img]

然后PowerSettingsExplorer.exe才会在power scheme(电源计划)的右边出现power overlay(电源模式,对应那个设置里的滑条)
[img]https://img.nga.178.com/attachments/mon_202407/28/9aQ2u-hp31KmT3cSza-9y.png[/img]
这时候你就可以看看不同power overlay的具体设置了

我不清楚笔记本OEM的ppkg是怎么样的,不过我看windows11自带的给amd用的ppkg,他里面确实有给不同的power overlay给不同的provisioning设置
比如应用于ProcessorTypeAmdMobileOrSlateDRG(移动端或平板端的Dragon Range,如7945HX),
他明确是有给BetterBatteryLifeOverlay(应该是对应《最佳能效》电源模式)和MaxPerformanceOverlay(应该是对应《最佳性能》电源模式)做provisioning设置的
(注:这个ppkg由微软提供,win11自带,win10不存在)
[img]https://img.nga.178.com/attachments/mon_202407/28/9aQ2u-ajxvK27T3cSk1-1gd.png[/img]

[img]https://img.nga.178.com/attachments/mon_202407/28/9aQ2u-bf84K12T3cSk1-q7.png[/img]

我没有印象驱动中的AMD PPM Provisioning File Driver是否有对电源设置做provisioning,我印象里win11在安装驱动前后是没有任何电源设置存在更改的,可能是因为win11微软自带的ppkg已经应用过了
win10我没试过

我推荐你去问问B站大佬 [@二川二水的资料室] ,他对移动端的电源设置应该是研究的比较深
בברה-avatar

בברה

Reply to [pid=773303195,40549025,1]Reply[/pid] Post by [uid=63145427]不悲剧悲剧[/uid] (2024-07-28 23:25)
这个命令应该是对电源provisioning设置类的ppkg不生效的,我这里用这个命令也没有任何返回

你直接去看C:\Windows\Provisioning\Packages下面有没有Power.Settings.Processor.Amd.ppkg和Power.Settings.Processor.Intel.ppkg这两个
如果有的话那就是win11的,如果没有的话那就是win10的
如果有的话,windows应该已经自动帮你安装完成设置了
i only date 6 foot women🐗-avatar

i only date 6 foot women🐗

AMD用户,之前系统盘信息是Intel4代处理器,上半年换AMD处理器时直升的win11。

完美符合楼主预设的条件。

当我执行命令清除旧的PPKG文件,重启电脑后,我进到“C:\Windows\Provisioning\Packages目录”查看

有趣的事来了,显示只有Power.Settings.Processor.Amd.ppkg,
那么Power.Settings.Processor.Intel.ppkg应该是被我刚才删掉了。

再看看这个.Amd.ppkg文件时间,24.08.29,Emmm,刚好是网上流传Windows给AMD打鸡血补丁的那天。
Donut eater-avatar

Donut eater

原来如此,插个眼,万一以后u商给微软提供了更好的配置文件,就可以自己换而不用下最新系统重装了
Yasu-avatar

Yasu

礼问一下,我从12490F桌面端切换到9905x桌面端,用你说的方式重装了一下ppkg,但是没找到电源计划里有多的覆盖值呀,但是看事件管理器里是安装成功了
[img]https://img.nga.178.com/attachments/mon_202409/09/9aQ2u-ex5oK2eT3cSsg-aw.jpg.medium.jpg[/img]

并且我使用Get-ChildItem -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Power\PowerSettings" -Recurse |
ForEach-Object { $_.PSChildName } |
Where-Object { $_ -like "Prov*Index" } 也没有找到有默认值覆盖的项,是我哪里没做对吗
בברה-avatar

בברה

Reply to [pid=782032888,40549025,1]Reply[/pid] Post by [uid=63447364]星夜的蓝天[/uid] (2024-09-09 19:45)
你这个powershell命令似乎哪里不对,我这里用了也没有返回任何东西
先问问你用的什么系统?win10?win11 23h2?win11 24h2?
Yasu-avatar

Yasu

Reply to [pid=782033487,40549025,1]Reply[/pid] Post by [uid=38922157]嗯嗯嗯嗯什么[/uid] (2024-09-09 19:49)

win11 23h2,我刚刚尝试设置中的重置(重装)系统并保留应用和数据,但似乎不管用