Tengo una PC (cliente) débil pero con un rendimiento 3D aceptable, y una PC (servidor) fuerte que debería ser capaz de ejecutar una aplicación usando OpenGL dos veces, es decir, una vez localmente y otra remotamente para el cliente. Actualmente, me ssh -X
gusta, pero la salida de la consola del cliente indica que se usa el procesamiento de software y solo obtengo 3 cuadros por segundo (fps). En realidad, el cifrado de ssh no es necesario ya que está en una LAN, pero es lo que ya sé para aplicaciones remotas ...
Entonces, ¿cómo se puede aumentar el rendimiento del cliente? Mis ideas son
- usa aceleración de hardware, pero ¿la del servidor o la del cliente y cómo?
- usar algo diferente a ssh
Lo sé, en resolución completa y sin compresión sofisticada, una LAN de 100 Mbit / s no producirá más fps, pero es una aplicación en ventana de aprox. 800x450, por lo que teóricamente, hasta 12 fps (a 24 bits / píxel) deberían ser posibles utilizando datos gráficos sin comprimir. Y quizás algo mejor sea posible usando la propia GPU del cliente o alguna compresión inteligente.
-
editar Resulta que lo que quiero es básicamente una versión local de lo que, por ejemplo, ofrece onlive y gaikai . ¿Hay algo como esto para Linux (y posiblemente gratis)?
-
edit2 VirtualGL parece la mejor solución (aunque actualmente no funciona para mí), pero me pregunto si también es posible hacer renderizado de hardware en el cliente
Respuestas:
Puede consultar VirtualGL junto con TurboVNC que debería proporcionarle 20 fps a 1280x1024 en 100 Mbit ( consulte wikipedia ).
Tenga en cuenta que puede no funcionar con todas las aplicaciones, depende de cómo utilicen OpenGL.
fuente
Esta es una vieja pregunta pero sigue siendo relevante. Hay un manual paso a paso sobre cómo configurar y solucionar problemas de renderizado 3D X11 de aplicaciones remotas en hardware local: aceleración de hardware OpenGL a través de conexión remota ssh x11
El juego Chromium BSU se usa en el artículo como ejemplo. Funciona con 5-8 FPS con representación de software predeterminada a través de conexión SSH, 30 FPS con representación indirecta de hardware y> 30 FPS con conexión TCP X11 sin cifrar. Tenga en cuenta que solo funciona para algunas aplicaciones.
Breve resumen del articulo
La representación indirecta y las conexiones TCP están deshabilitadas en la configuración predeterminada del servidor X11.
+iglx and -listen tcp
los parámetros los habilitan. También hay unaLIBGL_ALWAYS_INDIRECT=1
variable que fuerza el renderizado indirecto en el cliente X11.fuente
lightdm
coniglx
"). Actualmente ya no necesito esto, pero lo intentaré la próxima vez;) Quizás alguien más también encuentre útiles sus hallazgos.Eso podría ser cierto si tiene dos PC de escritorio. Pero si tiene una vieja computadora portátil WiFi utilizable en cualquier lugar de su hogar (por ejemplo, Ti5600 con Ubuntu 10.04 como su cliente, y una PC de escritorio con una placa GTX junto con un enrutador Wi-Fi de repuesto, tener un cliente OpenGL remoto parece una buena idea.
El problema es obtener un contexto OpenGL remoto (del lado del servidor). Puede ejecutar ssh -X en su cliente. Pero si ejecuta glxinfo en el sistema remoto, obtiene su cliente local, que lo devuelve a donde comenzó. Puede configurar su variable de entorno DISPLAY en ese host remoto, y puede usar esa pantalla como un segundo monitor, que todavía no ayuda.
Otra solución es escribir sus aplicaciones de escritorio para que puedan usar un contexto GLX remoto:
http://arrayfire.com/remote-off-screen-rendering-with-opengl/
fuente