X11-转发和效率


12

我有一个图形密集型应用程序,需要通过X11转发。我花了一些时间研究X11及其效率(包括效率),包括这篇出色的文章:为什么X11转发如此低效?

对于我来说,还不清楚的一件事是X11转发的性能是否取决于应用程序。我觉得无论发生什么情况,整个屏幕都可以转发。然后,X11转发应该与应用程序无关。

那么,关于实际转发的内容以及ssh -X的性能是否取决于应用程序,是否有任何具体信息?


2
“那么,关于实际转发的内容以及ssh -X的性能是否取决于应用程序,是否有任何具体信息?” 是。作为一个开始,看到丹尼尔·斯通的谈话真实的故事背后的Wayland和X从2013年LinuxConf.au
sampablokuper

1
“我的印象是整个屏幕都被转发了。”很难理解会给您带来什么样的印象,因为人们通常使用SSH X转发来做的是在远程Shell上手动运行各个应用程序。您能否详细说明如何启动应用程序?
rakslice

1
如果要通过SSH隧道传输X会话,请注意一个因素:ssh可以进行压缩。这是-C命令行上的Compression: yes选项,也可以是.ssh / config文件中的选项。如果您正在通过拥塞的T1链接从达拉斯进行传统的X转发到澳大利亚,那么这可能是您的任务是在界面的深处建立一个五个级别的对话框,然后从一个不切实际的任务中选择一个复选框,而不仅仅是令人沮丧的两个小时。幸运的是,我不需要与Wayland一起尝试,但是我认为它已经大大改善了。
Ed Grimm

我不想在评论中开始进行广泛的讨论,尤其是因为@grawity已很好地回答了我的问题。“整个屏幕”是指通过ssh隧道转发的数据将始终是屏幕上像素的简单描述。@ EdGrimm:感谢您对压缩的评论。我知道这一点。在我们的特定情况下,X11是通过10Gbit LAN链路转发的,压缩/不压缩似乎完全没有区别。

Answers:


29

我觉得无论发生什么情况,整个屏幕都可以转发。然后,X11转发应该与应用程序无关。

不,实际上是相反的。X11转发之所以称为“ X11转发”,是因为它传输应用程序用来在“ X服务器”(通常是Xorg)上呈现其窗口的实际X协议消息。这些消息是用于创建/移动窗口,绘制文本和图形图元(直线/矩形),绘制位图等的命令。

您可以说这在概念上 “全屏图像”协议(例如VNC / RFB)相反。我认为它可以与Windows的RDP媲美,后者也是用于传输GDI绘图命令的。

因此,您看到程序之间差异的原因是:

  1. 为了引用您所引用的文章,最初大多数基于X的程序都是这样工作的:

    基本上,X11不会将屏幕发送到您的计算机,但会发送显示指令,以便本地计算机上的X服务器可以在本地系统上重新创建屏幕。

    因此,当一个程序想要显示一个按钮时,它只发送了一些简短的命令-“绘制矩形”,“绘制文本”,也许还有一些使其看起来像3D的线。

  2. 随着时间的变化,程序开始自行进行渲染,其中许多指令变成“这是我已经渲染的位图,将其显示在屏幕上” –在本地非常快,但是由于X11缺少任何内容,因此在网络上非常慢图像压缩。

    这意味着使用现代工具包构建的程序在联网的X11上要慢得多,即使它与抗锯齿字体一样基本。

    (相比之下,RDP已随着时间的推移进行了调整,并包括各种形式的图像压缩,例如JPEG甚至是H.264;在加载完整图像时,您通常会注意到压缩伪像。)

  3. 幸运的是,大多数UI工具包(例如GTK)都实现了损坏跟踪,因此仅重新发送更新的区域。但是,某些程序(例如Firefox / Thunderbird的多个版本)不支持此功能,并且要求完全重新渲染整个窗口,即使尚未真正更新也是如此。

    这是程序之间的另一个区别–行为良好的程序仍然可以在网络上使用,但是有错误的程序可以使100 Mbps的链路饱和,而实际上没有任何用处。


1
我记得曾经尝试设置MythTV服务器。尽管有合理的ADSL链接成为瓶颈(接近8 Mb / s),“ setup”实用程序是Qt应用程序,并且花费了几分钟显示每个配置页面。因此,几分钟的工作就花费了几个小时-使用Curses UI甚至是性能良好的X11应用程序本来会容易得多。如果我知道会遇到多大麻烦,我将等一两个星期直到现场,然后使用其中一个无盘前端盒进行显示。不过,我希望服务器能够启动并开始工作。
Toby Speight

1
为了捍卫那些“笨拙的程序”,应该指出这是X + toolkit意识形态的错,从根本上来说,这使得那些有漏洞的程序首先必须有漏洞。您可能会认为程序可以调用一个API(发送命令)来拥有一个“正常外观的窗口”,一个菜单和一个按钮以及一个滚动条,但没有。您或工具包必须手动完成所有操作。我确实不是MS的忠实拥护者,甚至苹果也是如此。但是,他们对这些事情的理解正确的,而X生态系统已经糟透了几十年,而且仍然糟透了。
达蒙(Damon)

我不确定是否有任何区别。是什么使Windows的UWP或WinForms或comctl32少于GTK和QT的“工具箱”?他们不是也“手工”做所有事情吗?
grawity
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.