V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Donduck
V2EX  ›  Windows

Win11 的效率模式和 EcoQoS 是糊弄人的东西

  •  
  •   Donduck · 363 天前 · 2735 次点击
    这是一个创建于 363 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看到有人把效率模式和 EcoQoS 全方面锤了一遍: https://www.bilibili.com/read/cv21378938
    总结一下:

    • 效率模式的原理是降低进程的 base priority ,并通过给进程打开 THROTTLING_EXECUTION_SPEED 的 flag 以启用 EcoQoS ;
    • 修改进程的 base priority 并不会省电,因为 ready queue 里还是这么多东西,CPU 就还是要启动多久时间,而且 Windows 的 scheduler 会自动提高前台进程和因为 priority 不够而一直无法使用 CPU 的进程的 priority ,改 base priority 基本上是自作聪明的行为;
    • EcoQoS 本质就是用了隐藏的电源设置,但是 EcoQoS 无法全局应用,power plan 可以全局应用同样的设置,只会更省电;
    • 最搞笑的是 AMD 的 chipset driver 里找到的 EcoQoS 设置,DC 下的最大频率大于 AC 下的最大频率,糊弄程度可以说板上钉钉,或者 AMD 突破了物理定律,让 CPU 在 2.5GHz 下比 2GHz 更省电:
    8 条回复    2023-04-04 15:23:18 +08:00
    nuII
        1
    nuII  
       363 天前
    这些设置,系统本身根本做不了什么,只能由硬件联动支持
    shansing
        2
    shansing  
       362 天前
    文章似乎没考虑 CPU 大小核的情况,猜测效率模式应该会尽量让进程跑在小核上。
    zed1018
        3
    zed1018  
       362 天前
    @shansing 是这样的没错,在 qos 的文档上 https://learn.microsoft.com/en-us/windows/win32/procthread/quality-of-service ,Eco 类别的释义是“Always selects most efficient CPU frequency and schedules to efficient cores.”,如果按照 intel 大小核构架来讲就是总是选小核并且计划把大核上的转移到小核。blogs 上吹不得吹一下,文章抓住这一点就把整个 Qos 批的一文不值,这玩意儿现在没有不代表以后不会实现到位。不先留个口子,往后怎么继续改进?工程上哪有什么黑魔法。
    Donduck
        4
    Donduck  
    OP
       362 天前
    @shansing
    @zed1018
    文章里已经说了,EcoQoS 的 scheduling policy 选自动等于默认情况选 efficient ,那为什么不直接在全局范围内选 efficient 呢?
    ![]( https://i0.hdslb.com/bfs/article/0673b9cb3e12794155ccc6d8dd89360ba317503e.png@1320w_518h.webp)
    文章喷的就是明明选项在全局范围内应用就好了,为什么要做效率模式和 EcoQoS 这种脱裤子放屁的东西。

    还有,大小核对应的是 processor efficiency class1 ( 0 ),并不一定是 performant/efficient processor ,因为英特尔的 thread director 会根据要执行的指令和硬件情况自动确定大小核的哪个是 performant/efficient processor ,大核可以是 efficient processor ,小核可以是 performant processor 。具体的解释可以去英特尔的 developer manual 看,反正英特尔的 heterogeneous scheduling 的实现方案和其他平台是不一样的,没有那么简单。
    zed1018
        5
    zed1018  
       362 天前
    @Donduck
    > 那为什么不直接在全局范围内选 efficient 呢?

    按照微软过去在兼容性的坚持,很少在全局去默认启动一个之前不存在的东西

    > 为什么要做效率模式和 EcoQoS 这种脱裤子放屁的东西

    我之前里就已经说了,这个东西他是 SetProcessInformation/SetThreadInformation 一个参数值罢了,并不是专门弄给用户去操作的功能,跟你全局设置怎样的并不是重复的功能,一个交给用户选,一个交给开发者去设定。这就像是你手机的通知,你可以去设置里关掉这个 app 的通知,开发者也能设置你要不要给你发通知,这是两个维度的事情。

    ---

    我并不是说 EcoQoS 这个东西他就一定好或者怎么滴,但是有这个东西他又没有害处,最终效果也要看后续怎么优化。当然,批判他的宣传目前是没有问题的。
    Donduck
        6
    Donduck  
    OP
       362 天前
    @zed1018
    > 按照微软过去在兼容性的坚持,很少在全局去默认启动一个之前不存在的东西

    我说的是用户为什么不在全局范围内选 efficient ,thread director 的特性会导致大核可以被识别为 efficient processor ,所以在全局范围内选 efficient 不止是在用小核,不像骁龙那样会用不了大核。微软和英特尔给的默认设置又没明智到哪里去,比 Heterogeneous policy in effect 在 12th 上默认是策略 0 ,但是更灵活的选项是策略 4 。6th 开始有的 hardware duty cycling 默认禁用,导致英特尔开发了这个用来省电 feature 却几乎没人用过。

    > 这是两个维度的事情

    有两个原因:前台进程在日常使用中永远是最耗电的,用任务管理器看看就知道后台进程几乎不使用 CPU ;关键的系统进程无法开效率模式和 EcoQoS 。这导致了所谓的限制后台是在想当然,必须在全局范围内限制才能达到最佳的省电效果。

    > 最终效果也要看后续怎么优化

    没有什么优化,文章已经把这些东西做的事都讲得明明白白了,更别提 AMD 这种肯定是负优化。
    techstay
        7
    techstay  
       359 天前
    有兄弟在 win11 下用 edge 的没,我最近刚好切换到 edge 浏览器,感觉有点慢。查了一下发现好像不是个例,因为这个任务管理器的效率模式会强制应用到 edge 浏览器上,关都关不掉。搞得我特别膈应,想着要不要重装回 win10
    Donduck
        8
    Donduck  
    OP
       359 天前
    @techstay

    可是 edge 的效率模式只会对后台标签页开启,根本不影响前台标签页
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1106 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:50 · PVG 02:50 · LAX 11:50 · JFK 14:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.