use*_*186 133 networking protocol x-windows x11-forwarding
每当我使用 X11 转发远程启动大型 GUI 时,甚至包括 -C 开关,体验都非常无响应。我的问题是,在概念/协议级别上是什么导致了这种情况?
使用 25mbit 连接,我可以毫无问题地将高清视频流式传输到我的计算机。另一方面,远程启动的具有 X11 转发的 GUI 的无响应甚至发生在 100 兆位 LAN 上,其中延迟应该接近于零。
我知道与视频流相反,延迟最多会加倍(因为输入需要发送到远程机器,只有在此之后应用程序才能响应),但在内部,是否还有其他因素会增加延迟甚至更远?
其次,带宽。为什么它会吃掉这么多?当涉及到图片和视频格式时,使用了许多方法来大幅减小尺寸。
例如,在 .bmp 与 .png 的情况下,一个大的黑色方形图像在 .png 表示中占用的更少,因为信息不是为每个像素存储的,而是以我理解的范围内的方式存储。
在视频的情况下,通过发送帧之间的差异而不是整个帧可以保存大量信息。
我知道这很简单,但是 X11 不使用这些方法吗?它在某种程度上表现在位图式还是非差分原理中?如果没有,为什么要占用这么多带宽?
Ton*_*nny 149
X11 协议从未打算以图形方式(在位图/纹理方面)处理密集型操作。回到 X11 最初设计的那一天,计算机图形比今天简单得多。
基本上,X11 不会将屏幕发送到您的计算机,但它会发送显示指令,以便您本地计算机上的 X 服务器可以在您的本地系统上重新创建屏幕。这需要在每次更改/刷新显示时完成。
因此,您的计算机会收到一系列指令,例如“以这种颜色从坐标 x,y 到 (xx,yy) 绘制线条,绘制矩形 W 像素宽,H 像素高,左上角位于 (x,y) 等。 ”
如果要渲染的显示由有限数量的简单图形形状组成,并且只需要低刷新频率(无动画等),则这是非常有效的。在 X11 最初开发的时候就是这种情况。
本地客户端并不真正知道需要更新什么,而远程系统对客户端实际需要的信息很少,因此基本上服务器必须发送客户端可能需要或不需要的大量冗余信息。
但是现代 GUI 有很多吸引人的地方,其中大部分需要以位图/纹理/字体的形式从远程系统发送到您的客户端,这会占用大量带宽。各种令人眼花缭乱的动画效果都需要经常更新。并且显示器也越来越大,宽度/高度的两倍是像素数的 4 倍。
当然,随着时间的推移,对 X11 协议进行了增强以尽可能优化这一点,但基本的底层设计本质上根本不适合当今人们期望的那种 GUI 的需求。
其他协议(如 RDP 和 VNC)的设计更多是让远程系统完成所有繁重的工作,并让该系统尽可能高效地决定将哪些更新(作为压缩位图)发送到客户端。通常,这对于现代 GUI 来说更有效。
这两种方法都不是完美的,可以同样好地处理每种情况。没有单一的显示协议可以在所有可以想象的用例下都做得很好。
因此,在大多数情况下,您只需尝试本地客户端和远程服务器之间支持的所有协议,并使用可提供最佳结果的协议。在某些情况下,您别无选择,您只需要凑合使用任何可用的东西。
大多数协议确实允许进行一些性能调整,但其中许多设置仅适用于服务器端,普通用户无法使用。(并且正确配置它们有点神秘。很多系统管理员不会愿意弄乱它。)
在大多数情况下,提高性能的最简单方法(有时非常显着)是切换到更简单的桌面环境,减少美观,并放弃使用背景图像。
vir*_*tex 51
X11 连接变慢主要有两个原因,您在问题中提到了这两个原因:带宽和延迟。要了解 X11 应用程序在网络上运行缓慢的原因,让我们讨论这两个问题。
带宽
默认情况下,X11 不对在应用程序和显示服务器之间传递的网络数据进行任何压缩。正如您所提到的,您可以在 SSH 上使用 -C 选项来启用压缩,虽然这确实有帮助,但它并未针对压缩图形数据进行优化。与 H.264 等格式可以获得 100 比 1 的压缩率相比,-C 压缩将幸运地实现 2 比 1 压缩。更好的解决方案是对 X11 视频使用图形或视频优化的编解码器,但我们必须小心不要让它太有损,因为台式机通常需要比电影更清晰的图像,以便用户仍然可以清楚地阅读文本和做出精细的细节。
潜伏
X11 往往具有高延迟,因为大多数操作需要在应用程序和显示服务器之间进行多次往返。当在 ping 时间测量小于一毫秒的 LAN 上运行时,这些多次往返并不明显,但通过互联网连接它们会迅速增加。
解决方案
几年前,有几个项目旨在解决 X11 协议中固有的带宽和延迟问题。lbx(低带宽 X)和 dxpc(差分 X 协议压缩器)。我认为 lbx 并没有受到太大的关注,但 dxpc 成为用于名为NX的产品的基础技术。NX 既使用有损压缩来降低带宽要求,又使用差分算法和缓存来减少造成高延迟的来回信息传递次数。我经常使用 NX,发现其性能几乎与本地应用程序一样好。如果您愿意,您可以尝试 NX,看看它是否适合您。缺点是它需要在连接的两端安装软件,而 X11 通常已经安装。
| 归档时间: |
|
| 查看次数: |
83398 次 |
| 最近记录: |