我有一个处理服务器(只有板载图形,没有磁头),它与多个工作站服务器(具有专用图形卡/ 2个磁头的服务器)联网。有一套opengl应用程序,我无法更改,并且处理密集。我希望能够在不同的工作站服务器上移动它们,而无需重新加载这些应用程序。到目前为止,我一直无法做到这一点,我正在寻找关于这是否可行的建议。
如果我将显示器导出到工作站服务器但是我无法在不重新启动应用程序的情况下将这些显示移动到另一台服务器上,那么在处理服务器上运行应用程序就可以了。
我已经尝试过x11vnc并且工作正常,但只有当它附加到当前正在运行的X会话时。这将允许应用程序在工作站之间移动,但是一个工作站始终致力于运行不受欢迎的应用程序。
我用xfvb试过x11vnc,但是我无法将它连接到显卡,所以我错过了应用程序所需的NV-GLX扩展。
我也尝试过使用virtualgl的turbovnc,但这些应用程序似乎无法正常使用virtualgl。这也需要我在工作站服务器上运行应用程序,这是不可取的。
在我看来,理想的解决方案是让处理服务器能够运行应用程序但移动导出的DISPLAY但这似乎不可能。我看过xmove和xpra,但他们似乎使用类似于VNC的东西,我担心我会再次遇到NV-GLX扩展问题。
感谢您提供任何帮助。
答案 0 :(得分:2)
不,如你所描述的那样是不可能的。
现在,您有一个处理服务器执行CPU密集型操作,而工作站服务器执行GPU密集型渲染。它们通过X11显示器连接紧密耦合。 Xlib和OpenGL都是在假设图形卡/屏幕不会在它们下面改变的情况下设计的,这就是为什么你不能在没有重新启动的情况下移动到另一个工作站的原因。
附加到现有X会话的VNC可以正常工作,因为它根本不进行任何渲染。它只是从现有窗口中读取像素并将它们复制到别处。
使用xfvb,您要求OpenGL应用程序在不太好的软件渲染器上运行,并且拒绝这样做。 (即使你可以让它工作,性能也会很糟糕。)
我会将一个体面的显卡和显示器粘贴到处理服务器上,并完全在该服务器/显示器上运行OpenGL应用程序。使用工作站中的x11vnc查看结果。