[TIP] Boost de velocidad en linux (sched_autogrup) y como aplicarlo sin parchear

Iniciado por j4np0l, 19 Noviembre 2010, 17:11 PM

0 Miembros y 1 Visitante están viendo este tema.

j4np0l

Buenas gente, esta noticia ya salio hace unos días, y hace unos instantes estuve leyendo una forma de aplicar este boost de velocidad sin tener que esperar al parche en el kernel :)

¿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

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:

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:

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:

sudo chmod +x /etc/rc.local

Ahora tendremos que añadir lo siguiente en nuestro ~/.bashrc file (para editarlo: gedit ~/.bashrc):

if [ "$PS1" ] ; then

mkdir -m 0700 /dev/cgroup/cpu/user/$$

echo $$ > /dev/cgroup/cpu/user/$/tasks

fi


Ahora ejecutamos este comando:

sudo gedit /usr/local/sbin/cgroup_clean

Y en el fichero que salga para editar añadimos lo siguiente:

#!/bin/sh

rmdir /dev/cgroup/cpu/$1


Ahora salvamos el fichero y lo convertimos en un ejecutable con el comando siguiente:

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:

sudo /etc/rc.local


DISCLAIMER  ;D: 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!


Exe U.

Gracias por el aporte!! cuando vuelva lo pruebo de cabeza \mm/ no sin antes hacer un backups por si las moscas xD

Salu2
Archlinux + DWM | /blog

Exe U.

Lo probe en archlinux en un pentiumIII y sinceramente no noto mejoria alguna =/ probe reproduciendo un video con mplayer, tener 10 pestañas de opera funcionando y estar complilando y nada todo parece andar como siempre quizas haya una un leve aumento de velocidad pero es imperceptible.

Tube que seguir la opcion para ubuntu porque la primera no funcioba. Voy a esperar a actualizar el kernel.

Salu2
Archlinux + DWM | /blog

Uxio

Es impresionante que un parche tan pequeño consiga tanto rendimiento.

Supongo que se meterá ya de serie en próximas versiones del kernel.

j4np0l

Cita de: Exe U. en 22 Noviembre 2010, 02:17 AM
Lo probe en archlinux en un pentiumIII y sinceramente no noto mejoria alguna =/ probe reproduciendo un video con mplayer, tener 10 pestañas de opera funcionando y estar complilando y nada todo parece andar como siempre quizas haya una un leve aumento de velocidad pero es imperceptible.

Tube que seguir la opcion para ubuntu porque la primera no funcioba. Voy a esperar a actualizar el kernel.

Salu2

Lo probé en Ubuntu 10.04 usando VirtualBox y tampoco noté nada, en una de esas lo que no funciona bien es la alternativa para lograr el mismo efecto que el patch del kernel.

En los videos de Phoronix se nota la diferencia, y hasta Linus se sorprendió bastante después de hacer un par de pruebas (puse en castellano la traducción de un mail que envió en la mail list del kernel).

La otra es tratar de animarse y aplicar el parche....o esperar a que lo suban en una futura versión  :P (seguramente la 2.6.38)

Uxio

Bueno, es que realmente lo que es VirtualBox, para hacer el apaño vale, pero lo que es la aceleración gráfica va mal aún.