Fan*_*ang 12 xorg remote-access x11-forwarding
我有一个图形密集型应用程序,需要通过 X11 转发。我花了一些时间研究 X11 及其(低)效率,包括这篇很棒的文章:为什么 X11 转发如此低效?.
对我来说还不是很清楚的一件事是 X11 转发的性能是否取决于应用程序。我的印象是,无论发生什么,整个屏幕都会被转发。那么 X11 转发应该与应用程序无关。
那么,是否有关于实际转发的内容以及 ssh -X 的性能是否取决于应用程序的具体信息?
use*_*686 30
我的印象是,无论发生什么,整个屏幕都会被转发。那么 X11 转发应该与应用程序无关。
不,实际上恰恰相反。X11 转发之所以称为“X11 转发”,是因为它传输应用程序使用的实际X 协议消息,以在“X 服务器”(通常是 Xorg)上呈现其窗口。这些消息是用于创建/移动窗口、绘制文本和图形基元(线条/矩形)、绘制位图等的命令。
您可以说它在概念上与VNC/RFB 等“全屏图像”协议相反。我认为它有点类似于 Windows 的 RDP,后者也是为传输 GDI 绘图命令而制作的。
因此,您看到程序之间差异的原因是:
引用您引用的帖子,最初大多数基于 X 的程序的工作方式如下:
基本上,X11 不会将屏幕发送到您的计算机,但它会发送显示指令,以便您本地计算机上的 X 服务器可以在您的本地系统上重新创建屏幕。
所以当一个程序想要显示一个按钮时,它只发送了一些简短的命令——“绘制一个矩形”、“绘制文本”,也许还有一些线条使其看起来像 3D。
随着时间的推移,这种情况发生了变化,程序开始自己进行渲染,其中许多指令变成了“这是我已经渲染的位图,把它放在屏幕上”——本地速度非常快,但由于 X11 缺乏任何图像压缩。
这意味着使用现代工具包构建的程序在联网的 X11 上要慢得多,即使它是像抗锯齿字体一样基本的东西。
(相比之下,RDP 已经随着时间的推移进行了调整,包括各种形式的图像压缩,例如 JPEG 甚至 H.264;您经常会在加载完整图像时注意到压缩伪影。)
幸运的是,大多数 UI 工具包(例如 GTK)都实现了损坏跟踪,因此只会重新发送更新的区域。然而,一些程序(例如几个 Firefox/Thunderbird 版本)不支持这一点,并要求完整地重新渲染整个窗口,即使它没有真正更新。
这是程序之间的另一个区别——表现良好的程序仍然可以在网络上使用,但有问题的程序可以使 100 Mbps 的链接饱和,但毫无用处。
| 归档时间: |
|
| 查看次数: |
4123 次 |
| 最近记录: |