Brain Fuck Scheduler Kernel

Con la actual tendencia de la inserción de los procesadores multi-núcleo tanto en el escritorio como en los dispositivos móviles como los notebook’s, se tiende a pensar cada vez mas que los sistemas funcionarán mucho mas rápidos que antes pero, ¿El software de los diferentes sistemas operativos estará diseñado para soportar tales cambios a nivel de Hardware (rapidez)?.
Para ello, realizaré un pequeño review en base a uno de los tantos lanzadores del Kernel de Linux llamado BFS.

¿Que es Brain Fuck Scheduler (BFS)?

Hace un tiempo atras, Con Kolivas regresó a la escena del Kernel de linux, tras partir del desarrollo por mas de 2 años. El por otra parte, siguio continuando con la contribución de grandes aportes hacia lo que eran los lanzadores antiguos de linux, hasta que retornó con su lanzador propio llamado BFS.
BFS es un nuevo lanzador para el Kernel de Linux, que esta diseñado para tener una performance optima en base al hardware que muchos de nosotros tenemos, mayoritariamente en los Clientes de linux de escritorio no para data centers con computadores con mas de 20 o 30 cores de procesamiento.
La idea principal del lanzador BFS es que, fue diseñado para ofrecer una «Exelente interactividad con la baja latencia de los CPU’s». Por otra parte Con Kolivas dejo en su archivo de FAQ page lo siguiente:

«BFS viene de la descomposición de Brain Fuck Scheduler. Este fue diseñado para hacer una mirada hacia atraz solamente, creado para la mayoria de las maquinas con especificaciones bajas. En definitiva es un lanzador orientado a aplicaciones de escritorio, con una extremada latencia baja para una excelente interactividad, diseñado para que «calcule» con buenos resultados una priorodad de disitribucion escalablre con normales niveles de carga

¿Por qué «Brain Fuck» y no otro?
Con Kolivas en su archivo FAQ, señala algunos puntos de porque usar BFS:
  • Porque esto deja afuera todas las cosas buenas conocidas en cuanto a como diseñar un moderno lanzador de tareas, junto con tener una capacidad escalable.
  • Porque esto es ridiculamente simple.
  • Porque el perfomance es ridiculamente bueno para ser tan simple.
  • Porque está diseñado de tal manera que el mainline del kernel nunca van a estar interesados en el, de lo cual es como me gusta.
  • Porque esto hará que la gente se siente y tome nota de cualés son los problemas en el diseño actual (CFS).
  • Porque esto deja afuera cualquier filosofia que diga que un lanzador lo puede hacer todo de manera genérica.
  • Porque esto actualmente sugiere que mas de una CPU significará una mejor latencia.
  • Porque para haber trabajado en esto de nuevo se me hizo mierda la cabeza trizas la cabeza.
Benchmark

Para hacer la comparación entre el actual lanzador CFS y el nuevo lanzador BFS, se procederá a utilizar la herramienta de latt.c (la cual puede se descargada desde aca).

¿Que es latt.c?

Latt es una herramienta programada en C para hacer benchmark a los diferentes lanzadores de kernel’s. Fue escrito por el Kernel Hacker «Jens Axboe» y con el impulso de Ingo Molnar y Con Kolivas. Esta herramienta de latencia se usa en base al tiempo de hacer una compresión de tipo gzip de manera aleatoria a los datos en un proceso «n». 

Una vez compilada la utilidad para hacer el benchmark, se procederá a crear un script simple el cual ira haciendo algunas iteraciones para registrar en un archivo de texto el tiempo en usec (micro segundos) de las repeticiones ascendentes por cliente, en este caso en particular reproduciendo la película de Big Buck Bunny en los formatos:

– 480p
– 720p

Figura 1 «Script Latt.c»
Fuente:[Elaboración Propia]
Kernel Usados:

$uname -r
2.6.39-ck <———– Kernel ya parchado con el lanzador de Con Kolivas.

$uname -r
2.6.39-x86-64 <—–Kernel normal para procesadores de 64 Bits.

Hardware:

Figura 2 «Hardware Test»
Fuente:[Elaboración Propia]

En cuanto al Hardware , se cuenta con una máquina de pruebas como se puede ver en la figura 2, de un procesador corei5 @ 2.3GHz corriendo bajo los diferentes Kernel’s señalados anteriormente bajo la distribución Archlinux.
Figura 3 «BFS VS CFS – 480p»
Fuente:[Elaboración Propia]

Como se puede apreciar en la figura 3, mientras mas procesos de ejecución tenga el vídeo de Big Buck Bunny en resolución de 480p con CFS, se puede ver que el tiempo en Usec aumenta en comparación con BFS. El cambio entre CFS y BFS no se ve como algo tan radical, pero notablemente se ve mucho mas ligero de carga usar BFS mediante el tiempo de ejecución.

Figura 4 «BFS VS CFS – 720p»
Fuente:[Elaboración Propia]

Por otro lado como se puede apreciar en la figura 4, mientras mas procesos de ejecución tenga el vídeo de Big Buck Bunny en resolución de 720p con CFS, se puede ver que el tiempo en Usec aumenta en comparación con BFS. Como paso también con la reproducción de vídeo en 480p, en esta prueba tampoco se vio como muy afectada la calidad a medida que aumentaron los procesos hasta llegar a 25.

Conclusiones

El lanzador de BFS por Con Kolivas, refleja en parte lo que promete que es «una correcta ejecución de procesos en base a la cargabilidad del sistema con una baja latencia» en comparación con el actual lanzador genérico de la mayoría de los kernel’s que es CFS. Esto se pudo ver en parte reflejado con la reproducción de diferentes formatos de la película de Big Buck Bunny, en cuanto a reproducción simultanea de dicho archivo. La diferencia no fue extrema como se esperaba pero sin lugar a dudas BFS está rindiendo un poco mas que el actual CFS.
  1. #1 por iamgabo el septiembre 9, 2012 - 1:24 am

    Genial explicación. Lo vengo usando en Archlinux junto con e4rat y se nota una diferencia en cuanto al kernel genérico.

Deja un comentario