El documento describe un clúster basado en software libre para visualización remota de aplicaciones 3D. Utiliza Chromium para procesamiento gráfico en paralelo entre nodos y VirtualGL y TurboVNC para control remoto de aplicaciones 3D, enviando solo imágenes renderizadas a los clientes. Combinar VirtualGL con Chromium duplica la velocidad de renderizado obtenida con Chromium solo.
2. El propósito de la investigación fue encontrar una solución basada en software libre que permita visualizar remotamente aplicaciones 3D desde cualquier computadora
3. La investigación se dividió en dos partes: Realizar procesamiento gráfico en paralelo Manejar remotamente aplicaciones 3D
4. Para realizar procesamiento gráfico en paralelo utilizamos Chromium Para manejar remotamente aplicaciones 3D utilizamos VirtualGL y TurboVNC
5. Chromium Chromium es un sistema para renderización interactiva en clusters de estaciones de trabajo Permite que el procesamiento gráfico tome ventaja de los commodityclusters haciendo accesible el rendimiento gráfico para aplicaciones paralelas
6. Se basa en OpenGL que es el estándar de la industria La interfaz de programación OpenGL de Chromium incluye todo el estándar OpenGL desde la versión 1.5 Provee una interfaz de programación OpenGL paralela
7. Una forma muy importante en la que Chromium se diferencia de OpenGL es que Chromium soporta paralelismo Chromium esencialmente reemplaza el OpenGL de un sistema La mayoría de programas OpenGL pueden ser utilizados con Chromium sin realizar modificaciones
8. ¿Cómo funciona? Chromium es instanciado a través de un sistema denominado Mothership La Mothership configura y administra los procesos de Chromium reconfigurando dinámicamente los componentes del sistema
9. Intercepta los comandos OpenGL generados por la aplicación Reemplaza dinámicamente las librerías OpenGL nativas del sistema con una librería impostora propia
10. Toma el control de toda la renderización solicitada por la aplicación, transformando los comandos gráficos OpenGL en un stream de comandos gráficos ordenados parcialmente A través del Tile-Sort SPU convierte el stream entrante en un conjunto de streams paralelos que están espacialmente delimitados
11. El frame buffer es subdividido en secciones rectangulares que son renderizadas en paralelo por los miembros del clúster
13. VirtualGL VirtualGL es un paquete de código abierto que da a cualquier programa de visualización remota de Unix o Linux la habilidad de ejecutar aplicaciones OpenGL con completa aceleración 3D por hardware
14. VirtualGL emplea una técnica llamada “splitrendering” para forzar que los comandos OpenGL y los datos 3D sean redirigidos de la aplicación a un acelerador gráfico 3D en el servidor de aplicación, y solo las imágenes 3D renderizadas son enviadas a la máquina cliente
15. TurboVNC TurboVNC es una versión optimizada de VNC Ha sido adaptado para proporcionar rendimiento interactivo para video en pantalla completa y cargas de trabajo 3D Realiza renderización X11 del lado del servidor, solo envía imágenes al cliente
16. Usando VirtualGL con Chromium Utilizamos la configuración Sort-FirstRendering (Descomposición Imagen-Espacio) con Readback
17.
18. La actividad OpenGL y GLX es interceptada por el ChromiumAppFaker (CrAppFaker) para que el renderizado 3D pueda ser dividido entre los nodos de renderización. Una vez que cada nodo ha renderizado su sección de la imagen final, las secciones de la imagen son pasados de vuelta a un proceso Chromium Server (CrServer) que se está ejecutando en el Nodo 0
19. VirtualGL obliga al CrServer a dibujar en un Pbuffer, y VGL entonces se encarga de transmitir los píxeles desde el Pbuffer al servidor X del servidor de aplicación de la forma más eficiente posible
20. Usando VirtualGL y TurboVNC Un X proxy como TurboVNC actúa como un servidor X virtual, recibiendo comandos X11 desde la aplicación (y desde VirtualGL), renderizando los comandos X11 en imágenes, comprimiendo las imágenes resultantes, y enviando las imágenes comprimidas por la red a un cliente o clientes
21. Los X proxy como TurboVNC son no orientados a conexión, lo que significa que el cliente puede desconectarse y reconectarse desde cualquier máquina en la red, y la aplicación 3D se mantendrá en ejecución en el servidor VirtualGL envía imágenes 3D renderizadas al X proxy
22. Usamos VirtualGL con el X Proxy TurboVNC en el mismo servidor Esto permite a VirtualGL enviar sus imágenes 3D renderizadas al X proxy a través de la memoria compartida en lugar de enviarlas por la red
23.
24.
25. Conclusiones El factor que limita la gran capacidad de Chromium de dividir la carga de trabajo de renderización es la velocidad de los enlaces de comunicación entre los nodos de renderización y el nodo de aplicación
26. El funcionamiento de VirtualGL es óptimo ya que al combinarlo con Chromium duplica la velocidad de renderización obtenida solo con Chromium El uso de herramientas de software libre es muy conveniente ya que en la mayoría de casos se evitan costos de licenciamiento
27. La desventaja de utilizar estas herramientas radica en la falta de soporte técnico y el tiempo de investigación requerido para lograr el funcionamiento deseado
28. Recomendaciones Cambiar la infraestructura de red con tarjetas de red, cables y un switch de fibra óptica, con lo cual se superaría la limitación de la velocidad de los enlaces de comunicación entre los nodos de renderización y el nodo de aplicación, de esta forma se aprovecharía eficientemente la capacidad de Chromium
29. Cambiar las tarjetas aceleradoras 3D de 512MB de los nodos de renderización por tarjetas aceleradoras 3D de 1GB para aumentar la capacidad de renderización y disminuir el tiempo que se requiere para realizarlo
30. Investigar acerca de algún sistema operativo de dispositivos móviles como teléfonos inteligentes o PDAs (Personal Digital Assistant) que soporte el cliente de TurboVNC, ya que de esta forma se podría manejar remotamente aplicaciones 3D desde este tipo de dispositivos