Wie kann 3D über eine Remoteverbindung effizient genutzt werden?

11

Ich habe einen schwachen PC (Client) mit akzeptabler 3D-Leistung und einen starken PC (Server), der in der Lage sein sollte, eine Anwendung mit OpenGL zweimal auszuführen, dh einmal lokal und einmal remote für den Client. Derzeit bin ich ssh -Xdabei, aber die Konsolenausgabe des Clients gibt an, dass Software-Rendering verwendet wird und ich nur 3 Bilder pro Sekunde (fps) erhalte. Eigentlich ist die Verschlüsselung von ssh nicht erforderlich, da dies in einem LAN geschieht, aber das weiß ich bereits für Remote-Anwendungen ...

Wie kann die Kundenleistung gesteigert werden? Meine Ideen sind

  • Verwenden Sie die Hardwarebeschleunigung, aber die des Servers oder des Clients und wie?
  • benutze etwas anderes als ssh

Ich weiß, in voller Auflösung und ohne ausgefeilte Komprimierung wird ein 100-Mbit / s-LAN nicht mehr fps erzeugen, aber es ist eine Fensteranwendung von ca. 800x450, daher sollten theoretisch bis zu 12 fps (bei 24 Bit / Pixel) mit unkomprimierten grafischen Daten möglich sein. Und vielleicht ist etwas Besseres mit der GPU des Clients oder einer intelligenten Komprimierung möglich.

- -

edit Es stellt sich heraus, dass ich im Grunde eine lokale Version dessen sein möchte, was zB onlive und gaikai bieten. Gibt es so etwas für Linux (und möglicherweise kostenlos)?

- -

edit2 VirtualGL scheint die beste Lösung zu sein (obwohl es derzeit nicht für mich funktioniert), aber ich frage mich, ob es möglich ist, Hardware-Rendering auch auf dem Client durchzuführen

Tobias Kienzler
quelle
Follow-up, da die PCs sowieso nebeneinander liegen und ich mich frage, warum nicht ein PC für zwei Benutzer verwendet werden kann: Kann ein PC von zwei Benutzern gleichzeitig über einen Dual-Monitor verwendet werden?
Tobias Kienzler

Antworten:

6

Sie können VirtualGL zusammen mit TurboVNC auschecken, um 20 fps @ 1280x1024 auf 100 Mbit zu erhalten ( siehe Wikipedia ).

Beachten Sie, dass es möglicherweise nicht mit allen Anwendungen funktioniert. Dies hängt davon ab, wie sie OpenGL verwenden.

Gert
quelle
+1 das klingt genau so wie ich es suche, danke! (Ich werde die Antwort nach (hoffentlich) erfolgreichem Testen akzeptieren)
Tobias Kienzler
aww, meine Radeon scheint den erforderlichen Puffer nicht zu unterstützen :(
Tobias Kienzler
Ich habe jetzt einen neuen PC, der pbuffer unterstützt, aber leider vglrun segfaults jetzt. Könnte dies daran liegen, dass der Server auf 64 Bit ausgeführt wird, während der Client auf 32 Bit ausgeführt wird?
Tobias Kienzler
(akzeptiert, da die Antwort korrekt ist und der Segfault eine separate Frage ist)
Tobias Kienzler
1

Dies ist eine alte Frage, aber sie ist immer noch relevant. Es gibt eine Schritt-für-Schritt-Anleitung zum Konfigurieren und Beheben von Problemen mit X11 3D-Rendering von Remote-Anwendungen auf lokaler Hardware: OpenGL-Hardwarebeschleunigung über Remote-x11-SSH-Verbindung

Das Chromium BSU-Spiel wird im Artikel als Beispiel verwendet. Es läuft mit 5-8 FPS mit Standard-Software-Rendering über SSH-Verbindung, 30 FPS mit indirektem Hardware-Rendering und> 30 FPS mit unverschlüsselter TCP X11-Verbindung. Beachten Sie, dass dies nur für einige Anwendungen funktioniert.

Kurze Zusammenfassung des Artikels

Indirektes Rendern und TCP-Verbindungen sind in der Standardkonfiguration des X11-Servers deaktiviert. +iglx and -listen tcpParameter aktivieren sie. Es gibt auch eine LIBGL_ALWAYS_INDIRECT=1Variable, die das indirekte Rendern auf dem X11-Client erzwingt.

evpo
quelle
Danke für deine Antwort. Es wird sehr geschätzt, den Kern der verlinkten Blog-Beiträge hier zu beachten, falls der Link jemals tot sein sollte (selbst wenn Sie z. B. nur " lightdmmit iglx" verwenden). Ich brauche das momentan nicht mehr, aber ich werde es das nächste Mal versuchen;) Vielleicht findet auch jemand anderes Ihre Ergebnisse hilfreich.
Tobias Kienzler
Guter Punkt. Ich habe die wichtigsten Details des Artikels hinzugefügt.
evpo
0

