martes, 22 de julio de 2014

Proyecto

Multipuesto: cómo hacer que varias personas utilicen una misma PC al mismo tiempo

¿Alguna vez pensaste en el enorme desperdicio de recursos que significa, por ejemplo en una oficina, tener varias máquinas modernas funcionando apenas para abrir aplicaciones básicas de escritorio? Una solución podría ser “reciclar” compus y utilizar máquinas más antiguas. Claro, esto seguramente no será del agrado de muchos. No obstante, existe una segunda solución, menos conocida, que puede mantener a todos contentos.Ayer pensaba precisamente sobre este tema. Con el enorme avance de la tecnología, una interesante alternativa podría ser conectar varios monitores, mouses y teclados a una misma PC, permitiendo que todos los usuarios utilicen óptimamente los recursos de esa PC y generar así un ahorro económico importante y una reducción de la huella de carbono. Además de encontrar el modo de conectar todo, queda la pregunta de cómo hacer para que el sistema operativo funcione en forma independiente para cada uno de los usuarios.
Veamos qué puede hacer Linux para ayudarnos. :)

Introducción

Con el creciente aumento de capacidad del hardware, tanto en procesadores como memorias, más el vertiginoso avance y desarrollo de los sistemas GNU/Linux, cada vez más robustos y con un mejor manejo de los recursos, en una computadora puede hacerse un alto número de tareas sin que se vuelva lenta. Sin embargo, al usar la configuración estándar de una PC de escritorio, únicamente un usuario puede usar la computadora a la vez, limitando la efectividad del sistema pues permanece desocupado la mayor parte del tiempo, mantiene su recursos ociosos.
Con la configuración multipuesto, varios usuarios pueden compartir los recursos de la misma computadora, así que se estaría usado un mayor porcentaje de su capacidad total, teniendo así un mejor aprovechamiento del sistema.
Por ejemplo, en el esquema tradicional, si alguien está usando únicamente un navegador de páginas web o escribiendo una carta en un procesador de textos, o trabajando con una hoja de cálculo, o con un programa de facturación, inventario, o contabilidad, el equipo se desaprovecha, al estar gran parte de la capacidad del sistema sin uso. Pero con la configuración multiterminal, otras personas podrán usar los recursos que de otra manera estarían ociosos.
Sin embargo si alguien está usando todo los recursos de la máquina (con juegos 3-D o algo así), los otros usuarios tendrán un sistema muy lento.
Otra gran ventaja que viene con la multiterminal es el precio: no es necesario comprar diferentes placas base, microprocesadores, memorias RAM, discos duros, carcasas, reguladores de voltaje, y otros componentes por cada usuario. Únicamente se necesita comprar una buena compu. Normalmente comprar un micro-procesador rápido cuesta mucho menos que comprar varios más lentos.

Historia

En los años 1970, era muy corriente conectar múltiples terminales, e incluso terminales gráficos, a un solo computador central (mainframe).
Sin embargo, la idea de usar la interface más contemporánea X11 para soportar múltiples usuarios apareció en 1999. Fue implementada por un brasileño llamado Miguel Freitas, usando el sistema operativo Linux y el sistema gráfico X11 (en ese momento mantenido por XFree86). La manera en que lo hizo Freitas fue un parche en el servidor X para ejecutar muchas instancias de X al mismo tiempo, de tal manera que cada una capturara eventos de ratón y teclado específicos y el contenido gráfico. Este método recibió el nombre del multiseat o multiterminal.
Después de Freitas, otras soluciones aparecieron en 2003, como las de Svetoslav Slavtchev, Aivils Stoss y James Simmons que trabajaron en el acercamiento a evdev and faketty, modificando el núcleo Linux y permitiendo a más de un usuario usar independientemente la misma máquina. En ese tiempo, el Linux Console Project también propuso una idea para usar múltiples consolas independientes y luego múltiples teclados y ratones independientes en un proyecto llamado “Backstreet Ruby”. Backstreet Ruby es un parche del kernel Linux. Fue portar hacia atrás al Linux-2.4 el árbol de kernel de Ruby. El objetivo de los desarrolladores de Linux Console fue mejorar y reorganizar la entrada, la consola, y los subsistemas del framebuffer en el kernel Linux, para que pudiesen trabajar independientemente uno del otro y permitir la operación multi-escritorio. La idea de Backstreet Ruby nunca fue terminada.
En 2005, el equipo de C3SL (Centro para la Computación Científica y el Software Libre), de la Universidad Federal de Paraná en Brasil, creó la solución basada con servidores X anidados, como Xnest y Xephyr. Con esta solución, cada servidor X anidado corre en cada pantalla de un servidor X anfitrión (por ejemplo Xorg) y una modificación en los servidores anidados les permite tener la exclusividad de cada conjunto de ratón y teclado. Estas soluciones eran las más usadas hoy en día debido a su estabilidad. En 2008, el grupo C3SL lanza el Multiseat Display Manager (MDM) para facilitar el proceso de la instalación y configuración de una caja multiseat. También en 2008, este grupo concibió un LiveCD para propósitos de pruebas.

Requerimientos

