Arch Linux+niri+NVIDIA 笔记本游戏性能排查:4K HDR 从约 45 FPS 提升到 75 FPS
本文最后更新于 2026年9月19日 晚上
最近, 空之轨迹2nd 发售了,我也第一时间在 steam 上购买下载了,开始游玩。我的主力笔记本是 Archlinux 2024款的翼龙15pro 4070版本, 现在用的 niri+dms+wayland. 听说 cachyOS 的 proton 支持走wayland 而不是 Xwayland 了,因此我也装了 proton-cachyos. 进入游戏之后发现游戏支持HDR, 又让 GPT6 帮我找了一个 niri 的分支,自行构建开启了HDR支持。
但是进入游戏之后,帧率很低,尤其我用4k 中画质的话,大约只有45帧,开启HDR会更低。听闻前段时间Linux上能用上 dlss5, 我也尝试了一下,于事无补,而且帧率进一步降低,可能我的显卡太差了(对应的资源也放在我的 openlist了。
找AI帮我调了一些参数,也没有什么明显效果,所以在 Linux下我就先用着2k高画质玩着,差不多60FPS. 我又想要不回 Windows 得了,结果 windows下4k中画质有60fps, 但是没有HDR了(我的显示器是支持的)。所以我又回Linux了,想着怎么提升一下帧数。
排查过程
下面的排查过程是让 GPT帮我总结的,大致上没问题。
最终有效的调整是:指定 niri 使用 NVIDIA 独显作为主渲染设备。 游戏本身一直运行在独显上,但 niri 原先使用的是另一块 GPU。
记录一下 Windows/Linux 对照、排查过程和解决办法,供双显卡笔记本用户参考。
使用环境
- 系统:Arch Linux
- 桌面:niri+DMS,niri 为自行编译的 HDR 分支
- niri 版本:
26.04 (641335f) - 显卡:RTX 4070 Laptop,8GB 显存
- NVIDIA 驱动:
615.71.09 - Proton:
proton-cachyos-slr 1:11.0.20260703-1 - 显示器:ASUS PG32UCDM3,通过 HDMI 连接
- 桌面输出:3840×2160、240Hz,缩放 200%
- VRR:配置为按需启用
后期 Linux 对照测试主要使用 4K 输出、中画质、DLSS Performance。这里的 4K 指输出分辨率,启用 DLSS 后并非原生 4K 渲染。
最初的疑问:为什么 Windows 能接近 4K 60 FPS,Linux 却不行?
在 Windows 11 下,使用 4K+DLSS Performance,帧率能够勉强达到 60 FPS。
但 Windows 下还有一个 HDR 问题:
- Windows 系统设置中的 HDR 已开启。
- 游戏内 HDR 显示为 Off,而且不能调整。
- Linux 下使用支持 HDR 的 niri 分支后,游戏内 HDR 可以调整。
所以,Windows 的这个结果不能算作“游戏 HDR 开启时的 4K 60 FPS”。当时也没有把两边所有画质选项逐项记录下来,它主要是排查起点,并非严格控制全部变量的跨系统基准测试。
Linux 下做过的帧率对照
早期在 4K、中画质、DLSS Performance,HDR 关闭 的条件下:
| 运行方式 | 实测帧率 |
|---|---|
| XWayland | 约 60 FPS |
| Proton 原生 Wayland | 43–49 FPS |
这让我最初怀疑是 Proton 的原生 Wayland 路径存在明显性能损失,考虑过重新编译 Proton,或者添加环境变量。
之后另一次测试中,原生 Wayland 的表现是:
| HDR 状态 | 实测帧率 |
|---|---|
| 开启 | 约 45 FPS |
| 关闭 | 约 52 FPS 以上 |
这些是不同轮次的观察,因此没有把早期的 43–49 FPS 与后来的 52 FPS 以上当作完全相同条件下的重复测量。
中间排查了哪些方向?
-
显卡功耗与 Dynamic Boost
游戏时经常看到 GPU 只有约 105W,而
nvidia-smi显示上限为 140W,因此怀疑没有释放全部功耗。检查发现:
- Notebook Dynamic Boost 显示 Supported。
nvidia-powerd已启动。- 一次详细采样中,平均功耗达到 139.59W。
- 另一次连续采样虽然只有约 103–104W,但核心频率稳定在 2520MHz,
SW Power Cap为Not Active。
因此,不能因为某段游戏只有 105W,就判断显卡被锁在 115W,或者需要“解锁 140W”。
-
关闭 Wine fullscreen hack
测试了:
1
PROTON_ENABLE_WAYLAND=1 WINE_DISABLE_FULLSCREEN_HACK=1 gamemoderun %command%帧率仍为 43–49 FPS,没有观察到改善。
-
HDR 分支的 scanout-post-blend-encode
单独尝试了:
1
2
3debug {
scanout-post-blend-encode
}添加和移除都没有观察到帧率变化,因此它不是这次解决问题的关键。
真正的线索:niri 使用的渲染设备
检查 niri 日志:
1 | |
原先显示:
1 | |
随后确认 NVIDIA 独显对应的节点:
1 | |
结果是:
1 | |
也就是说,游戏使用 NVIDIA,但 niri 的主渲染设备并不是 NVIDIA。
之前在 nvidia-smi 的进程列表里也能看到 niri,但这不足以证明 niri 把 NVIDIA 作为主渲染设备。这里需要看 niri 启动日志。
最终解决方案
在自己维护的 ~/.config/niri/config.kdl 中加入:
1 | |
如果已经有 debug 配置块,就把这一项合并进去。
这里使用 PCI 对应的 by-path 路径,避免依赖可能随启动变化的 renderD128、renderD129 编号。其他机器需要先确认自己的独显 PCI 地址,不能直接照抄。
然后注销并重新进入 niri 会话。主渲染设备在启动时选择,仅重新加载配置不够。
重新检查日志,确认变成:
1 | |
Steam 启动参数保持为:
1 | |
这次改善不依赖重新编译 Proton,也没有使用 DLSS5 helper 的效果来提高帧率。
修改后的结果
继续使用 4K 输出、中画质、DLSS Performance:
| 原生 Wayland | 修改前,后期测试 | 指定 niri 使用 NVIDIA 后 |
|---|---|---|
| HDR 开启 | 约 45 FPS | 约 75 FPS |
| HDR 关闭 | 约 52 FPS 以上 | 约 80 FPS |
这是此次测试场景中的结果,不代表整个游戏所有场景都能维持同样帧率。不过,已经超过了我最初希望达到的 4K HDR 60 FPS。
补充确认:HDMI 本来就是独显直出
我还怀疑过 HDMI 是否经过核显,以及换成 Type-C 连接是否能改善性能。
检查外接屏接口:
1 | |
返回路径中的关键部分是:
1 | |
这说明 HDMI 接口本来就属于 NVIDIA 独显。
内屏 eDP 则位于另一块 GPU:
1 | |
所以这次修改改变的是 niri 使用哪块 GPU 渲染,并没有切换笔记本内屏的硬件 MUX。
修复之后,游戏、niri 主渲染设备和 HDMI 输出都落在 NVIDIA 上。没有必要仅为解决这次帧率问题而更换 Type-C 连接。
另一个问题
游戏失去焦点之后最小化,丢给GPT排查之后说是我的设置问题,niri配置加一个阻止最小化.
1 | |
同时 proton 启动命令也加一个变量变成下面这样
1 | |
这次排查得到的结论
从主渲染设备日志和修改后的大幅提升来看,主要瓶颈指向 niri 的 GPU 选择以及跨 GPU 显示路径,不能简单归因于“Proton 原生 Wayland 性能差”。
没有进行 GPU 跟踪,因此不能精确断言其中发生了几次复制、各自耗时多少;修复后也没有进一步确认外接屏是否进入直接扫描输出。接口属于独显,与合成器成功直接扫描输出,是两件不同的事。
对于双显卡笔记本,尤其是外接显示器接在独显上的情况,如果游戏已经使用独显,Wayland 性能却明显异常,值得同时检查:
- 游戏使用哪块 GPU。
- 合成器使用哪块 GPU。
- 显示器接口实际属于哪块 GPU。
本例中,调整第二项就解决了主要性能问题。