Skip to content

Instantly share code, notes, and snippets.

@al0rid4l
Created December 22, 2023 06:39
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save al0rid4l/1e95c106f77766b2fc3608cd235a9f40 to your computer and use it in GitHub Desktop.
Save al0rid4l/1e95c106f77766b2fc3608cd235a9f40 to your computer and use it in GitHub Desktop.
大小核电源管理
# P核即大核,也叫高性能处理器,E核即小核,也叫高效处理器,高能效处理器,超线程,即逻辑核,是比小核更轻量的存在
# 大核小核超线程都能休眠,休眠省电但是唤醒的时间开销更大,超线程的单核性能也略有损失,大约5%-15%损失
#
# 不要在平衡电源方案下设置, 在省电或者高性能下设置, 当电源计划是平衡时. Windows还有一个叫overlay的层级允许微软和OEM的默认调度覆盖部分自定义设置
# 因此从省电或高性能下复制一个电源方案, 然后重命名, 也就是新建一个电源方案, 在里面修改, 而不要在平衡方案中修改
#
# 下面命令用来设置显示/隐藏电源选项
# powercfg -attributes <一级展开分组的GUID或别名> <二级展开分组的GUID> -ATTRIB_HIDE
# 如处理器电源管理/Processor power management是一级展开分组, 别名是SUB_PROCESSOR,小核放置最小核心数量的GUID为0cc5b647-c1df-4637-891a-dec35c318583
# +ATTRIB_HIDE表示隐藏该选项,-ATTRIB_HIDE表示显示/去掉隐藏的选项
#
# 除了powercfg命令可以修改电源选项的显示和隐藏,注册表也可以
# HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings
# 这个下面包含了所有电源选项,第一级GUID是一级展开分组的GUID,下面有二级展开分组的GUID,
# 修改二级展开分组的Attributes的值即可控制电源选项的显示和隐藏
# ±attrib_hide对应的是注册表里attributes 0和1的区别,但是现在要attribute=2才能显示设置,
# 所以如果命令设置了没显示选项的话, 建议注册表修改
#
# powercfg /Qh 用来查看隐藏的电源选项及别名和GUID
#
# powercfg /L 列出现有电源方案及GUID
#
# powercfg /duplicatescheme 电源方案GUID 根据现有电源方案复制一份新方案并输出新GUID,https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/powercfg-command-line-options#option_duplicatescheme
# 这个也可以在控制面板的电源选项-创建电源计划中新建电源方案
#
# powercfg /changename 电源方案GUID "新方案名" 将电源方案改名为新方案名, https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/powercfg-command-line-options#changename
#
# 生效的异类策略, Heterogeneous policy in effect,
# 决定了大核小核超线程的休眠顺序, 即核心休眠策略
# 0 - 休眠顺序为超线程 - 小核 - 大核, 即大核最后休眠, 激进唤醒更多核心, 倾向于开超线程, 也即高性能
# 1 - 由放置最小核心数量决定小核休眠, 由1类放置最小核心数量决定大核和超线程休眠
# 2 - 大核休眠
# 3 - 小核休眠
# 4 - 基于利用率随机休眠, 默认, 优先使用单个大核, 尽量单核运行完任务不唤醒更多核心, 不倾向于开超线程
# 以上是LSTC版本的, 20H2版本的1和4顺序调换
powercfg -attributes SUB_PROCESSOR 7f2f5cfa-f10c-4823-b5e1-e93ae85f46b5 -ATTRIB_HIDE
# 异类线程调度策略, Heterogeneous thread scheduling policy, 即长线程调度策略,
# https://learn.microsoft.com/zh-cn/windows-hardware/customize/power-settings/configuration-for-hetero-power-scheduling-schedulingpolicy
# 长线程和短线程的区分通过ShortThreadRuntimeThreshold区分, 是一个时间范围, 默认100微秒, 执行超过此时间的被判定为长线程, 转到长线程调度策略进行调度
# 关于ShortThreadRuntimeThreshold参考 https://learn.microsoft.com/zh-cn/windows-hardware/customize/power-settings/configuration-for-hetero-power-scheduling-shortthreadruntimethreshold
# 该值只能在win11下设置
# 0 - 所有处理器, 平均分配或者说按顺序分配, 先大核后小核, 但前台优先大核后台优先小核
# 1 - 高性能处理器, 优先单个大核,但只用大核, 单线程友好, 无论前后台
# 2 - 首选高性能处理器, 均匀分担到多个大核, 大核忙用小核, 哪怕单线程也多核, 无论前后台
# 3 - 高效处理器, 均匀分担到多个小核, 但只用小核, 哪怕单线程也多核, 无论前后台
# 4 - 首选高效处理器, 均匀分担到多个小核, 小核忙用大核, 无论前后台
# 5 - 所有处理器, 均匀分担到所有核, 无论大小, 无论前后台
powercfg -attributes SUB_PROCESSOR 93b8b6dc-0698-4d1c-9ee4-0644e900c85d -ATTRIB_HIDE
# 异类短运行线程调度策略, Heterogeneous short running thread scheduling policy, 即短线程调度策略
# 所有任务一开始都是短线程, 只有执行时间超过ShortThreadRuntimeThreshold的才判定为长线程改为长线程调度策略进行调度, 所以
# 此配置决定了任务一开始的调度策略
powercfg -attributes SUB_PROCESSOR bae08b81-2d5e-4688-ad6a-13243356654b -ATTRIB_HIDE
# SMT线程启动策略, win11才有
powercfg -attributes SUB_PROCESSOR b28a6829-c5f7-444e-8f61-10e24e85c532 -ATTRIB_HIDE
# 处理器性能核心放置最小核心数量, Processor performance core parking min cores, 性能核即小核,
# 即最少多少个小核永不休眠,100%即所有小核永不休眠,25%即1/4的小核永不休眠, 简而言之, 休眠越多越省电, 但是唤醒消耗时间等于性能降低
powercfg -attributes SUB_PROCESSOR 0cc5b647-c1df-4637-891a-dec35c318583 -ATTRIB_HIDE
# 1类处理器性能核心放置最小核心数量, Processor performance core parking min cores for Processor Efficiency Class 1, 1类处理器即大核和超线程
powercfg -attributes SUB_PROCESSOR 0cc5b647-c1df-4637-891a-dec35c318584 -ATTRIB_HIDE
# 处理器能源性能首选项策略, Processor energy performance preference policy, 这个值控制了处理器频率设置的激进程度, 值越大睿频上升越保守, 总体越省电, 但是它不限制睿频的上限,
# 只是限制睿频到达上限的概率, 这个针对小核
powercfg -attributes SUB_PROCESSOR 36687f9e-e3a5-4dbf-b1dc-15eb381c6863 -ATTRIB_HIDE
# 同上, Processor energy performance preference policy for Processor Efficiency Class 1, 针对大核
powercfg -attributes SUB_PROCESSOR 36687f9e-e3a5-4dbf-b1dc-15eb381c6864 -ATTRIB_HIDE
# 最大处理器状态, Maximum processor state, 处理器最大睿频相对基准频率的百分比, 即控制睿频上限, 建议100%, 针对小核
powercfg -attributes SUB_PROCESSOR bc5038f7-23e0-4960-96da-33abaf5935ec -ATTRIB_HIDE
# 最大处理器状态, Maximum processor state for Processor Efficiency Class 1, 针对大核
powercfg -attributes SUB_PROCESSOR bc5038f7-23e0-4960-96da-33abaf5935ed -ATTRIB_HIDE
# 最小处理器状态, Minimum processor state, 处理器闲置时候的最小频率百分比, 简而言之就是闲置时的默认频率最低是多少, 针对小核
powercfg -attributes SUB_PROCESSOR 893dee8e-2bef-41e0-89c6-b55d0929964c -ATTRIB_HIDE
# 最小处理器状态, Minimum processor state for Processor Efficiency Class 1, 针对大核
powercfg -attributes SUB_PROCESSOR 893dee8e-2bef-41e0-89c6-b55d0929964d -ATTRIB_HIDE
# 处理器性能提升模式, 针对所有核, 控制是否开启睿频以及睿频上限模式, 有几个值, 0 - 禁用睿频, 1 - 启用睿频, 2 - Aggressive,允许到达最高睿频
# 3 - Efficient Enabled,允许睿频到一个较节能的频率, 4 - Efficient Aggressive,大概比3更高性能一些, 5 - Aggressive At Guaranteed,不清楚,大概更激进
# 6 - Efficient Aggressive At Guaranteed, 不清楚
powercfg -attributes SUB_PROCESSOR be337238-0d82-4146-a960-4f3749d470c7 -ATTRIB_HIDE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment