[教程] 通过手动修改注册表优化Windows 10对超线程技术的调度问题

Windows10对超线程的调度一直没有Windows7好,经常出现同频9900k不如9700k,8700k不如8600k的情况,这篇文章介绍了一个解决此问题的方法,但更多的希望微软本身能更多的做好优化工作。

注意事项:

本文仅适用于intel带超线程的cpu,不带超线程的cpu无效,amd的ryzen也无需此优化只需要使用1903+最新芯片组驱动就好,此方法至少支持2017年以后的Windows10版本。非k系列cpu效果更明显,日常使用时睿频更稳定。

实现原理:

利用windows10的异构调度功能将所有的超线程伪装成小核心,达到优先使用非超线程核心并减少线程切换核心,可以减少响应延迟提高游戏性能和单核性能,并且不影响多线程性能。关于异构调度的具体说明详见《Windows Internals 7th Part1》中的Heterogeneous scheduling(big.LITTLE)。

实现方法:

修改下列代码中SmallProcessorMask的值:2核4线程就改为00000005,4核8线程就改为00000055,6核12线程就改为00000555,8核16线程就改为00005555
注:下面的代码是以6核12线程的8700k为例,此值是2进制表示的大小核标识,1为大核心,由于实测Windows10下0 2 4等线程才是超线程,所以是010101010101,它们的16进制值就是555。这里的KGroups\00中的00是1号cpu如果是多路cpu还需要设置01等等。DynamicCpuPolicyExpectedRuntime值决定进程在cpu单一线程上的保持时间可以适当加长,此值需要使用regedit手动修改注册表添加,无法导入,1450为默认值5200ms。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel]
"DefaultDynamicHeteroCpuPolicy"=dword:00000000
"DynamicCpuPolicyExpectedRuntime"=dword:00001450‬
"DynamicHeteroCpuPolicyImportant"=dword:00000002
"DynamicHeteroCpuPolicyImportantShort"=dword:00000000
"DynamicHeteroCpuPolicyMask"=dword:00000004

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\KGroups\00]
"SmallProcessorMask"=dword:00000555

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\0cc5b647-c1df-4637-891a-dec35c318584]
"Attributes"=dword:00000000

修改完保存成reg文件双击导入后,进入电源选项打开你需要使用的电源方案中的更改高级电源设置,在处理器电源管理中找到“针对第1类处理去电源效率的处理器性能核心放置最小核心数量”将其改为100%后重启电脑就设置好了。如下图:

[教程] 通过手动修改注册表优化Windows 10对超线程技术的调度问题

[教程] 通过手动修改注册表优化Windows 10对超线程技术的调度问题

[教程] 通过手动修改注册表优化Windows 10对超线程技术的调度问题
如果不修改此值会因大小核调度默认启用的core parking功能,出现部分cpu线程无法调用的问题。

使用效果图:

[教程] 通过手动修改注册表优化Windows 10对超线程技术的调度问题

[教程] 通过手动修改注册表优化Windows 10对超线程技术的调度问题

最终感谢贴吧吧友maxppa提供的思路

本文来源 蓝点网,由 工具人 整理编辑,其版权均为 蓝点网 所有,文章内容系作者个人观点,不代表 蓝点网 对观点赞同或支持。如需转载,请注明文章来源。
已赞5
Linehart1995TT_fieldiruanmi
哇哦恭喜您已成功屏蔽了蓝点网的小广告
   
百度网盘不限速下载器PanDownload v2.1.0版发布 满速下载网盘文件你家的宽带可能已经支持IPv6协议要不要设置试试看如何禁止系统自动更新到Windows 10 Version 1809版[视频]生命在于折腾系列 虚拟机里玩谷歌原生版安卓系统

评论:

30 条评论,访客:23 条,站长:7 条
  1. 路过
    路过发布于: 
    Nokia Browser 7.3.0 Nokia Browser 7.3.0 Nokia Series60 Nokia Series60

    我的8700k测试了下,456三个核心的超线程直接废了,不知道哪里设置不好对,只好还原了

  2. Linehart
    Linehart发布于: 
    Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 64位版 Windows 10 64位版

    nice,好文收藏了!

  3. caicai341
    caicai341发布于: 
    Firefox 69.0 Firefox 69.0 Windows 10 64位版 Windows 10 64位版

    夭寿啦,笔记本试了一下,风扇一直转,QAQ

  4. 智障大师
    智障大师发布于: 
    Google Chrome 74.0.3729.169 Google Chrome 74.0.3729.169 Windows 10 64位版 Windows 10 64位版

    Process Lasso 就有个进程CPU用量平衡

  5. lasvilan
    lasvilan发布于: 
    Google Chrome 76.0.3809.132 Google Chrome 76.0.3809.132 Windows 10 64位版 Windows 10 64位版

    我测试前后,国际象棋和x265编码速度没变化啊,

    • 工具人
      工具人发布于: 
      Google Chrome 76.0.3809.132 Google Chrome 76.0.3809.132 Windows 10 64位版 Windows 10 64位版

      它不会影响满载时性能 只是改善了不使用超线程程序的性能 例如游戏及线程比较少的办公软件

  6. Withal
    Withal发布于: 
    Chromium Edge 77.0.235.18 Chromium Edge 77.0.235.18 Windows 10 64位版 Windows 10 64位版

    实测国际象棋跑分有提升,副作用暂时没发现。。

  7. HJK
    HJK发布于: 
    Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 64位版 Windows 10 64位版

    上面那位确实过激了,估计是个键盘勇士。但是其实从安全上来说也确实不建议修改注册参数,通过之前intel的漏洞来看,这个数值应该是故意设置的,毕竟有提前计算的问题,限制超线程降低性能来防漏。当然,之前也禁用intel漏洞补丁的勇士就可以直接无视了,我用的AAA所以无所谓。

    • 工具人
      工具人发布于: 
      Google Chrome 76.0.3809.132 Google Chrome 76.0.3809.132 Windows 10 64位版 Windows 10 64位版

      其实这个也顺路加强了分支预测的安全性 在没用完非超线程的线程时不会使用超线程 另外AAA效果差和不调差别不大只有1%左右的提升这也是我说win10下实体线程是1 3 5…的原因 实际测试我在3套硬件平台上通过游戏都cpu最敏感的游戏之一csgo测试过 包括8700k 4710mq 3600 其中3600下会因跨ccx调度出现最低帧问题 而8700k和4710mq都会有2~3%的最低帧提升 另外8700k和4710mq还通过win7sp1和win101903对比 最低帧win7比未经过调度优化过的win10高5%以上 测试参数画质全最低 全屏 fps_max 0 通过timedemo 播放同一录像记录控制台播放结束后给的统计帧数结果 更多测试因为最近还有工作要忙没那么多空闲时间这篇文章已经是挤出来的时间搞的了哈哈 顺便说一下还原的方法是 去注册表按这个reg删掉除Attributes这个键值以外的重启就好了

      • HJK
        HJK发布于: 
        Firefox 69.0 Firefox 69.0 Windows 10 64位版 Windows 10 64位版

        额..其实不太像你想的这样的。首先是关于分支预测,其实这更多是intel驱动问题,它的原理在于IU是分段的检查内存,每次检查的区块不一定是完整的内容。这样的话就能更充分的利用内存频率,因为每次都是满带宽的走。但是问题是这段内存里面不一定是完整的检查内容,而且还可能含有其他程序的内存命令,其次就是要命的同步处理,会把另外一个盗取上一个内存的命令也一并处理了,接着再判断是否传回。而这个判断在这个命令的执行时差有关,比如这个盗取的命令是判断上个内存位是否位0x0001,如果是,就等上1000ms,这样,返回命令的时候就能判断出上个命令的内存信息。而再给这个命令加上一个循环就能直接通过时差返回上个命令的内存了。超线程则不太关系,因为超线程原理是通过增加10%的运算单元,然后分开使用,这样看起来是两个55%的核心在运行,但是实际使用中小命令反而占多数,于是在像是通常计算的任务中就有了看起来多了一个30%的小核心一样。而微软削弱超线程跟分支预测关系不大,是另外一个漏洞的问题。最后就是ccx的问题,其实一开始也有不少人说过的,建议直接r7减少这个问题的发生,我就是2700不带x,所以这方面我倒是没怎么感觉到。

        • 工具人
          工具人发布于: 
          Google Chrome 76.0.3809.132 Google Chrome 76.0.3809.132 Windows 10 64位版 Windows 10 64位版

          嗯 是我描述的不准确 是TLBleed 一个超线程漏洞 通过超线程可以获取另一个线程的信息

  8. whaha
    whaha发布于: 
    WebView 4.0 WebView 4.0 Android 9 Android 9

    又见到一个“我比微软更聪明”。如果这么简单就能优化,又没有负作用,微软早就这么做了,等的到你?整个Windows就是微软做的,微软会不知道,要你告诉他?蓝点网不知道哪来的傲气,或者是自信,相信微软是愚蠢的,只要有自己是睿智的 ,只有自己能救广大的、苦难的、饱受微软折磨的用户。

    • 山外的鸭子哥
      山外的鸭子哥发布于: 
      Google Chrome 76.0.3809.132 Google Chrome 76.0.3809.132 Windows 10 64位版 Windows 10 64位版

      这是啥鸡儿逻辑???

    • 山外的鸭子哥
      山外的鸭子哥发布于: 
      Google Chrome 76.0.3809.132 Google Chrome 76.0.3809.132 Windows 10 64位版 Windows 10 64位版

      你行你上这话送给你,这篇文章是用户投稿文章,你要是决定人家写的不行你可以写篇教程出来反驳,欢迎投稿

      • whaha
        whaha发布于: 
        WebView 4.0 WebView 4.0 Android 9 Android 9

        呵呵,不提任何证据,就断定“Windows10对超线程的调度一直没有Windows7好”。然后对这个方法的效果,又没有任何的实测数据。看到此文的人都有这个疑问吧?再来一个“这篇文章是用户投稿文章”,什么意思?免责声明?用户个人观点,与本站无关?

        但凡草台班子、野鸡把式被戳破,都会祭出“你行你上”。我现在要说,如果说“Windows10对超线程的调度一直没有Windows7好”,那要提出证据。这个方法果真有效且无负面效果,也要有实测数据。你行吗?你上?

        • 山外的鸭子哥
          山外的鸭子哥发布于: 
          Google Chrome 76.0.3809.132 Google Chrome 76.0.3809.132 Windows 10 64位版 Windows 10 64位版

          你反驳人家还要人家证明?果然坐着看戏最舒服啊,你怎么不自己测试和收集证据来反驳呢?

        • 山外的鸭子哥
          山外的鸭子哥发布于: 
          Google Chrome 76.0.3809.132 Google Chrome 76.0.3809.132 Windows 10 64位版 Windows 10 64位版

          还有效果问题不知道是不是眼瞎,结尾两张图看不到哪里有区别?

        • 山外的鸭子哥
          山外的鸭子哥发布于: 
          Google Chrome 76.0.3809.132 Google Chrome 76.0.3809.132 Windows 10 64位版 Windows 10 64位版

          另外文章发布时底部就已经注明作者了,眼瞎看不见文章结尾的声明【文章内容系作者个人观点,不代表 蓝点网 对观点赞同或支持】?

        • 山外的鸭子哥
          山外的鸭子哥发布于: 
          Google Chrome 76.0.3809.132 Google Chrome 76.0.3809.132 Windows 10 64位版 Windows 10 64位版

          再瞎的话去百度或者谷歌查查这篇文章的快照,看看文章内容到现在有没有改动、声明有没有改动,去吧,对你来说这个估计简单点。

        • 山外的鸭子哥
          山外的鸭子哥发布于: 
          Google Chrome 76.0.3809.132 Google Chrome 76.0.3809.132 Windows 10 64位版 Windows 10 64位版

          最后,您NB,不跟您杠了,文章不删不改,等您哪天有实验数据了欢迎再来打脸,拜拜了您~

          • 智障大师
            智障大师发布于: 
            Google Chrome 74.0.3729.169 Google Chrome 74.0.3729.169 Windows 10 64位版 Windows 10 64位版

            让我想起了“键盘侠歌”https://www.bilibili.com/video/av57983137

    • hero0306
      hero0306发布于: 
      Microsoft Edge 18.18362 Microsoft Edge 18.18362 Windows 10 64位版 Windows 10 64位版

      他来了他来了他扛着键盘进来了。。。

    • 工具人
      工具人发布于: 
      Google Chrome 76.0.3809.132 Google Chrome 76.0.3809.132 Windows 10 64位版 Windows 10 64位版

      666 本文内容其实已经使用了2周 在3套硬件平台上通过游戏都cpu最敏感的游戏之一csgo测试过 包括8700k 4710mq 3600 其中3600下会因跨ccx调度出现最低帧问题 而8700k和4710mq都会有2~3%的最低帧提升 另外8700k和4710mq还通过win7sp1和win101903对比 最低帧win7比未经过调度优化过的win10高5%以上 测试参数画质全最低 全屏 fps_max 0 通过timedemo 播放同一录像最后统计帧数结果 更多测试因为还有工作要忙每那么多空闲时间这篇文章已经是挤出来的时间搞的了哈哈

    • 楼上是键盘侠
      楼上是键盘侠发布于: 
      Google Chrome 63.0.3239.132 Google Chrome 63.0.3239.132 Windows 10 64位版 Windows 10 64位版

      你这人是有病吧,上午看见这篇文章,晚上回家按照教程修改了注册表相关参数,在跑分时候,的确有提升,通过任务管理器来看,的确对多线程的调度有改善。微软有些地方是自己留置的,其他人去启用了被禁用的东西而已,为什么就不能比微软聪明。各取所需不行?这个地方留置,我赞同楼上的观点,我也觉得可能是针对熔断漏洞的,毕竟超线程容易有问题。键盘侠,你行的话你写教程反驳啊,在这里比比逼逼有意思?打嘴炮是不是很爽?一句话否定别人全篇功劳成果?loser you

    • 工具人
      工具人发布于: 
      Google Chrome 76.0.3809.132 Google Chrome 76.0.3809.132 Windows 10 64位版 Windows 10 64位版

      另外这个是教程类文章本来就不会用过多篇幅介绍测试数据 因为大家的时间都很宝贵 我写文章一直的理念是减少篇幅只留核心 为此鸭子哥打回好几次我的文章嫌我的文章太短
      另外有没有用自己试试就行了 甚至就像上回我发的优化文章一样 有人硬件没调稳定蓝屏非要说是我的锅一样 其实我是一个没有把握不会说话的人 所有我发的文章都是通过多次验证后得出的结论

      • 哈哈哈
        哈哈哈发布于: 
        Google Chrome 63.0.3239.132 Google Chrome 63.0.3239.132 Windows 10 64位版 Windows 10 64位版

        大兄弟,问一下,修改好后的系统,如果想改回原来默认的调度模式,该如何改回去呢?

        • 工具人
          工具人发布于: 
          Google Chrome 76.0.3809.132 Google Chrome 76.0.3809.132 Windows 10 64位版 Windows 10 64位版

          还原的方法是 去注册表按这个reg删掉除Attributes这个键值以外的重启就好了 Attributes只是显示这个选项而已 默认值是1

          • 哈哈哈
            哈哈哈发布于: 
            Google Chrome 63.0.3239.132 Google Chrome 63.0.3239.132 Windows 10 64位版 Windows 10 64位版

            这个reg里出现了3个路径了,具体是指代哪一个,我需要删除哪一个路径下的?那删除这个后,另外两个路径的键值都不动?

            • 工具人
              工具人发布于: 
              Google Chrome 76.0.3809.132 Google Chrome 76.0.3809.132 Windows 10 64位版 Windows 10 64位版

              额 是我说的太简洁了嘛 除了Attributes不用动剩下的这个reg文件里有的键值都删了就行 不在路径下怎么可能有这些键值

  9. fudashuai
    fudashuai发布于: 
    Maxthon 5.2.7.5000 Maxthon 5.2.7.5000 Windows 10 64位版 Windows 10 64位版

    能够解决问题,就是好办法啊!

发表评论