iniqua

9Feb/102

¿Rendimiento de MAC con Linux?: Linux RT

Si conocéis a alguien que tenga un MAC, o si vosotros mismos lo tenéis, posiblemente una de la frases que oigáis con mayor frecuencia sea relacionada con el tema del rendimiento: y realmente es cierto.

Seguramente no seréis el primero, ni el último, que se enganche al “fruto del árbol prohibido”. No solamente por su impecable diseño, sino por su OS X y su sorprendente rendimiento. ¿Que me diríais si os dijera que podríais conseguir (o al menos aproximarlo bastante) ese rendimiento que os ofrece la compañía de la manzana en vuestro GNU/Linux?. Pues sí, es posible. Veamos cómo:

La solución estriba, principalmente (obviando las mejoras hardware), en el kernel del sistema. No, no pensamos hablaos de que compiléis vuestro kernel para ganar un mayor rendimiento, ni que debéis de ajustar los parámetros de compilación, ni nada semejante. Os vamos ha hablar del concepto de los kernel's de tiempo real y cómo estos nos ayudarán a equipara el rendimiento de los tan envidiados MAC .

Un poco de teoría (solo un poco)

El concepto de tiempo real se basa en que las tareas deben de hacerse lo antes posibles y evitar al máximo las esperas para aquellas que son críticas. Esto lo podemos observar muy claramente en, por ejemplo, el sistema de control de un misil. Éste lleva un sistema embebido que ha de tomar una serie de decisiones con una criticidad muy alta. Si en un momento dado necesita mover un flag no puede esperarse a que finalice una tarea que se encuentre pendiente. Como se suele decir: lo necesita para ayer.

Para poder lograrlo debemos conseguir predecir con la máxima exactitud posible cuanto tiempo va a tardar en ejecutarse un proceso. Cuanto más exacto sea el cálculo mejor podremos organizar las tareas a ejecutar y asignar los recursos a aquellas más prioritarias.

Existen varias distribuciones de GNU/Linux destinados exclusivamente a los sistemas de tiempo real: LynxOX, VxWorks, QNX...

Y ahora la pregunta que os estaréis haciendo: ¿De que me vale a mi todo eso?. Muy sencillo. Si consiguiéramos que nuestra distribución de GNU/Linux favorita se comportase con uno de estos sistemas, los tiempos de respuesta serían mínimos y conseguiríamos una interactividad increíble.

¿Es esto posible?: Sí. Y con unos resultados espectaculares. ¿Es muy complicado?. No, es tremendamente sencillo. ¿Y porqué no lo he hecho antes?: Pues porque antes no nos leías :-P .

¿Cómo convertir nuestro GNU/Linux en un sistema de “tiempo real”?

Los pasos a seguir son muy sencillos. Tan solo hemos de cambiar el planificador al kernel de nuestro sistema.

Para aquellos que no lo sepan, el planificador es el encargado de gestionar los procesos de nuestros máquina y asignarles la CPU para que se ejecuten. Para ello puede priorizar éstos procesos por orden de criticidad, tiempo que llevan esperando ejecutarse, cantidad de código a ejecutar, etc.

Como nota adicional nos gustaría mencionar que este planificador es obra del hacker húngaro Ingo Molnár. También es el creador de otros planificadores para el kernel de GNU/Linux como CFS, que actualmente viene por defecto en prácticamente todas las distribuciones y así como en las fuentes vanilla .

Hay que recalcar que este planificador no viene por defecto con el kernel de GNU/Linux: ni con las fuentes vanilla oficiales, ni con las de Ubuntu (Debian).

Podemos hacerlo de dos maneras: parcheando y compilando el kernel manualmente o instalando una imagen ya compilada. Nosotros solamente lo haremos de la forma sencilla, que es instalarlo desde los repositorios de Ubuntu (o Debian).

El paquete a instalar se llama (en Ubuntu): “linux-rt”. Éste es un meta-paquete que contiene una imagen del kernel y sus cabeceras (necesarios para compilar ciertos módulos del sistema).

Por lo tanto escribimos el comando:

sudo aptitude install linux-rt

Cuando éste acabe ya tendremos nuestro nuevo kernel listo para funcionar. Tan solo nos queda reiniciar y dejarnos sorprender.

Nosotros hemos hecho nuestras pruebas de rendimiento con resultados muy buenos, pero nos gustaría que lo probaseis y nos diérais vuestra opinión.

PDF Printer    Enviar articulo en formato PDF a
Comments (2) Trackbacks (0)
  1. Buenas dani, ayer probé el rendimiento del real time, lo probé de la siguiente manera:

    en 4 escritorios abrí:
    en el 1: el monitor del sistema, un firefox con 18 pestañas y una consola compilando el kernel
    en el 2: otro firefox con 18 pestañas 3 instancias del openoffice y el virtualbox con win XP
    en el 3: netbeans y eclipse
    en el 4: reproduciendo una peli flash (un documental XP), y con el rithmbox escuchando musica

    con el kernel rt se nota que no hay perchones ni se encaja, siempre
    responde al raton y a seguir abriendo aplicaciones, pero el sonido se
    empezo a ralentizar y oirse mal y la peli daba perchones, en el modo
    ‘ver todos los escritorios de compiz’ (tecla windows+e) se veia todo
    funcionando bien

    con un kernel ‘normal’ (compilado para core2 con interrupciones a 1000 y scheduler ‘CFQ’) cuando seguia abriendo aplicaciones para cargar el
    sistema se iba quedando pillado, se colgaban durante unos segundos los
    programas (el compiz los deja en blanco y negro) y las respuesta no era
    tan inmediata al abrir mas aplicaciones, pero una buena es que el sonido nunca se llegó a entrecortar.
    Como resumen, si le metes caña al equipo con trabajo, mucho mejor el
    real-time porque siempre puedes interaccionar con el y a su chano-chano
    va tirando, y lo del sonido de momento creo que pudo ser algo ocasional
    luego probaré de nuevo, pero si vuelve a hacer lo mismo, ya puedo
    adivinar que tipo de tareas sacrifica para darle mejor respuesta al
    usuario

    Esa es mi experiencia que ha sido lo mas experimentalmente cutre que te
    puedes encontrar jejej
    Un saludo

  2. Hola Ángel,

    Ciertamente la reproducción multimedia no es uno de los puntos fuertes del planificador de Molnar. Esto es debido a que intenta ser lo más equitativo posible a la hora de asignar la CPU.

    Para corregir esto puedes instalar un pequeño script que te prioriza de forma automática todas las aplicaciones multimedia con el fin de evitar estos efectos negativos. Las instalación es tan sencilla como hacer un “apt” (Debian/Ubuntu):

    aptitude install rtirq-init

    Si estás interesado también en compilarte manualmente el kernel, aplicando los parches para el planificador de tiempo real, puedes encontrar una explicación detallada en la URL:

    http://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO

    Un saludo-


Leave a comment


No trackbacks yet.

Get Adobe Flash playerPlugin by wpburn.com wordpress themes