amd吧 关注:779,052贴子:17,847,464

干货——如何最大化超线程收益

只看楼主收藏回复

1l给度娘


IP属地:河北1楼2019-08-22 16:14回复
    大家已经知道超线程的优点在于可以最大程度地利用cpu的剩余资源,但缺点就是减慢单线程性能。不止如此,当一个多线程优化的程序,其线程不小心分布在同一个核心的超线程上时,性能会有较大下降,可以多达30%(你可以想象好不容易超频到5Ghz的cpu一下子变成两个3.5Ghz的cpu有多么让人恼火)。
    有人说windows很聪明,会把程序的线程分到不同的核心上,实际上系统并没有这么聪明,你经常可以看到超线程框框不断上下,就是windows在不断犯错然后改错的过程,这样又造成了损失。对于amd yes来说,可能系统已经能够很好的区分ccx,并让线程尽可能呆在一个ccx内,但win10对于超线程的态度就是能用就用,比win7激进地多。那么我们既想利用cpu的边角料做一点力所能及的事,又不想影响到重负载线程,怎么办呢?
    之前我有一个帖子教大家怎么伪装自己的cpu为大小核架构,刚好能够用来实现我们的目的。基本思想是这样的:对于比较细碎的任务,应该尽可能的利用超线程,所以不对其线程亲和性作改变,而对于重负载线程,我们不希望两个重负载线程放到同一个核心上,因此重负载线程应该放到不同核心上。
    启用大小核调度逻辑后,系统会特别关注每一个线程的某些属性。比如是否前台或后台、优先级是高还是低、上次运行时间是长还是短,以此来决定这些线程是否重要。我们刚好利用这一点,把重负载线程标为重要线程,然后调度到我们定义的“大核”上,大核就定义为0246或1357核心,以此类推。这样系统就会自动把重负载线程调度到不同核心上了。
    有人可能提出怀疑,说为什么不直接改进程的亲和性呢?因为每个进程有很多线程,里面有轻载也有重载,直接改亲和性区分不开来,不能做到有的放矢。
    总之直接上图看效果,下图是chess benchmark从2线程到10线程的cpu利用率情况,你们自己看看效果





    下面给出方法:
    打开注册表编辑器regedit,定位到
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel
    然后添加如下dword键值
    DefaultDynamicHeteroCpuPolicy=0
    DynamicCpuPolicyExpectedRuntime=4000(十进制)
    DynamicHeteroCpuPolicyImportant=2
    DynamicHeteroCpuPolicyImportantShort=0
    DynamicHeteroCpuPolicyMask
    然后在kernel下新建项
    KGroups
    在其下继续新建项
    00
    然后添加dword键值
    SmallProcessorMask
    根据你的cpu,比如你是8核16线程,那么就修改为十六进制的5555,如果是6核12线程就修改为555,4核8线程就修改为55。大功告成!


    IP属地:河北2楼2019-08-22 16:22
    收起回复
      英特尔cpu可以吗


      IP属地:陕西来自iPhone客户端3楼2019-08-22 16:32
      收起回复
        马克一下


        IP属地:江苏来自Android客户端6楼2019-08-22 19:09
        回复
          大佬,我按照你的这个教程改了为什么动不动死机蓝屏呢。


          IP属地:江苏来自Android客户端7楼2019-08-22 19:47
          收起回复
            另外,可能大家按照帖子中做的发现有的线程怎么也启动不了,是因为开了大小核调度后系统默认对大核启用了core parking功能。解决方法如下:
            打开注册表编辑器,定位到
            HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\0cc5b647-c1df-4637-891a-dec35c318584,把右边窗口的Attributes改为0。关闭注册表。然后打开电源管理选项,打开更改高级电源设置,在处理器电源管理下会出现一个叫“针对第一类处理器电源效率。。。。最小核心数”,改为100就行了


            IP属地:河北来自iPhone客户端8楼2019-08-22 19:56
            收起回复
              按照大佬教程改完之后流畅过了,是我以前都体验的,谢谢大佬无私分享。


              IP属地:江苏来自Android客户端9楼2019-08-22 20:24
              回复
                低运行状态


                IP属地:江苏来自Android客户端10楼2019-08-22 20:25
                回复
                  中等运行


                  IP属地:江苏来自Android客户端11楼2019-08-22 20:27
                  收起回复
                    那就好了


                    IP属地:河北来自iPhone客户端12楼2019-08-22 20:28
                    收起回复


                      IP属地:江苏来自Android客户端13楼2019-08-22 20:40
                      收起回复
                        这就对了,骚跑跑游戏看看效果


                        IP属地:河北来自iPhone客户端14楼2019-08-22 20:41
                        回复
                          玩dnf流畅多了,谢谢大佬。大佬有没有优化A卡的方法


                          IP属地:江苏来自Android客户端15楼2019-08-22 20:45
                          收起回复
                            这个是玩dnf的占用


                            IP属地:江苏来自Android客户端16楼2019-08-22 20:49
                            收起回复