Dies kann zutreffen, wenn Sie zwei Desktop-PCs haben. Wenn Sie jedoch einen alten WLAN-Laptop haben, der überall zu Hause verwendet werden kann (z. B. Ti5600 mit Ubuntu 10.04 als Client), und einen Desktop-PC mit einer GTX-Karte und einem Ersatz-WLAN-Router, ist es eine gute Idee, einen Remote-OpenGL-Client zu haben.

Das Problem besteht darin, einen Remote-OpenGL-Kontext (serverseitig) abzurufen. Sie können ssh -X auf Ihrem Client ausführen. Wenn Sie jedoch glxinfo auf dem Remote-System ausführen, erhalten Sie Ihren lokalen Client, der Sie dorthin zurückbringt, wo Sie begonnen haben. Sie können Ihre DISPLAY-Umgebungsvariable auf diesen Remote-Host einstellen und diesen Bildschirm als zweiten Monitor verwenden, was immer noch nicht hilft.

Eine andere Lösung besteht darin, Ihre Desktopanwendungen so zu schreiben, dass sie einen Remote-GLX-Kontext verwenden können:

http://arrayfire.com/remote-off-screen-rendering-with-opengl/

Keith
quelle
Vielen Dank. Gibt es also eine Alternative für das X-Protokoll zur Übertragung von 3D? Entschuldigung, ich hätte Server und Client in Anführungszeichen setzen sollen. Ich wollte nur kürzere Wörter für den starken und den schwachen PC haben. Beide PCs sollten gleichzeitig als Front-End verwendet werden, als wären sie Desktop-PCs, aber mit der gesamten CPU-Arbeit und RAM-Zugriff durch den besseren PC. Der schwache PC hat nicht genug CPU-Leistung und RAM, um die Anwendung selbst auszuführen
Tobias Kienzler
Nicht dass ich wüsste. Die Art von 3D, an die Sie denken, erfordert viel Bandbreite.
Keith
das stimmt :( OTOH, onlive , gaikai und andere behaupten, dies sei sogar für Spiele über das Internet möglich ...
Tobias Kienzler
Ok, ich habe einen Blick darauf geworfen. Ich glaube auch nicht, dass sie die Frames so übertragen. Sie laden lokale Dateien herunter und führen sie aus und übertragen nur Steuerungs- und Aktualisierungsinformationen, genau wie vorhandene Online-Spiele. Selbst wenn dies der Fall wäre, müsste die Auflösung für eine hohe Komprimierung niedrig sein.
Keith
So wie ich es verstehe, führen sie das Spiel aus der Ferne aus und übertragen nur einen HD-Stream des Videos, während sie Tastatur- und Mausereignisse empfangen. Aber natürlich konnte man ohne Komprimierung keine 30 fps in HD über das Internet übertragen ...
Tobias Kienzler