Come utilizzare in modo efficiente il 3D tramite una connessione remota?


11

Ho un PC debole (client) ma con prestazioni 3D accettabili e un PC forte (server) che dovrebbe essere in grado di eseguire un'applicazione usando OpenGL due volte, cioè una volta localmente e una volta in remoto per il client. Attualmente, ci penso ssh -X, ma l'output della console del client indica che viene utilizzato il rendering software e ottengo solo 3 frame al secondo (fps). In realtà, la crittografia di ssh non è necessaria poiché si trova su una LAN, ma è quello che già conosco per le applicazioni remote ...

Quindi, come è possibile aumentare le prestazioni del cliente? Le mie idee lo sono

  • usare l'accelerazione hardware, ma quella del server o del client e come?
  • usa qualcosa di diverso da ssh

Lo so, in piena risoluzione e senza una sofisticata compressione una LAN da 100 Mbit / s non farà più fps, ma è un'applicazione finestrata di ca. 800x450, quindi teoricamente fino a 12 fps (a 24 bit / pixel) dovrebbero essere possibili utilizzando dati grafici non compressi. E forse qualcosa di meglio è possibile utilizzando la GPU del client o una compressione intelligente.

-

modifica Risulta che quello che voglio è sostanzialmente una versione locale di ciò che offre onlive e gaikai . C'è qualcosa del genere per Linux (e forse gratis)?

-

edit2 VirtualGL sembra la soluzione migliore (anche se attualmente non funziona per me), ma mi chiedo se sia possibile eseguire anche il rendering hardware sul client



Seguito dato che i PC sono uno accanto all'altro e mi chiedo perché non utilizzare un PC per due utenti: un PC può essere utilizzato da due utenti contemporaneamente tramite doppio monitor?
Tobias Kienzler,

Risposte:


6

Potresti dare un'occhiata a VirtualGL insieme a TurboVNC dovrebbe fornirti 20fps @ 1280x1024 su 100 Mbit ( vedi Wikipedia ).

Nota che potrebbe non funzionare con tutte le applicazioni, dipende da come usano OpenGL.


+1 questo suono esattamente come quello che sto cercando, grazie! (Accetterò la risposta dopo (si spera) test riusciti)
Tobias Kienzler,


Ora ho un nuovo PC che supporta pbuffer, ma sfortunatamente ora vglrun segfaults . Ciò potrebbe essere dovuto al fatto che il server funziona a 64 bit mentre il client è a 32 bit?
Tobias Kienzler,

(accettato poiché la risposta è corretta e il segfault è una domanda separata)
Tobias Kienzler

1

Questa è una vecchia domanda ma è ancora rilevante. Esiste un manuale passo passo su come configurare e risolvere i problemi del rendering 3D X11 di applicazioni remote su hardware locale: accelerazione hardware OpenGL tramite connessione remota x11 ssh

Il gioco Chromium BSU è usato nell'articolo come esempio. Funziona con 5-8 FPS con rendering software predefinito tramite connessione SSH, 30 FPS con rendering hardware indiretto e> 30 FPS con connessione TCP X11 non crittografata. Si noti che funziona solo per alcune applicazioni.

Breve sommario dell'articolo

Il rendering indiretto e le connessioni TCP sono disabilitati nella configurazione predefinita del server X11. +iglx and -listen tcpi parametri li abilitano. Esiste anche una LIBGL_ALWAYS_INDIRECT=1variabile che forza il rendering indiretto sul client X11.


Grazie per la tua risposta. È molto apprezzato notare l'essenza dei post di blog collegati qui nel caso in cui il link non sia mai morto (anche se ad esempio dichiari semplicemente "utilizzo lightdmcon iglx" tale). Al momento non ne ho più bisogno, ma ci proverò la prossima volta;) Forse anche qualcun altro trova utili le tue scoperte.
Tobias Kienzler,

Buon punto. Ho aggiunto i dettagli principali dell'articolo.
evpo,

0

Questo potrebbe essere vero se hai due PC desktop. Ma se hai un vecchio laptop WiFi utilizzabile ovunque a casa (ad esempio Ti5600 con Ubuntu 10.04 come client e un PC desktop con una scheda GTX insieme a un router Wi-Fi di riserva, avere un client OpenGL remoto sembra una buona idea.

Il problema è ottenere un contesto OpenGL remoto (lato server). Puoi eseguire ssh -X sul tuo client. Ma se esegui glxinfo sul sistema remoto, ottieni il tuo client locale, che ti riporta dove hai iniziato. È possibile impostare la variabile di ambiente DISPLAY su quell'host remoto e utilizzare quella schermata come secondo monitor, che comunque non aiuta.

Un'altra soluzione è scrivere le applicazioni desktop in modo che possano utilizzare un contesto GLX remoto:

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


Grazie. Quindi esiste un'alternativa per il protocollo X per trasmettere 3D? Mi dispiace, avrei dovuto mettere server e client tra virgolette, intendevo solo parole più brevi per il PC forte e debole - entrambi i PC dovrebbero essere usati come front-end allo stesso tempo come se fossero PC desktop ma con tutto il lavoro della CPU e l'accesso alla RAM fatto dal PC migliore. Il PC debole non ha abbastanza potenza della CPU e RAM per eseguire l'applicazione stessa
Tobias Kienzler il

Non che ne sia a conoscenza. Il tipo di 3D a cui stai pensando richiede MOLTA larghezza di banda.
Keith il

è vero :( OTOH, onlive , gaikai e altri sostengono che ciò è persino possibile per i giochi su Internet ...
Tobias Kienzler,

Ok, ho dato un'occhiata. Non penso nemmeno che stiano trasmettendo i frame in quel modo. Stanno scaricando ed eseguendo localmente e trasmettendo solo informazioni di controllo e aggiornamento, proprio come i giochi online esistenti. Anche se lo facessero, dovrebbero essere a bassa risoluzione per un'alta compressione.
Keith il

Per come lo capisco, eseguono il gioco in remoto e trasmettono solo un flusso HD del video mentre ricevono eventi da tastiera e mouse. Ma ovviamente non è possibile trasmettere 30 fps in HD su Internet senza alcuna compressione ...
Tobias Kienzler,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.