使用SSH进行X11转发时,渲染是在哪里执行的?

16

当通过ssh远程登录到一个具有大量计算能力和/或图形硬件的系统(例如集群)并启用X11转发时(例如使用ssh -X或-Y),图形渲染在哪里完成?你如何运行图形密集型工作负载,以便利用集群的图形硬件?在集群上的虚拟机中运行程序会使情况变得复杂吗?


1
在我发布这个东西之前,我遇到了有关质量标准的错误,并最终发布了一个空的代码字符串,对此感到抱歉。 - aze
1
好的,你还是在没有看完评论的情况下给我的问题投了反对票... 多谢 @Joe - aze
我不知道IBM计算器是什么,也不知道你问题的任何部分与编程有关,这对于本网站或SE网络中的任何其他网站都没有相关性。 - Joe
1
@Joe Ho谢谢你实际提供与我的帖子和你的意见相关的信息,那我应该去哪里发布呢?(我所说的IBM计算器只是指IBM电脑) - aze
1个回答

12

在X11渲染中,渲染始终在X11服务器端进行,即在显示服务器运行的系统上。

如何以利用集群的图形硬件的方式运行图形密集型工作负载?

通过在集群系统上运行X11服务器,并仅将输出重定向到显示系统。有几个实现这一功能的项目:VirtualGL和Chromium是其中两个。

然而,我个人最喜欢使用带有GPU的X服务器的Xpra。然而,不幸的是,由于Xorg当前的驱动程序模型,您无法在X服务器之间共享GPU。是的,您可以同时运行多个X服务器,但任何时候只能有一个X服务器可以使用GPU。

此外,请记住,集群GPU渲染并不容易完成。到目前为止,Nvidia是唯一提供一体化远程集群渲染解决方案的GPU供应商。


如果我理解正确的话,使用ssh时,转发X11意味着将渲染指令发送到客户端X11服务器?在Linux上使用虚拟机,我可以使用Xpra吗? - aze
@user3714670:是的,这就是X forwarding的重点:渲染命令最终会发送到运行X服务器的系统。但请注意,有许多“现代”工具包出于某些可疑原因选择自行执行渲染并仅传输完成的图片。这本身就很低效,在传输大型未压缩位图的情况下不利于低带宽消耗,这是一个大问题。如果客户端没有由脑残猴编写(这里是我对“现代”工具包编写者的看法),通过网络使用X11可以非常高效。 - datenwolf
@user3714670:在虚拟机中使用Xpra没有任何问题。然而,更大的问题是,很难甚至不可能让虚拟机访问主机系统的GPU。因此,如果您在具有可用GPU的系统上托管一个虚拟机系统,则常规的X转发实际上是更好的选择。但是,我强烈建议不要使用SSH X转发,而是打开一个未加密的X over TCP通道。如果您的虚拟机具有用于与主机系统进行网络连接的virtio通道,则这会增加可接受的少量开销。GLX间接渲染支持OpenGL-2.1。 - datenwolf
我想询问有关虚拟机的问题(在Linux上考虑间接渲染,这是最好的方式吗),我应该在此处提问还是应该开启新线程?感谢您提供的所有有用信息,希望每个人都像您一样在SO上。 - aze
实际上我想要实现相反的效果,安装的操作系统是Linux Redhat(我无法更改),我正在虚拟机中安装Windows以使用DirectX进行游戏(我甚至还没有尝试过),并希望通过我的连接转发视频输出。 - aze
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接