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

想简单聊一下笔记本的显卡切换

  •  
  •   icestraw · 2022-04-27 23:09:03 +08:00 · 2514 次点击
    这是一个创建于 723 天前的主题,其中的信息可能已经有所发展或是发生改变。
    M1 系列笔记本的续航有目共睹,那是相当的长。在使用的过程中,我最大的感触是,在这一代的机型上,苹果解决了之前困扰我很久的问题:显卡切换。我对笔记本的需求并没有那么复杂,主要就是办公和打游戏,希望尽可能长的续航和较好的显卡。但是在 M1 以前相当长一段时间,笔记本的续航 /显卡性能 /兼容性对我似乎是一个无解的问题。在此把我使用中观察到的现象分享一二...

    2013 年以前 Macbook:
    苹果在此之前的 Macbook Pro 采用了 nvidia 独立显卡,并且提供了 intel/nvidia 切换选项,尝试兼顾笔记本的功耗与性能。但是此时切换独显 /核显的 mux 需要重启,在日常使用场景中极为不便。类似开会时暂时带电脑离开办公桌的场景需要用户手动重启电脑,这无疑会打断我的工作进度,因此我感觉这种功能聊胜于无。

    2013-2019 年 Macbook:
    苹果引入了新的 mux 技术,可以实现不让用户手动切换了,而是通过检测高性能图形 API 的调用随时调用独显。用户甚至有锁定电脑在独显(而不需要重启)的权限了。这种方式可以说满足了七成需求,但是仍然有问题:有些 App 并不需要高性能,但是调用了对应的 API ,因此显卡被强制切换到了独显模式,此时待机时间几乎就完蛋了。但是谁是高性能 App 并不能由用户选择(因为是根据程序的行为判定的),因此会出现“打开 QQ 后的某个时间突然显卡切换到了高性能,而且直到关闭后都无法换回来”的诡异情况。解决这种情况主要靠开发者的慢慢适配,但不适配的程序依然很多,“强制锁定在集显”这种操作虽然有三方 App(如 gfxCardStatus)尝试实现,但效果不太好,而且随着系统更新,三方 App 的实现失效了。而且由于外置显示器和独显是硬连接,意味着如果连了外接显示器,那么系统必须调用独显显示画面,不管程序是高性能还是低性能。

    外接显卡的 mac:
    苹果 2018 年左右允许用户使用雷电外接显卡(虽然只有 AMD 的几款)。理论上通过这种方式,可以直接把显卡拆开,直接买一个不带显卡的 13 寸就可以了,兼顾功耗与性能。除了外接显卡移动不便(还有贵),听起来似乎没有太大缺点,但是实际使用体验却不是这样的。笔记本自带的显卡切换,在实际发生切换时是不需要有“重启程序”这种诡异的步骤的。但是外接显卡需要!外接的显卡并没有类似内置显卡的待遇,在性能受到雷电口带宽限制的状况下,切换的体验也非常差。你需要手动点击推出显卡,然后让它关掉所有的程序并重新打开。当然,如果直接拔线的话,所有依赖外接显卡的程序会直接崩溃,系统本身也有一定概率崩溃掉。虽然在意料之中,但是手动点推出的情况下居然也无法做到不重启 App ,体验还是很差的。另外,有些 edge cases ,如使用核显解码的视频在外接屏幕上全屏播放,体验几乎也是灾难性的,外接屏分辨率高一些基本上就开始闪成 PPT 了。
    哦对了,还有一个很难受的点,这块外接显卡想在 Bootcamp 状态下运行起来可太难了。

    2012-2020 年的主流 windows:
    与此同时,windows 系列的笔记本从始至终只有一种切换方案:Optimus 。采用这一方案的笔记本,无论是内屏还是外接屏幕,大多都是被核显接管,少部分电脑外接时会使用独显,因此大多数笔记本自始自终都有良好的功耗表现。与之对应的就是很大程度牺牲了独显性能,因为这种方案的独显并不和任何屏幕有硬件 mux 连接,只负责渲染,因此转换过程中损失很大。诡异的是,转换的损失并不会在跑分中体现出来,但是对用户体验的影响是很严重的。具体由几个原因:
    1. 转发画面的成本。相比图像直接显示,optimus 会先把画面编码转发到核显,然后再显示。延迟很大不说,画面越大,转发数据越多,显示越费力。在 1080p 以下的显示器的时代其实影响不大,但是随着显示器分辨率越来越高,这个过程越来越费力。甚至,有些笔记本由于设计比较奇怪,甚至出现了不能全屏幕玩游戏的诡异现象。( Eg. Surface Book, pcie3 x2 的显卡带宽导致传输画面的速率甚至不够游戏全屏,以至于饥荒这样的小游戏全屏都会很卡,但是地平线这样的大游戏低分辨率又没问题)
    2. 对核显的影响。笔记本的功耗恒定,游戏中本来只需要供给 CPU 和独显,现在却要多拖一个满载解码的核显,这对 CPU 的性能表现极为不利。如果散热 /电源不好的话,很容易机器就会出现降频。
    3. 因为核显的满载,而且系统 UI 又是由核显渲染的,如果玩窗口化的游戏,而且外接了显示器,此时系统的响应速度可谓是灾难,说卡成 PPT 毫不为过。
    因此,这段时间我特别不愿意用 windows 的笔记本,少数几款用起来体验也是特别糟心。

    2021 至今的部分 windows
    Nvdia 新发布了 Advance Optimus 技术,做到了显卡切换方式和 2013 年的 Macbook 系列类似,体验没有那么糟心了。然而这个技术仍然很诡异:
    1. 内屏切换独显时,电脑会看到两台显示器,其中一台被禁用,而且会有明显的“切换显示器”的感觉。这属于体验问题,毕竟苹果是软硬一体的公司,比不过比不过。
    2. 一旦连接外屏,此时内屏哪怕是独显模式都会被强制切回集成显卡???这种操作属实没看懂,但是直觉上看似乎是硬件限制。
    3. intel 在 11 代 u 上上了内置雷电 4 ,因此很多笔记本都带了雷电口。但是,通过雷电协议输出的外接显示器,一些笔记本居然是接在核显上的。很难说不是成本原因,毕竟外星人这样的本子是可以独显走雷电协议的。
    能看出 windows 笔记本在显卡切换上整体都慢 Macbook 不止一拍,直到现在也只是勉强能用。

    M1
    回到 M1 ,M1 系列的出现,几乎终结了上述困扰我许久的,不怎么理想的显卡切换技术:只有一张显卡,还切换什么?更何况这张显卡的待机功耗还这么低。因此我对 M1 系列的笔记本印象是非常的好。不能说 100%满意:比如居然有外接显示屏数量限制,不能外接显卡等小毛病,但是瑕不掩瑜。一张卡让笔记本吃遍所有场景的体验,真的让我这么多年对使用各种诡异显卡切换方案的不满消散殆尽。现在只剩下了一个问题:M1 这个 arm 架构的笔记本,它没有 Bootcamp ,没法打游戏啊!即使使用虚拟机跑 arm 版本 windows ,对游戏的兼容性仍然很差。这么高性能的,堪比独显性能的核显,对于不剪视频的我,几乎成了个伪命题:我怎么会在一台不能打游戏的笔记本上用独显呢?

    于是至今我还是没能找到完全好用的笔记本,即使我对它的需求只有办公和游戏。
    24 条回复    2022-05-01 22:54:18 +08:00
    xingda920813
        1
    xingda920813  
       2022-04-27 23:48:19 +08:00
    现在好一点的游戏本早就有纯核显模式 / 核显独显自动切换 / 独显直连这 3 种模式之间的热切换了
    icestraw
        2
    icestraw  
    OP
       2022-04-28 00:00:25 +08:00
    @xingda920813 你说的大概就是 Advanced Optimus 。联想叫 DDG ,最新版本是 2.5 。联想 DDG 就符合我说的那种情况,雷电接口(非 typec )负责输出的画面是核显。Advanced Optimus 体验也是一言难尽...切换的一瞬间,所有窗口都被最小化,然后此时再打开的所有 App 都会使用独显,即使游戏退出后,除非把这些 App 一并关掉,否则独显一直在耗电。
    findex
        3
    findex  
       2022-04-28 00:06:06 +08:00
    关注一下 12 代 u 的雷电 4+外置显示器是否可以走独立显卡。
    另外,m1 上用 arm64 windows 还是可以玩一些 directx 11 的游戏的,就是有些卡。首先,用 parallels 在 m1 上虚拟 arm64 windows ,接近原生运行 arm64 windows 在 m1 芯片上。其次,经过 windows 的一层 x86/x86_64 转译成 arm64 机器码,确实要消耗不少资源。但是我试过这样竟然可以运行骑马与砍杀最新版,最低画质,1440p 60fps 。当然这款游戏优化很好。但是其他游戏就要放弃或者别考虑了。m1 不是用来打游戏的。想流畅运行一些经过转译的游戏,起码 m1 max ,想通过这种方式画质达到 1060 6G 水平,需要 m1 ultra 。这肯定划不来了。就玩游戏来说,在台式机面前,笔记本都是渣。
    icestraw
        4
    icestraw  
    OP
       2022-04-28 00:06:46 +08:00
    比如说打着游戏临时打开浏览器搜个攻略,此时哪怕把游戏关掉,浏览器还是用独显的,而且根据我的体验,最新版 Edge 100 此时渲染帧数会诡异的变成 30fps ,重启浏览器才会恢复。
    icestraw
        5
    icestraw  
    OP
       2022-04-28 00:10:19 +08:00
    @findex 我正在用的 11 代就可以,Alienware m15 R6 ,注意 AW 一般需要 3060 以上的显卡才支持

    m1 开虚拟机我甚至可以玩只狼,帧数比之前 19 年的 5500M 开 Bootcamp 还高,cpu 指令转码似乎并不太影响 gpu 效率。但是偶尔会崩,并不是一个适合玩游戏的平台,哈哈
    281x1h2ez12
        6
    281x1h2ez12  
       2022-04-28 06:40:56 +08:00
    我打的都是一些模拟经营类不吃 GPU 的游戏,吃内存和 CPU 多一些,而且有专门的 Window 游戏本打游戏,MBP 感觉太珍贵了,工作学习都在上面,怕万一打游戏把 MBP 搞坏了。
    610915518
        7
    610915518  
       2022-04-28 11:14:47 +08:00
    火影笔记本表示路过。只要切成独显直连,核显自动屏蔽了,驱动都找不到。所以我直接把 AMD 核显驱动卸载了,全程 N 卡独显直连完事(包括外接显示器),并没有出现 OP 所述问题
    610915518
        8
    610915518  
       2022-04-28 11:16:28 +08:00
    另外在混合模式下(核显输出画面)会有 BUG ,任务管理器有个进程一直占用部分 CPU ,很烦人。
    icestraw
        9
    icestraw  
    OP
       2022-04-28 11:47:33 +08:00
    @610915518 这样几乎就没有续航了,但除此之外都挺好用的,内屏也能用高刷 /GSYNC 。很多游戏本直接把内置的核显砍掉了,所有输出都用独显,干脆不要续航其实也是一种选择。混合模式大家都做得不咋地,哪怕 N+A 甚至 A+A 也不太行。
    BiteDXH
        10
    BiteDXH  
       2022-04-28 11:50:52 +08:00
    硬件整合的体验一致性和硬件自由的体验不确定性 hhh
    610915518
        11
    610915518  
       2022-04-28 12:14:49 +08:00
    @icestraw 是的续航基本为 0 ,断电 1 个小时就撑不住了。鱼和熊掌目前看来不可兼得,完美的方案只能等未来出现了(核显直连 with 真屏蔽独显)
    secondwtq
        12
    secondwtq  
       2022-04-28 12:18:16 +08:00
    没听说过 Optimus 有会卡 UI 的说法。理论上这玩意就是在 iGPU 和 dGPU 之间传输原始画面,没有“编码”“解码”的过程(真“编码”出来连画质都会损失),iGPU 只是一直渲染内存中一块区域的贴图罢了,正常的配置根本不可能满载——你要是能只用 iGPU 拖得动外接窗口化星露谷(或者视频播放),理论上也能拖得动外接窗口化 Optimus 。
    secondwtq
        13
    secondwtq  
       2022-04-28 12:22:28 +08:00
    另外 AMD 最近正在 iGPU 方向发力,不过短时间内要做到 M1 Pro 的效果大概不太可能,内存小水管卡着呢
    icestraw
        14
    icestraw  
    OP
       2022-04-28 13:32:56 +08:00
    @secondwtq 我也没“听说过”,事实上反馈有这个问题的人都很少,但是问题确实存在,但不一定是在所有配置组合存在。你可以找一台这样的电脑试一下:(比如 XPS )
    N+I 卡组合
    使用老版本的 Optimus 技术(即不带硬件 mux )
    CPU 为 10 代或更低( 11 代 /30 系开始有 pcie4.0 等技术了)
    外接显示屏走核显(部分笔记本即使没有硬件 mux ,外接显示屏也会走独显)
    内外屏的分辨率是 4K 甚至更高(低分辨率无法体现这个问题)

    此时在外接显示屏用 N 卡运行一个分辨率为 4k 甚至更高的游戏(哪怕就星露谷),往往就会有诡异的卡顿。如果是多显示器的话问题会更明显。

    Optimus 确实没有编解码视频流,印象中原理是 N 卡往 I 卡的 framebuffer 里拷贝画面,但是中间不仅有延迟还有带宽瓶颈,拷贝对 I 卡的性能似乎也有影响。可以看到任务管理器中 I 卡的”Copy”字段在运行游戏期间几乎是满占用。可能我没表述清楚,卡的不一定是 Optimus 运行的游戏,也可能是集成显卡渲染的其他窗口。
    xiyangzh
        15
    xiyangzh  
       2022-04-28 16:11:14 +08:00
    真实找到知音了,这个问题之前也困扰我很长时间。 我之前是偶尔剪个片子,修个图,写写代码。当我写代码的时候,显卡总是莫名其妙的跑出来,然后续航断崖式下跌,发热, 幸运的时候强制切换成核显很顺利,不幸的时候切不动,只能重启,相当痛苦。当我看到 m1 的时候,我就知道这个问题有戏了,试用了几天体验相当好,目前使用 m1max 。
    xiyangzh
        16
    xiyangzh  
       2022-04-28 16:17:04 +08:00
    另外看了一下,m1max 最耗电的部件是内存, 非常意外
    icestraw
        17
    icestraw  
    OP
       2022-04-28 16:24:04 +08:00
    @xiyangzh M1 芯片待机功耗应该不会比显示器高吧?不过 max 有 miniled ,换个黑主题也不好说...
    mxalbert1996
        18
    mxalbert1996  
       2022-04-28 22:26:30 +08:00 via Android
    我感觉 2020 年以前的 Windows 本外接屏幕基本都是归独显管吧。Xe 以前的核显支持的 HDMI 和 DP 的版本都贼低,连 4K 60Hz 都不支持,而且以 Iris 核显那孱弱的性能渲染两个屏幕也太勉强了。
    mxalbert1996
        19
    mxalbert1996  
       2022-04-28 22:27:50 +08:00 via Android
    Iris 核显 -> 非 Iris 核显
    icestraw
        20
    icestraw  
    OP
       2022-04-28 23:46:22 +08:00 via Android
    @mxalbert1996 分型号,两种方案都有,游戏本偏独显一些。但是核显外接的本子接屏幕就有些痛苦。其实以前只有 Iris 的 MacBook Pro 也很痛苦,自从 macOS 10.10 后界面一堆高斯模糊,就没流畅过,显卡太弱了连那块高分内屏都带不起。
    非 Xe 的 UHD630 甚至可以 5k60 ,Windows 本和 Mac 都可以(典型的例子是 Mac mini 2018 )但是相当卡,顶多浏览个网页。Xe 性能还是可以的,但是 intel 还是太抠了,直到 12 代才给标压 u 96eu 的版本,之前都是 32eu 的阉割版,性能差好多。
    israinbow
        21
    israinbow  
       2022-05-01 04:53:30 +08:00 via Android
    我有和 op 一样的使用历程,同时也有图形学相关工作的需求,所以我对笔记本的要求十分苛刻,目前也在寻找能够胜任的笔记本,多次调研后,候选了今年的雷蛇以及华硕使用外接显卡的笔记本。

    实际上,迫于当前市场形态主导技术发展,能够胜任打游戏兼容好 /干活方便 /轻度使用时高续航的笔记本是不存在的,只有一些靠着外接显卡的设计才勉强能用。应用程序由于先调用显卡后输出信号,能够不关应用随时切换显卡的技术根本不存在,哪怕是近两年鼓吹的 mux 三显切换,系统依然在给不使用的显卡供电以便随时切换(比如 rog x13 ),最后能够妥协的只有工作续航需求时通过各类限制将独显限制在零功耗,或者使用外接显卡来弥补笔记本自身不足以支持显卡重工作。

    苹果发布新架构芯片的时候我甚是激动,各类评测宣传吹嘘 gpu 处理能力比肩 RTX3080 ,可最后苹果连自己的弃子 vulkan 技术都不愿意支持,搓出来一个新的图形 api 让各位开发者去配合使用,最后游戏佬只能玩玩一些 OpenGL 的游戏,实际可惜。
    icestraw
        22
    icestraw  
    OP
       2022-05-01 10:00:54 +08:00
    @israinbow “系统依然在给不使用的显卡供电以便随时切换”这个是真的吗?我用过的所有笔记本都没遇到过这个现象,听起来有点奇怪啊。按理来说 Optimus 的显卡只要没有运行程序应该是睡眠状态才对。感觉像是部分程序仍在使用独显,导致独显还在高功耗模式。难道是这款机型有三显所以特有的限制?

    m1 max 说是 3080 ,游戏跑分只有 3060 的样子。原生 Metal API 的大作估计也就原神了😂
    israinbow
        23
    israinbow  
       2022-05-01 21:48:01 +08:00
    @icestraw #22 这句话有些武断了, 这是我在调研的时候发现的, 我不清楚是否所有机型设计上都是这样, 这是我在华硕幻 13, 雷蛇灵刃 14 以及外星人 m15 电脑上安装 linux 不挂载独立显卡时发现的事情, 参照 https://github.com/CO-1/asus-flow-x13-linux "Even if nouveau or nvidia is not loaded nvidia gpu will still consume ~10W of power. We need to set power/control to auto to reduce power.", 不过我也不清楚这是不是 linux 独有的特征, 暂时还没有机会在 windows 平台上测试验证包括硬件 mux 的设备, 是个比较不靠谱的推论.
    icestraw
        24
    icestraw  
    OP
       2022-05-01 22:54:18 +08:00   ❤️ 1
    @israinbow Optimus 的驱动只有 Windows 版本啊,显卡正常休眠是依赖驱动的。Linux 下没有官方驱动,没有官方方案可以实现休眠,笔记本厂家官方一般会建议使用 Linux 环境关掉 Optimus 直接使用独显直连。单纯的禁用是不可以的,必须明确发出休眠的指令。我装过黑苹果的笔记本,Optimus 架构,默认如果没有任何操作的话显卡是不休眠的,待机时间只有 2 小时。需要额外打三方补丁才可以让显卡进入睡眠状态,而且系统从睡眠唤醒有一定几率重新唤醒显卡。显卡能正常进入休眠后,我的正常使用时间能达到 5 个小时。(我现在用的 m15 电池小一点,也可以达到 4 个小时)

    你发的链接最底下有一句话,描述的大概就是类似的现象,但是我不确定是否一定管用。

    Even if nouveau or nvidia is not loaded nvidia gpu will still consume ~10W of power. We need to set power/control to auto to reduce power.

    echo '#nvidia dGPU' > /etc/udev/rules.d/99-asus-flow-power.rules
    echo 'ACTION=="add", SUBSYSTEM=="pci", TEST=="power/control", ATTR{vendor}=="0x10de", ATTR{power/control}="auto"' >> /etc/udev/rules.d/99-asus-flow-power.rules
    udevadm control --reload


    这个应该是我了解 Linux 下的配置方案
    https://github.com/Askannz/optimus-manager/wiki/A-guide--to-power-management-options

    这个是用 OC 引导时的 GPU 关闭脚本,供参考,配置方式因机型而异
    https://dortania.github.io/Getting-Started-With-ACPI/Laptops/laptop-disable.html#optimus-method
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1318 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 17:34 · PVG 01:34 · LAX 10:34 · JFK 13:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.