Es importante tener una compu con una buena placa base, una CPU potente y con buena cantidad de memoria (512 MB o más). Esto dependerá del número de puestos que se deseen conectar.
Para que varios usuarios puedan trabajar en una compu se necesitan conectar a éste varios monitores, teclados y ratones. Por ejemplo, para formar una multiterminal de cuatro estaciones (para 4 usuarios), se requieren 4 monitores, 4 teclados y 4 ratones.
Cada monitor necesita ser conectado a una salida de video. Algunas tarjetas de video tienen múltiples salidas y soportan varios monitores. Adicionalmente, se pueden instalar en la compu varias de estas tarjetas de video, pero la mayoría de las máquinas modernas solo tienen un slot PCIe o AGP, así que, en general, estas tarjetas deberán ser PCI.
La mayoría de las computadoras tienen solo un conector PS/2 para el teclado y otro para el ratón, así que para conectar varios teclados y ratones se debe hacer mediante conectores USB y HUBs USB.
En resumen:
  • Compu con una placa base, un CPU potente, y con una buena cantidad de memoria RAM.
  • Disco duro.
  • Varias placas de video PCI/AGP/PCI-E.
  • Varios teclados PS/2 / USB.
  • Varios ratones PS/2 / USB.
  • Opcionalmente, varias tarjetas de sonido.
  • Distribución de GNU/Linux favorita.
  • Xorg 6.9 o superior.

Beneficios

Una configuración multiterminal tiene importantes ventajas, entre ellas:
  • Ahorro de espacio y costos en computadores.
  • Ahorro en licencias de software.
  • Mejor aprovechamiento de los recursos de computación.
  • Menor consumo de energía.
  • Menor costo de mantenimiento.

Usos

Un computador multipuesto puede usarse en lugares donde hayan varias personas trabajando cerca una de la otra, como sucede en laboratorios de computación, cibercafés, cubículos en una oficina, departamentos de atención al cliente, etc. Algunos de estos lugares son:
  • Escuelas.
  • Universidades.
  • Oficinas.
  • Cibercafés.
  • Bibliotecas.
  • Hospitales.
  • Hogares.

Implementación

Actualmente, hay varias formas de hacer multiterminales, y nuevas maneras están siendo constantemente desarrolladas. No existe la “mejor versión”, pero algunas versiones son mejores que otras.

GNU/Linux

En los sistemas operativos tipo Unix, como GNU/Linux, la interacción con el usuario es efectúa por el X Window System. Este sistema está basado en la arquitectura cliente-servidor, donde el cliente envía peticiones al servidor y recibe eventos de los dispositivos de entrada (teclados y ratones). Los servidores X tienen la definición de recurso, como puede ser un dispositivo de entrada o una ventana, que son dados a sus clientes. Estos recursos están asociados a una pantalla, la cual pertenece a un usuario. Por lo tanto, una multiterminal basada en GNU/Linux debe proveer una pantalla por cada usuario.
El servidor Xorg, la más reciente implementación del servidor X, no tiene soporte para múltiples pantallas. Este sigue el modelo del computador personal, el cual supone únicamente un usuario a la vez. Su entrada de datos esta implementada sobre la entrada estándar del Kernel, llamadas terminales virtuales (VT). Éstas reciben tal nombre debido a que simulan los viejos métodos de entrada de los antiguos Mainframes. El VT esta totalmente implementado usando software, simulando un TTY, un dispositivo que estaba conectado a través de puertos seriales. El núcleo Linux soporta múltiples terminales, pero únicamente pueden recibir eventos de un teclado a la vez. Si más de un teclado está conectado a la computadora, los eventos serán enviados al VT activo. Eso quita la posibilidad de ejecutar 2 o más servidores X, debido a que únicamente pueden activar a un servidor a la vez, incluso si éstos usan distintas tarjetas de video. Para resolver estos problemas, se han creado varias soluciones diferentes, mencionadas aquí en orden cronológico:
La más usadas son la faketty y Xephyr. La solución con Xephyr es independiente del hardware, mientras que la faketty únicamente trabaja con un conjunto más restringido de tarjetas de vídeo como las de NVIDIA y SiS.
Si estás interesado/a en implementar el sistema multipuesto usando Linux te recomiendo muy especialmente leer el manual de Xephyr, tal vez la mejor alternativa hasta el momento. Además, tenemos la suerte de que ¡este manual está enteramente en español!

Windows

Para los sistemas operativos Windows 2000, XP y Vista, existen varios productos comerciales que permiten la implementación de configuraciones multiseat para dos o más puestos de trabajo. Dentro de estos productos se encuentran ASTER, BeTwin, y SoftXpand.

Casos de éxito

Paraná Digital project
Uno de los éxitos de las multiterminales está pasando en Paraná Digital Project, la cual está creando un laboratorio en 2.000 escuelas públicas en el estado de Paraná, Brasil. Más de 1.5 millones de usuarios serán beneficiados cuando el proyecto termine, y habrán 40.000 terminales. Los laboratorios tendrán multiterminales de 4 cabezas corriendo Debian. El costo de todo el hardware es 50% menos que el precio normal, además no habrá costo alguno en software. Este proyecto lo desarrolla el Centro de Computação Científica e Software Livre (C3SL). El proyecto no ha concluido aún, pero los beneficios de las multiterminales son realmente grandes.
Instalaciones notables
En febrero de 2009, Userful anunció el despliegue de virtualización de escritorio más grande del mundo, con 356.800 puestos de escritorio en escuelas por todo Brasil. Este proyecto es una implementación comercial de multiseat basada Linux.
NComputing proporcionó 180.000 puestos para los estudiantes de educación primaria en la República de Macedonia.