amd吧 关注:793,120贴子:18,235,636

全大核CPU系统电源选项调节指南

只看楼主收藏回复

-114514. 本文中的调节设置可能会对有缺陷的软硬件系统造成故障或者损坏,文中已告知风险,如有问题概不负责。本文仅介绍对Windows系统的部分电源选项进行操作的方法,不能保证完全解决问题。
前言 AMD CPU已经进化到Zen4架构,Zen5也即将上市,但是卡顿仍然困扰着8u,同时系统调度产生的问题被BIOS设置掩盖,AMD由于不能使用Throttle Stop软件,没有方便的办法调整系统的调度策略,只能采用更改电源选项的方式,但是只有被隐藏的电源选项才能对系统调度产生足够的影响,Zen2时期AMD发布的锐龙专用电源选项就是对隐藏电源选项进行优化的,但Zen3之后就不支持了,复杂大量的选项以及晦涩难懂、不易查明的说明会阻止大部分人调节电源选项,微软也并不想让大多数人调节,毕竟调不好的话电脑会非常难用(虽然调回去就好了),所以楼主打算把对延迟有影响的电源选项进行解释,方便8u,全部选项都经过楼主日用电脑测试,不会导致严重问题,但是楼主也仅建议把本文介绍的方法当作最后手段,先调好BIOS的各种选项、计时器之类的调好,以及想超频的超完再来。部分选项不一定能够调节,因机而异。
-2. 电源选项能做什么?它能调节操作系统和硬件沟通用到的参数,也会影响操作系统的行为。电源选项不能做什么?超频。
-1. 隐藏电源选项在哪里?怎么更改?参考B站视频BV1rc411u7T9,更改隐藏电源选项就是更改注册表,需要管理员权限,这个工具也会因为更改注册表的能力报毒,建议关闭杀毒软件再下载。还可以参考B站专栏cv13842877,这个不会报毒,可以直接在软件内调节选项,但是有英文,楼主建议能看懂的8u用这个,会比较方便,按Ctrl+F可以调出搜索框。重要提示:尽量不要在系统默认的电源计划里调节,应该新建一个来折腾,电源选项没有备份的,改了就是改了。
0.客户端,也就是8u使用的电脑,应该往什么样的方向调教?楼主认为低延迟是第一位的,其次是温度,最后是功耗,楼主会按照这个指导思想在下文给出自己的选项设置方案,每个选项后的括号内就是了。


