Hace unos días se propuso un pequeño cambio en Linux que logra una importante mejora cuando el sistema se ve sujeto a grandes demandas del procesador. Se trata de sólo unas 200 líneas que cambian la forma en que estamos acostumbrados a experimentar la respuesta del escritorio bajo estas condiciones, y hasta el mismísimo Linus […]
Hace unos días se propuso un pequeño cambio en Linux que logra una importante mejora cuando el sistema se ve sujeto a grandes demandas del procesador. Se trata de sólo unas 200 líneas que cambian la forma en que estamos acostumbrados a experimentar la respuesta del escritorio bajo estas condiciones, y hasta el mismísimo Linus se encuentra entre los sorprendidos por su limpieza y sobre todo, por su efectividad.
Linux en general se comporta bien realizando varias tareas al mismo tiempo, pero en sistemas de escritorio el uso intensivo de CPU puede hacer que las aplicaciones típicas se sientan más lentas. Por ejemplo si se está codificando un video, compilando una aplicación o actualizando el sistema, aplicaciones mundanas como un navegador o la reproducción de video se verán afectadas, causando que el usuario sienta que el sistema está más lento.
El cambio propuesto modifica la forma en que se distribuye la CPU entre las distintas tareas que está corriendo el sistema, de tal forma que esta distribución no deje sin recursos a una aplicación cuando otra está solicitando intensivamente el procesador. No se trata de que el sistema corra más rápido, sino de que las aplicaciones no se sientan lentas bajo estas condiciones.
Básicamente lo que hace el cambio es agrupar las tareas para que un proceso que levanta varios hilos de ejecución compita de igual forma con otra aplicación que también requiere de la atención del procesador. Esta agrupación se crea al vuelo de forma automática, sin que el usuario tenga que hacer nada especial.
Este cambio será percibido por todos los usuarios de escritorio, ya hay varios alabando el cambio, incluyendo a Linus Torvalds:
Sí, tengo que decir que estoy (felizmente) sorprendido por lo pequeño que termina siendo el parche, y cómo no es ni intrusivo ni feo […] Es una mejora en cosas como el desplazamiento suave (scrolling), pero donde lo he encontrado más interesante es cómo pareciera hacer que las páginas web cargaran más rápido […] Pienso derechamente que este es uno de esos parches que significan una real mejora. Buen trabajo. La agrupación de tareas va desde «útil para algunos casos» hasta «esto es una característica asesina».
Michael Larabel de Phoronix, el sitio que presentó este trabajo al público general, preparó un par de videos en donde se puede ver el antes y el después de aplicar el cambio. Si bien se trata de un caso extremo ya que usa una máquina bastante potente, ilustra claramente la contundencia del cambio, y otros usuarios ya han confirmado que se percibe perfectamente en otros escenarios con aplicaciones y hardware más comunes.
La prueba consiste en crear un proceso intensivo en CPU como el compilar el kernel con 64 tareas en paralelo, al mismo tiempo que se realizan tareas «mundanas» como reproducir un video en 1080p, navegar por la web y ejecutar una aplicación OpenGL simple. En el primer video se puede ver que la reproducción del video se vuelve imposible, mientras que las otras aplicaciones tienen problemas en responder.
En el segundo video, con el parche aplicado, se ve que a pesar de estar corriendo la tarea intensiva (compilación con 64 tareas), la reproducción del video en 1080p no se ve afectada, y el resto del sistema se puede seguir usando como si nada.
Link: The ~200 line Linux kernel patch that does wonders (Phoronix.com)