在 Linux 上测量输入延迟:X11 与 Wayland、VRR 与 DXVK 低延迟
在 Linux 上测量输入延迟:X11 与 Wayland、VRR 与 DXVK 低延迟
TL;DR – 数字含义
- X11 vs. Wayland: X11 略快(0.14–0.22 ms),不足以解释人们普遍觉得 Wayland 更慢的感受。
- 可变刷新率(VRR): 开启 VRR 能持续降低 0.26–0.45 ms 的延迟,并收紧延迟分布。
- DXVK 低延迟分支: 在限帧场景下削减 0.10–0.29 ms;在未限帧、GPU 受限的运行中削减 0.84 ms 并平滑帧时间尖峰。
- XWayland: 增加巨大的 3.13 ms 惩罚,远超其他所有因素。
- 总体收益: 采用全部优化(X11 + VRR + DXVK 低延迟)相较于默认的纯 Wayland 设置,可将中位端到端延迟降低约 0.72 ms。
测量原理
作者使用 Adafruit QT Py RP2040 搭建了一个 click‑to‑photon 装置,其工作方式如下:
- 以 1000 Hz 的轮询率发送 USB HID 鼠标点击。
- 立即开始采样安装在显示器上的光电二极管(≈24 µs/样本,每次点击采集 12 k 样本)。
- 将采样数据流式传输到主机,脚本在每次点击的基线中寻找第一次亮度偏离。
- 由于采样窗口长度固定,脚本计算点击发出到屏幕亮度变化之间的精确时间——即 端到端系统延迟(鼠标 → CPU → GPU → 合成器 → 扫描输出 → 显示器)。
该方法捕获了完整的流水线,区别于仅测 GPU 的计时器——后者会忽略 USB 与显示延迟。
测试矩阵
| 变量 | 选项 |
|---|---|
| 显示服务器 | X11(原生),Wayland(原生),XWayland |
| VRR | 关闭,开启 |
| DXVK 低延迟 | 关闭,开启 |
| 限帧模式 | 以刷新率限帧(500 Hz)或不限帧(GPU 受限) |
所有测试使用相同的硬件和软件栈:
- CPU: AMD Ryzen 7 5800X3D
- GPU: NVIDIA RTX 4070 SUPER,驱动 610.43.03
- 显示器: MSI MAG 272QP QD‑OLED,2560×1440 @ 500 Hz
- 操作系统: CachyOS kernel 7.1.3‑2,KDE Plasma 6.7.2,Xorg 21.1.24
- 游戏: Diabotical(DirectX 11)via Heroic + Proton‑cachyos 11.0,DXVK 3.0
- 设置: 原生分辨率,100 % 渲染比例,关闭 V‑sync,其他图形均设为低。
每种情形运行 300 次点击(约 2 分钟),在静态游戏场景下保持帧率稳定且 CPU 受限。
核心结果(中位延迟,ms)
| 配置 | X11 | Wayland | XWayland |
|---|---|---|---|
| 低延迟 + VRR | 4.21 | 4.38(+0.17) | – |
| 低延迟 | 4.64 | 4.83(+0.19) | 5.95(+1.12) |
| 仅 VRR | 4.45 | 4.67(+0.22) | – |
| 纯净 | 4.79 | 4.93(+0.14) | 8.06(+3.13) |
未限帧(GPU 受限)对比
- 关闭低延迟:5.27 ms,715 FPS
- 开启低延迟:4.43 ms,670 FPS(‑0.84 ms 延迟,‑45 FPS)
观察
- X11 仅比 Wayland 快约 0.2 ms——远小于“Wayland 感觉更慢”的流行说法。
- VRR 持续提升延迟(0.26–0.45 ms)并缩小分布(p95‑p5 范围从约 3 ms 降至约 2 ms)。
- DXVK 低延迟在限帧模式下收益有限(≈0.2 ms),但在未限帧时表现突出,削减 0.84 ms 并防止 GPU 饱和。
- XWayland 是最大延迟罪魁——增加超过 3 ms,超过所有其他因素之和。
为什么 XWayland 如此昂贵
作者指出,XWayland 会在游戏到达 Wayland 合成器之前强制经过额外的 X 服务器层,导致额外的拷贝与合成步骤。原生 Wayland 下,合成器可以使用 direct scan‑out(翻转模式),对全屏窗口完全绕过合成。这一架构开销解释了约 3 ms 的惩罚,远大于 X11 与 Wayland 之间的细微差距。
社区验证
- David Ramiro 的 m2p‑latency 研究发现原生 Wayland 与原生 X11 延迟相当(约 7 ms),而 XWayland 延迟约为其两倍——与本报告的结果相吻合。
- farnoy 的 Open‑Source‑LDAT 工作同样得出应避免使用 XWayland 的结论。
- Themaister 的 VK_EXT_present_timing 方法仅测量 PC 延迟(不包括 USB/显示),与这里的端到端方法形成互补。
对 Linux 玩家实用的建议
- 尽量避免 XWayland——它会额外增加 >3 ms 的延迟。
- 优先使用原生 Wayland;与 X11 的差距可以忽略不计,未来合成器的优化(如 KWin 调优)可能进一步缩小。
- 在高刷新率显示器上开启 VRR;它带来最大的延迟下降并稳定帧时序。
- 在未限帧、GPU 受限的场景下使用 DXVK 低延迟,可平滑帧间隔并削减约 0.8 ms。
- 保持显示器处于翻转模式(direct scan‑out),无论是 X11 还是 Wayland,都能确保合成器不回退到 blit/composite 路径。
局限性与范围
- 结果基于单一硬件配置(500 Hz OLED、RTX 4070 SUPER、Linux kernel 7.1.3),绝对数值在其他配置上会不同,但相对收益应具有可迁移性。
- 测试在 CPU 受限且场景静止的情况下进行;实际游戏的动态负载可能会让 VRR 与 DXVK 低延迟的收益更为显著。
- 仅使用了一款游戏(DirectX 11 Diabotical),Vulkan 或 OpenGL 游戏的表现可能不同。
结语
在理想的 CPU 受限条件下,综合所有优化(X11 + VRR + DXVK 低延迟)相较于纯 Wayland 设置可将中位端到端输入延迟削减 约 0.72 ms。虽然绝对提升看似 modest,但通过 VRR 降低的抖动以及 DXVK 低延迟平滑的帧时间尖峰,在快节奏的竞技游戏中是可以感知到的。最大收益仍然是 避免 XWayland——它带来的延迟惩罚超过了所有其他因素的总和。
“Linux 的美妙之处在于,这类分析不仅可行,而且意义重大。这些结果会反馈给图形软件作者和发行版维护者,整个生态将随之改进。” – NelsonMinar,HN 评论
“根本不存在‘Wayland 输入延迟’这种说法。本文测量的是 Xorg 与 KWin(以及 XWayland)的差异,其他实现会有不同特性。” – seba_dos1,HN 评论
“最近让我抓狂的输入延迟是屏幕解除黑屏的延迟……我怀念旧 X 服务器的行为——在 DPMS 节能时输入仍保持活跃。” – saltcured,HN 评论
这些社区反馈凸显了精准硬件层面延迟测量对于指导 Linux 图形栈未来发展的重要性。