我正在无头远程虚拟机(Ubuntu 16.04)上通过 X11Forwarding 运行计算机视觉模型,并使用良好的 ol' Putty 和 Xming 作为我的 Windows X 服务器。
一切都很好,但如果客户端服务器带宽跟不上,似乎不会出现帧丢失,这意味着我的应用程序速度变慢,每秒只渲染几帧,而如果带宽充足,它可以渲染数百帧。
有没有强制框架下降X11 转发内置选项,如果有,如何打开它?
答案1
我强烈推荐X普拉对于此类用例:它不仅提供断开和重新连接到远程主机上运行的 X 应用程序的能力,还支持各种图像编码为了在不同情况下提供良好的体验,可以加速 OpenGL 应用程序和在客户端中使用 OpenGL 以获得更好的性能。
它有一个本机 Windows 客户端所以它应该很容易设置。您还需要将其安装在远程虚拟机上,但这就像apt install xpra
在 Ubuntu 上一样简单。
答案2
根据这个相关问题,看起来X11Forwarding
不是图形密集型应用程序的最佳选择,因为 X11 协议在设计时并未考虑位图绘制性能。
它基本上发送绘图说明到网络,如果我们谈论的是几个带有文本的窗口,这“一切都很好”,但对于百万像素更改每一帧,特别是当网络遇到高延迟/抖动/数据包丢失时。
正如所提到的问题的答案中所建议的,您可以尝试x2go 并看看它是否符合您的需求。
根据评论编辑
如果x2go
不行,你可以尝试一下VNC
看起来有丢帧功能的。例如,我用于x11vnc
从远程连接连接到我的桌面,并通过x11vnc -display :0 -auth .Xauthority
该连接连接到我的显示器。
不知道它是否有效,Xming
但你可以尝试一下。
答案3
纯 X11 协议本身并不足以保证传输,尤其是通过 SSH。
我推荐NoMachine。它可以进行带宽压缩和网络优化。它还具有适用于 Mac、Windows 和 Linux 的客户端。
附言。 NoMachine 有免费版和付费版。我一直用的是免费的。
看无人机器
对于虚拟桌面(情况 a),默认启用 X11 矢量图形模式(以前称为“轻量级”模式)。该方法通过压缩技术、往返抑制和缓存算法优化 X11 协议,减少了客户端和服务器上的带宽使用(以及硬件要求,因为 CPU 密集程度较低)。
X11矢量图形模式可以方便地避免图像质量损失,并且在处理传统GUI或大量文本时很有用,但不建议将其用于多媒体内容或具有许多图形效果的应用程序。
有关 X11 矢量图形模式的更多信息: https://www.nomachine.com/AR02L00779
对于连接到物理桌面或为虚拟桌面禁用 X11 矢量图形模式时(情况 b),NoMachine 使用基于标准编解码器的视频和图像编码组合以及 NoMachine 自己开发的多种技术来实现显示协议。
它还实现了网络自适应显示质量技术。这意味着NoMachine在检测到网络拥塞时会自动尝试降低显示质量。此机制的目的是使会话能够在所有不同的网络条件下保持响应。
有关寻找最适合多媒体播放的配置的更多信息: