¿De que se trata esto?
En los últimos días, se ha incluido en el Kernel Linux un pequeño parche de poco mas de 200 líneas que mejora de una forma muy sostenible el tiempo de respuesta de las aplicaciones de escritorio, ofreciendo una experiencia de usuario mucho mas suave y fluida. Esta modificación ha sido creada por Mike Galbraith, y está siendo revisada por Linus Torvalds. En palabras del propio Linus:
Tengo que decir que estoy (agradablemente) sorprendido por lo pequeño que este parche ha acabado siendo, y como no es ni intrusivo ni feo en ningún modo.
También estoy contento con lo que logra hacer con el rendimiento interactivo. Tengo que admitir que mi caso de prueba es realmente trivial (leer email en un navegador web, desplazarme con el scroll un poco, además de hacer un ‘make -j64′ en el núcleo al mismo tiempo), pero es un caso de prueba que es muy relevante para mí. Y la mejora es impresionante.
Es una mejora para cosas como el scroll, pero lo que he descubierto que es más interesante es cómo parece que hace que parezca que las páginas web se carguen mucho más rápido. Puede que eso no debiera ser sorprendente, pero siempre he asociado eso con el rendimiento de la red. Pero está claro que hay carga de CPU cuando cargamos una nueva página web y desde luego mucha más cuando cargamos más de 50 al mismo tiempo, algo que provocará que la CPU se quede sin recursos en el proceso de carga, y que probablemente también provoque que las peticiones HTTP no se procesen lo suficientemente rápido.
Así que creo que este es desde luego uno de esos parches con “mejoras reales”. Buen trabajo. La planificación en grupos se convierte de algo “útil para ciertas cargas específicas en el servidor” a “esta es una característica alucinante”.
Acá tienen al artículo original de Phoronix, con dos videos comparando la mejora: http://www.phoronix.com/scan.php?page=article&item=linux_2637_video&num=1
Como utilizarlo sin aplicar el parche
Existe un método para obtener los mismos resultados que obtendríamos con este parche, sin tocar nuestro kernel y paso a detallarlo:
Fuente: http://www.muylinux.com/2010/11/19/%C2%BFrecordais-el-milagroso-parche-de-las-200-lineas-de-codigo-podeis-lograr-lo-mismo-en-2-minutos-sin-parchear-el-kernel
Si nuestra distribución NO es Ubuntu
Añadir las siguientes líneas a ~/.bashrc
Código:
if [ "$PS1" ] ; then
mkdir -m 0700 /sys/fs/cgroup/cpu/user/$
echo $ > /sys/fs/cgroup/cpu/user/$/tasks
fi
Y luego ejecutar dos comandos como superusuario:
Código:
mount -t cgroup cgroup /sys/fs/cgroup/cpu -o cpu
mkdir -m 0777 /sys/fs/cgroup/cpu/user
Si utilizamos Ubuntu (en el artículo no aclara, pero supongo que sus derivadas también)
Hay que realizar un par de pasos mas, primero que nada, debemos añadir los siguientes comandos en nuestro fichero /etc/rc.local (abrirlo con sudo gedit /etc/rc.local), y justo encima de la línea “exit 0” añadir lo siguiente:
Código:
mkdir -p /dev/cgroup/cpu
mount -t cgroup cgroup /dev/cgroup/cpu -o cpu
mkdir -m 0777 /dev/cgroup/cpu/user
echo "1" > /dev/cgroup/cpu/user/notify_on_release
echo "/usr/local/sbin/cgroup_clean" > /dev/cgroup/cpu/release_agent
Y convertir el fichero en ejecutable:
Código:
sudo chmod +x /etc/rc.local
Ahora tendremos que añadir lo siguiente en nuestro ~/.bashrc file (para editarlo: gedit ~/.bashrc):
Código:
if [ "$PS1" ] ; then
mkdir -m 0700 /dev/cgroup/cpu/user/$$
echo $$ > /dev/cgroup/cpu/user/$/tasks
fi
Ahora ejecutamos este comando:
Código:
sudo gedit /usr/local/sbin/cgroup_clean
Y en el fichero que salga para editar añadimos lo siguiente:
Código:
#!/bin/sh
rmdir /dev/cgroup/cpu/$1
Ahora salvamos el fichero y lo convertimos en un ejecutable con el comando siguiente:
Código:
sudo chmod +x /usr/local/sbin/cgroup_clean
Y por último tendremos que reiniciar la PC, o bien ejecutar a mano el fichero /etc/rc.local. Para esto último:
Código:
sudo /etc/rc.local
DISCLAIMER : Aún no lo probé, asi que si algún valiente se anima, que nos cuente en este thread que tal salió . En cuanto vuelva a casa lo pruebo a ver si es tan maravilloso como dicen.
Saludos!