IP属地:福建1楼2024-06-20 17:35回复
    1.PCI Express 这里只有一个设置:链接状态电源管理(关闭)。关闭是因为据说PCIE链接切换电源状态的延迟比较高
    2.处理器电源管理 这是最核心的选项,决定了CPU怎么调频,什么时候进入睡眠状态,如何管理功耗,怎么调度计算。微软在这个部分设计了三个引擎:内核休止引擎、性能状态引擎,异构策略引擎。注意全大核CPU下有“第n类处理器”字样的选项都是无效的,本文不讨论
    2.1关于性能状态引擎 这个引擎控制CPU的性能等级。
    处理器性能自主模式(已启用) 开启这个选项,CPPC才算是满血了,可以让CPU自己调节性能状态,比process lasso和系统调度都要快,更不会依赖微软的通用(lj)调度,而是使用AMD自己的调教。开了这个就不需要调节2.5节的选项了,没有CPPC功能的CPU开不了
    处理器能源性能首选项(100) 值越大,CPU越倾向于节能,楼主用笔记本所以选择了100%
    延迟敏感度提示处理器能源性能首选项(0) 这个选项会在需要应付延迟的时候把上面这个选项暂时替换,不需要应付延迟的时候就恢复
    处理器性能时间检查间隔(1) 值越小,CPU进行性能调整的频率就越高
    处理器性能历史计数(1) 值越小,CPU就越倾向于提高短时间效率
    处理器自主活动时段(0)值越小,CPU性能调整就越少参考过去的数据
    调低上面三个选项可以让CPU反应变快,使CPU温度变化更大,可能会出现风扇起飞的状况
    允许节流状态(启用) 这是一个节能选项,允许CPU调节P-State,禁用之后CPU就只能固定在P0状态,也就是最高频率-最高电压。实测“启用”和“自动”的效果似乎很接近
    系统散热方式(主动) 主动和被动的区别仅影响提频行为,和散热状况没关系,被动模式会在一段时间内不提频,保证短时间负载时温度不上升太多


    IP属地:福建2楼2024-06-20 17:36
    收起回复
      2.1.1关于缓存优先调度 为了延迟最低,缓存命中率应该尽量高。以下的设置中,“顺序”的意思是把第一个要素用满再用下一个,依此类推;“循环配置”的意思是使用Round Robin公平调度算法,保证每一个要素都分配相同的任务数量。相关设置:
      模块启动策略(循环配置) 模块指的是共享L2的CPU结构,全大核CPU的一个模块就是一个物理核心。这个设置除了禁用还有两个选项,“顺序”看似缓存命中率很高,但是在这之前核心会容易满载,也会导致大量任务堆积在一个核心上,结果是每个任务都要用缓存,缓存太小不能支持这么多任务,缓存命中率反而下降;“循环配置”则是直接先把任务分给其他核心,从一开始就不占用过多的缓存,在负载调度不乱跳的情况下还可以起到类似共享缓存的作用(解决负载乱跳的问题可参考2.2节)
      SMT线程启动策略(每个线程的核心) 单个物理核心上的物理线程和超线程可以看作共享L1和L2的结构。默认设置是“核心”,选项的说明看起来也和每个线程的核心很像,但是“核心”和“每个线程的核心”区别就在“每个线程”,前者并不限制任务在两个线程之间的分配,后者则会主要利用一个线程,楼主认为这才是超线程的正确打开方式,超线程本来就是一个线程对核心利用不完全才拿来补位置的,不能让它们抢核心资源,另外两个选项同样不考虑两个线程之间的分配,所以也不选择
      复杂启动策略(顺序) “复杂”是什么东西?其实目前来说就是CCX(compute complex),“complex”被翻译成“复杂”了。系统定义的“复杂”是共享最后一级缓存(LLC,Last Level Cache)的结构,所有核心都共享最后一级缓存的话,这个设置没什么用,但是如果是Zen2或者7950X3D呢?“顺序”选项会先从第一个CCX开始占用,这样可能会帮助降低延迟,剩下有效果的选项只有“循环配置”,负载在多个CCX之间跳,没人会喜欢的。至于7950X3D的专用驱动如何调度,楼主并不清楚,但是肯定和这个设置无关


      IP属地:福建3楼2024-06-20 17:36
      收起回复
        2.2 关于异类线程调度 万恶之源(不是),需要关闭CPPC和PSS的问题都来源于此,CPPC提供的核心优先级同时也是是大小核调度的参考,在AMD处理器上默认“高性能处理器”的调度实际上全调到金银核心上,无法发挥全大核CPU的优势,而单独调节异类线程的选项又会导致负载在核心间乱跳,结果就是改了半天问题也没解决,真正的解决方案只有看完2.1,2.2节才能彻底了解。以下是相关选项:
        生效的异类策略(异类策略4) 5个(01234)选项在不同的系统上可能有不同的效果,0是按照CPPC决定调度,优先从效能核心开始使用,123根据系统不同有所区别,但是它们都和大小核有关,4是根据利用率进行调度。4的效果对全大核CPU很好,为什么?因为只有这个选项是最传统的,不依赖CPPC,并且似乎可以感知能耗比,也许是感知缓存命中率?而缓存命中率提高就可以提高核心工作效率,减小延迟。微软的文档没有详细说明,仅列出了一些控制参数;英特尔的文档则称4为“异类停车”,称0为“标准或偏好停车”
        异类(短运行)线程调度策略(自动) 这两个选项有一些技巧,因为“所有处理器”可能并不是所有情况下延迟都最好,先改成“所有处理器”,一段时间后再改回“自动”,系统似乎就会自己调成最佳状态,可能是一开始就自动的话系统调度参数的初始值太差,使结果发散了,最后系统不知道该用哪个核心好,负载就反复横跳,调度正常的自动模式不会出现这种情况


        IP属地:福建4楼2024-06-20 17:36
        收起回复
          2.3 关于处理器内核休止引擎 内核休止可能是个过时的技术了,因为它会强制停用核心来让核心睡眠,这样剩下的核心可以加速到更高频率,当年i3默秒全的时候只使用单核让加速频率提高还是有明显优势的,但现在CPU核心一个比一个多,程序多核优化也跟上了,单核加速频率的做法已经比不过多核分摊负载的优势,更不用说系统基础负载越来越大的今天,只用几个核是会拖累单核性能的。内核休止对延迟最大的影响是会让各种负载挤在较少的核心上,导致单个程序响应变慢;其次是系统调度不及时,导致程序想用被停用的核心的时候需要等待很长时间。以下是相关的选项:
          处理器性能内核休止并发阈值(100) 值越大,多核并发倾向越强,100%就会关闭内核休止引擎
          处理器性能核心放置增加时间(1) 值越小,内核休止越快
          处理器性能核心放置减少时间(1) 值越小,内核脱离休止越快
          处理器性能内核休止分配阈值(100) 系统分配多核负载时也需要占用CPU,值越大允许的占用越多,除非核心太少,比如双核,否则100%可能也感觉不到,因为目前的多核负载分配主要是程序自己申请,不靠系统调度,不会因为多核负载去占用整个CPU来调度
          延迟敏感度提示已离开的核心/程序包的最小数量(0) 这个值按照物理核心数量算
          ,值越小,为应付延迟而启用的核心越多
          处理器性能核心放置减小/增加策略(所有可能的核心) 这个选项的说明比较明白,就是让你选择一次核心停止要停止的核心数量
          处理器性能核心放置过度利用阈值(0) 这个值的范围是5-100,改注册表才能到0。过度利用是指核心短时间内反复停止和退出停止多次并且达到某个利用率,这意味着这个核心被反复使用,这样系统短时间内就不会停止这些核心,值越小,系统越容易这么做
          处理器性能内核休止软停止延迟(4294967295) 值越低,系统预期越好,但是实际上内核休止引擎的延迟都挺高,填个最大值让系统预期差,就避免了使用停止的核心的额外延迟
          处理器性能内核休止实用工具分配(已启用) 又不是机翻又不知所云的说法,启用后会把只占用单核但是可以并行的计算分配给其他核心,相当于强制多核负载
          处理器性能内核休止并发空间阈值(100) 值越大,多核负载时系统预期要使用的核心数越多,因为只有满足这个阈值,系统才不会再投入更多的核心


          IP属地:福建5楼2024-06-20 17:36
          收起回复
            2.4 关于C-State,也就是核心电源状态 CPU的“空闲状态”,也就是睡眠状态,C-State从C0开始一直排到Cn,根据硬件设计不同,最深可以到C10,台式机一般只到C6,笔记本可以到C7,n越大睡眠状态越深,越深的空闲状态唤醒(进入)时间越长,但是使用CPPC的CPU从C6唤醒也只需要1毫秒。C0是工作状态,P-State在C0才可用,更深的空闲状态下核心不能处理数据,而且空闲状态必须逐级退出(进入),这也是导致延迟的一个原因。以下是相关选项:
            处理器闲置降级阈值(0) 值越大,退出空闲状态的速度越慢
            处理器闲置升级阈值(0) 值越大,进入空闲状态的速度越快
            注意:以上两个选项的值是“忙阈值”,值越大CPU越忙,而CPU忙的时候允许进入空闲状态会导致延迟。
            处理器忙闲度(启用) 基于PWM控制CPU的开关,让CPU在没数据可处理的时候进入C6(即关闭时钟的状态)
            处理器闲置禁用(启用闲置) 启用才能使用C0之后的C-State
            处理器闲置阈值调整(启用调整) 启用能让系统根据需要的性能决定闲置降级的目标级别,不启用的话核心就到处睡觉
            处理器空闲状态最大值(0)值为0时不限制可进入的空闲状态,其他值的限制为Cn
            处理器闲置时间检查(1)值越小,CPU升降级空闲状态越快


            IP属地:福建6楼2024-06-20 17:37
            收起回复
              2.5 关于P-State,也就是频率-电压状态 无论是PBO、TVB、XFR、睿频、加速频率,还是降压、定频定压,都是在操作P-State,系统将每个P-State从P0开始依次编号为Pn,n越大则频率和电压越低,n越大代表性能级别越低。Zen2(移动端是Zen3)和Broadwell及它们之后的架构都支持最快1毫秒调节P-State,这是CPPC的一部分(英特尔推出更早,称为Speed Shift技术)。调频不会对延迟产生太大影响,但是频率提升不及时就会增加系统处理时间,系统的计算量是一定的,在不出错的前提下频率越高处理速度就越快。以下是相关选项:
              最小处理器状态(0)值越小,允许的性能级别越低
              最大处理器状态(100)值越大,最大允许的性能级别越高
              上面两个选项调节的是P-State的级别,100%才允许P0,而任何让CPU超过基础频率的操作,比如睿频、PBO等,都是在P0才可以使用的,99%就会把CPU锁定在最高只能到基础频率的状况,但是手动改P-State时,比如定频定压、降压,这两个设置会失去作用。0%则是CPU最低倍频对应的P-State
              处理器性能提高阈值(0) 值越大,升频越慢
              处理器性能降低阈值(100) 值越小,降频越慢
              处理器性能降低策略(Rocket) 这个设置没有IdealAggresive
              处理器性能提升策略(IdealAggressive)
              上面两个设置中选项的调频速度大小关系是:Rocket>IdealAggresive>理想的>单一
              处理器性能增强策略(100) 值越大,系统越有可能相对过度地提高频率
              处理器最大频率(0) 最大值很大(42949672%的人类感谢你),但是调成0也不会限制最大频率
              处理器性能提升时间(1) 值越小,升频速度越快
              处理器性能下降时间(1) 值越小,降频速度越快
              停用已停用性能状态的处理器性能核心(最深性能状态) 选择越深的性能状态,核心停用越不积极,这个选项和P-State无关,只是为了方便
              延迟敏感度提示处理器性能(100) 值越大,用于应付延迟的频率就越高


              IP属地:福建7楼2024-06-20 17:37
              收起回复
                3. 中断路由控制设置 CPU能够处理核心之外发来的数据,其基础技术就是中断技术,显卡硬盘鼠标键盘都需要发送中断,CPU才知道它们需要处理数据。在处理中断的时候以1个物理核心为单位,处理的时候这个核心不能做任何其他的事情,一个中断处理时间可长达100微秒以上,所以这也成为延迟的一个来源。多核处理器的每个核心都可以独立处理中断,中断路由可以把中断分配给空闲的核心可以有效减少每个核心处理中断带来的延迟。硬件中断由于来源在核心之外,而且是突发事件,缓存起不了太大作用,所以多核处理降低延迟的必要性和可行性都比较高。以下是相关选项:
                中断路由控制模式(任何启动的处理器) 这个选项决定中断会发给哪些符合条件的核心。所有选项中除了带有“任何”字眼的选项,都会限制中断传输到所有核心上,而且我们不想看到任何延迟,所以启动的、且不具有时间延迟的核心一定是最佳选择
                目标负载(0) 值越小,处理中断时单核使用率越小,中断处理会使用的核心越多
                已启动时间触发器(0)值越小,能被选中处理中断的核心的必需已启动时间越短,说人话就是:值越小,越容易进行多核中断处理


                IP属地:福建8楼2024-06-20 17:37
                收起回复
                  4. 杂项 楼主觉得这些设置可能影响延迟
                  电源计划类型(高性能) 任一电源计划都是以三个默认计划为基础更改得到的,系统的游戏模式之类的会在“平衡”模式下改变一些参数,这些参数一般不可见,选择“平衡”以外的选项就能让系统只使用用户可见的电源选项
                  设备空闲策略(性能) 选择设备进入“空闲状态”的策略,选“节能”就会卡了
                  无线适配器设置-节能模式(最高性能) 用无线网卡的8u会用得上,某些无线网卡节能时会断流或者卡顿


                  IP属地:福建9楼2024-06-20 17:38
                  回复
                    后记 本文的宗旨是帮助所有被卡顿困扰的全大核CPU使用者,本文一经发出,如果能引起讨论自然是最好的,即使这会让利益相关的人过来骂我,我也不在乎。之所以选择在AMD吧发布本文,是因为我相信这里能最好地发挥本文的价值,而且我不想做视频发B站,做视频得累死我,就这样吧


                    IP属地:福建10楼2024-06-20 17:38
                    回复


                      IP属地:福建来自Android客户端11楼2024-06-20 20:05
                      收起回复
                        自顶


                        IP属地:福建来自Android客户端12楼2024-06-20 21:36
                        收起回复
                          好帖,帮顶


                          IP属地:四川来自Android客户端13楼2024-06-20 21:39
                          收起回复
                            你有对比过。前后的差距嘛?


                            IP属地:上海来自Android客户端15楼2024-06-21 11:17
                            收起回复