
你需要远程控制感觉灵敏——而不是卡顿和不可预测。如果在远程会话中拖动窗口、输入或移动鼠标感觉迟缓,那就是在排查延迟。
远程控制需要操作响应迅捷——而不是卡顿或不稳定。如果在远程会话中拖动窗口、输入或移动鼠标感觉迟缓,就是在排查延迟。本指南展示如何运行实用的“远程桌面延迟测试”,将网络问题与编码/渲染问题分离,并生成可复现的基准测量,便于随时间比较。
为何测量延迟(以及应有的预期)
远程桌面会话的延迟是多维的。包括原始网络往返时延(RTT)、抖动和丢包,主机与客户端的编码/解码延迟,以及每台机器的显示/输入处理延迟。上述各项叠加起来,构成用户在点击或拖动时察觉到的延迟。
可作为经验法则的实用阈值:
- < 20 ms RTT:在大多数情况下不可察觉(非常适合交互性工作)。
- 20–60 ms RTT:对大多数远程工作非常可用(仅在快速指针移动时有轻微延迟)。
- 60–150 ms RTT:可接受但可察觉;某些任务(绘图、游戏)会受影响。
- > 150–200 ms RTT:明显可察觉,不适合精确的 UI 操作。
这些只是粗略范围——实际感知延迟取决于远程软件的编码管道。专有解决方案(TeamViewer、AnyDesk)通常使用自定义编解码器和预测来减少感知延迟;开源/自托管软件(Tenvo、RustDesk)可能会因配置不同而表现不同。如果你需要自托管部署,请参阅我们的自托管远程桌面指南以获取部署注意事项。
Overview: two complimentary tests to run
按顺序运行这两项测试。它们可将网络延迟与端到端的用户感知延迟隔离开来。
- 网络层基准测试:ping、traceroute/MTR,以及用于吞吐量/抖动/丢包的 iperf3。
- 端到端输入到显示的测量:一种视觉基准方法,使用闪烁方块和高帧率相机或带时间戳的帧。
Step 1 — Network-level benchmarking (quick, objective)
首先测量客户端和主机之间的网络路径。这不能说明一切,但能快速排除明显的网络问题。
所需工具
- ping(Windows/macOS/Linux 内置)
- traceroute 或 MTR(Linux/macOS 上为 mtr;Windows 上为 WinMTR)
- iperf3(通过包管理器安装;常用于吞吐量、抖动和丢包测试)
基本命令与预期数值
将 host.example.com 或 198.51.100.10 替换为你的远程主机 IP/主机名。
ping -c 20 host.example.com # On Windows: ping -n 20 host.example.com
查看 min/avg/max RTT 和丢包率。在同一局域网内应看到 <1 ms 的 min/avg;通过家庭宽带连接到地区服务器通常为 10–40 ms;跨大陆链路通常落在 80–200 ms。
mtr -c 100 host.example.com # Windows: use WinMTR with default 100 cycles
MTR 能提供逐跳丢包信息,有助于发现拥塞链路或 ISP 问题。
Measure jitter and loss with iperf3 (UDP)
在主机上启动 iperf3 服务器:
iperf3 -s
在客户端运行一个 UDP 测试,带宽设置为你预期远程会话使用的值。典型远程桌面流量取决于分辨率和帧率,通常为 1–10 Mbps;以 5M 作为现实的测试值:
iperf3 -c host.example.com -u -b 5M -t 30
iperf3 会报告丢包和抖动。如果你看到 >1% 的丢包或抖动高于约 10 ms,某些远程桌面编解码器将受到明显影响。
Simulating poor networks
如果你想测试远程软件在延迟、抖动或丢包条件下的表现,可在客户端或主机上使用 Linux netem 添加网络劣化:
sudo tc qdisc add dev eth0 root netem delay 100ms 20ms loss 1%
该命令添加 100 ms 延迟、20 ms 的标准差和 1% 的丢包。要移除规则:
sudo tc qdisc del dev eth0 root netem
Step 2 — End-to-end input-to-display latency (user-perceived latency)
网络指标并不总是与感知延迟相匹配。软件栈如果缓冲帧、使用较慢的软件编码器或等待 V-sync,可能会增加数十或数百毫秒。使用此方法测量真实的输入到显示延迟,以便进行基准测试。
Method A — High-frame-rate camera method (most reliable, hardware required)
概述:在主机上运行一个小型网页,按键时切换一个可见方块;使用远程客户端连接后,用 120–240 fps 的相机(或支持高帧率的智能手机)同时拍到主机显示器和客户端窗口。统计主机方块变化到客户端方块显示之间的帧数。
步骤:
- 在主机上打开一个简单页面,每次按下空格键时更改屏幕上一个大方块的颜色。将下面的 HTML 粘贴到本地文件:
<!doctype html>
<html>
<meta charset="utf-8">
<title>Latency Blink Test</title>
<style>body{margin:0;background:#222;color:#fff;font-family:sans-serif}#s{width:300px;height:300px;margin:50px auto;background:#fff}</style>
<script>document.addEventListener('keydown',e =>{if(e.code==='Space'){let s=document.getElementById('s');s.style.background=(s.style.background==='#fff'?'#0f0':'#fff');}});</script>
<body><div id="s"></div>
<p>Press SPACE to toggle the square</p>
</body>
</html>- 启动远程会话,并将主机的物理显示器与远程客户端窗口摆放在相机画面内,使相机能同时看到两者(这就是需要较宽视野或将显示器并列放置的原因)。
- 以高帧率录制(120 fps 足够,240 fps 更好)。按下 SPACE 并观察帧。稍后逐帧查看录制内容,统计主机方块变化到客户端方块变化之间经过的帧数。延迟 = 帧数 / 相机帧率。
示例:如果在 120 fps 时计数为 6 帧,延迟 ≈ 6 / 120 = 0.05 s(50 ms)。
Method B — Software timestamping (no camera, less precise)
如果你能在主机和客户端上运行代码且时钟已同步(NTP 同步对约 10 ms 的对齐已足够),可以在主机对事件打时间戳,并让客户端报告显示该事件的时间。这需要修改远程客户端或添加测试覆盖层,因此更为高级。
优缺点:相机方法测量整个管道,包括显示器残影和相机定时误差,但操作直接。时间戳方法可自动化,但要求严格的时钟同步(使用 chrony 或 pool.ntp.org),并需要在客户端检测帧更新的手段。
Isolating where the delay comes from
获得测量结果后,将问题分解如下:
- 如果 ping/iperf 显示 RTT/抖动较低但端到端测试仍然偏高,检查编码/解码或客户端渲染。监控主机和客户端的 CPU/GPU(Task Manager / top / nvidia-smi)。CPU 占用过高或编码队列积压会导致延迟。
- 如果 iperf 显示显著的丢包或抖动,修复网络。丢包常导致编解码器停顿或重传帧。
- 如果是吞吐量问题(例如远程视频持续使用超过链路允许的带宽),将远程桌面限制到更低的比特率或分辨率后重新测试。
- 检查远程软件设置:色深、帧率上限、硬件加速(在可用时启用 NVENC 或 VA-API)。
Monitoring host/client resources
常规检查项:
- Windows:Task Manager > Performance 和 GPU 选项卡。检查编码器是否使用硬件 H.264/HEVC。
- Linux:使用 top/htop 查看 CPU;使用 nvidia-smi 检查 GPU 编码器利用率;使用 iostat 排查磁盘相关的停顿。
- macOS:Activity Monitor,查看是否有 GPU/编码器使用情况(如支持)。
Comparing different remote software and configurations
进行基准测试时保持一致性:相同主机、相同客户端、相同网络条件、相同显示分辨率。测试每个客户端版本和每种协议模式(直接 P2P 或中转服务器)。一些建议测试项:
- 有线 LAN vs Wi‑Fi vs VPN — 有线始终最低延迟。
- 直接连接 vs 中继:中继可能根据位置增加 20–100 ms 的延迟。
- 启用硬件编码 vs 软件编码。
说明:像 AnyDesk 和 TeamViewer 这样的供应商通常针对感知交互性优化编解码器,在高延迟或低带宽场景下可能优于通用的 RDP/VNC。如果你要比较,请对每个软件运行相同的测试。我们在 AnyDesk vs TeamViewer 2026:功能与价格对比 有更深的比较,在关于 无需端口转发的远程桌面详解 的文章中讨论了中继与直接模式的测试方法。
Practical benchmark plan and scoring
按下列计划运行以生成可重复、可比较的结果:
- 基线:局域网有线测试 — 记录 ping、iperf3(5M)和基于相机的闪烁测试。
- 家庭宽带:客户端在 Wi‑Fi,主机有线 — 运行相同测试。
- 互联网远程:客户端在家,主机在数据中心(或办公地点) — 运行测试并记录中继服务器的地区(如果使用)。
- 压力测试:使用 netem 添加 100 ms 延迟 + 2% 丢包并重新运行,观察软件在劣化条件下的表现。
对每次运行在三个维度上评分(0–10):网络健康(基于 iperf/ping)、编码器健康(CPU/GPU 使用和帧丢失)、感知交互性(相机测试延迟)。如需快速排名,可将它们合并为单一分数。
Tips and quick fixes to reduce latency
- 优先使用有线以太网而非 Wi‑Fi。Wi‑Fi 会增加可变延迟和抖动。
- 在主机上启用硬件编码(NVENC/QuickSync/VA-API),并在客户端支持时启用硬件解码。
- 降低分辨率或帧率。在带宽受限的链路上,720p@30 往往比 1080p@60 有更好的交互体验。
- 尽可能使用直接 P2P 连接 — 中继会增加延迟。
- 在主机和客户端关闭不必要的高 CPU/GPU 应用,避免编码器队列积压。
- 如果你能控制网络设备,使用 QoS 对关键会话优先级排序远程桌面流量。
Documenting results and benchmarks
记录测试元数据:软件名称和版本(例如 Tenvo v0.9.x、AnyDesk 7.x、TeamViewer 15.x)、操作系统版本、客户端与主机硬件、网络类型、iperf3 输出和相机帧率。保存原始相机视频和计数帧,以便日后重现测量。这在评估驱动更新或编解码器设置等变更时尤其有用。
对于 Tenvo 用户:我们的下载页面 /download 列出当前构建;如果测试 Tenvo,请包含确切的构建/提交。若你计划自托管,我们的 自托管远程桌面:诚实的 2026 指南 说明了会影响连接模式和延迟的服务器部署细节。
Wrapping up
一个好的“远程桌面延迟测试”将客观的网络测量与面向用户的端到端测试结合起来。网络工具(ping、traceroute/MTR、iperf3)能快速识别连通性问题;基于相机的闪烁测试则测量用户实际感受到的输入到显示延迟。使用 netem 重现故障条件,并监控主机/客户端资源以定位编码器瓶颈。
如果需要在不同软件厂商间可重复的基线,使用脚本自动化网络测试,并保存闪烁测试的短视频。比较多次运行后,你将看出延迟中有多少是网络造成的,多少来自软件管道——这能指明正确的修复方向。
如果你在比较自托管选项与托管中继,我们关于 无需端口转发的远程桌面详解 的文章更深入地讨论了中继的权衡。关于厂商比较(编解码器行为与定价权衡),参见 AnyDesk vs TeamViewer 2026:功能与价格对比。
准备在可自托管和修改的开源客户端上运行测试吗?在 /download 下载 Tenvo,并按照 自托管远程桌面:诚实的 2026 指南 的部署说明操作。如果你需要帮助解读基准结果,请贴上 iperf3 输出和你的相机测量,我们会帮助分析可能的瓶颈。