Seguro que de estos días os suena (pues ya muchos sitios han hablado de ello) de una pequeña modificación al kernel que incrementaria el rendimiento. Bueno exactamente el rendimiento no, si no una mejora mediante la agrupación de procesos. Lee el primer comentario de este post para una explicación más detallada. Pues bien ese mismo efecto puede conseguirse simplemente con 4 lineas de scripting que un desarrollador de Red hat: Lennart Poettering, le envió a Linus Torvalds. Ha habido una acalorada discusión entre ellos, pero a mi esos minucias sin «demasiada importancia» ya no me interesan.
En principio para usar esta modificación bastaria con añadir:
if [ "$PS1" ] ; then mkdir -m 0700 /sys/fs/cgroup/cpu/user/$$ echo $$ > /sys/fs/cgroup/cpu/user/$$/tasks fi
Al final de nuestro fichero .bashrc y luego ejecutar como root:
mount -t cgroup cgroup /sys/fs/cgroup/cpu -o cpu
mkdir -m 0777 /sys/fs/cgroup/cpu/user
Esto en Ubuntu sin embargo no funciona (deberiamos cambiar /sys/fs por /dev), Asi que haremos lo siguiente:
Edita el fichero /etc/rc.local y añadimos (gedit /etc/rc.local):
mkdir -p /dev/cgroup/cpu mount -t cgroup cgroup /dev/cgroup/cpu -o cpu mkdir -m 0777 /dev/cgroup/cpu/user echo "/usr/local/sbin/cgroup_clean" > /dev/cgroup/cpu/release_agent
Al final de nuestro fichero .bashrc pondremos:
if [ "$PS1" ] ; then mkdir -m 0700 /dev/cgroup/cpu/user/$$ echo $$ > /dev/cgroup/cpu/user/$$/tasks fi
Y finalmente damos permisos de ejecucion:
sudo chmod +x /etc/rc.local
Tambien ejecutamos:
sudo gedit /usr/local/sbin/cgroup_clean
Le añadimos esto:
#!/bin/sh
rmdir /dev/cgroup/cpu/$*
guardamos, y convertimos este fichero a ejecutable:
sudo chmod +x /usr/local/sbin/cgroup_clean
y ahora ya reiniciamos o ejecutamos:
sudo /etc/rc.local
Respecto a la supuesta modificación, Los usuarios de desarrollo de Natty están muy contentos, pudieron insertar los cambios en la (proxima) versión 2.6.38 y ya llevan algun tiempo usandolo en los kernels de server.
Actualización | Gracias por los comentarios, la solución estaba incompleta y se puede encontrar via web Upd8. Lamento las molestias, me quede sin internet y no pude probarlo.
Fuentes | ElavDeveloper, Meneame
Este parche *NO* incremente el rendimiento. De ninguna forma.
Lo que hace el parche es implementar el agrupamiento de procesos directamente dentro del kernel y por TTY (terminal). Todo esto ya existe desde hace tiempo en Linux, sólo que había que hacerlo manualmente como el técnico de Red Hat ha hecho (esas cuatro líneas en el .bashrc).
Una explicación práctica:
Si ahora mismo estás mirando una película y tienes en una terminal (o asociado a ella) un número importante de procesos, digamos 29, la cantidad de cpu asignada al proceso de la película ahora mismo es de 1/30 por eso a veces parece que haya problemas de «responsiveness» en linux.
De lo que se encarga este parche (o la solución que se menciona en este blog) es de agrupar los procesos de la terminal de modo que ahora el vídeo recibe 1/2 de la CPU y el otro 1/2 va al grupo de procesos asociado a la terminal y por eso *parece* que haya más rendimiento.
Este parche no sirve *de nada* si no tienes procesos asociado a TTYs que consuman recursos de CPU. Tampoco sirve si el problema no es de CPU sino de I/O (entrada/salida).
Vamos, que para el usuario estándar de un ordenador no significa nada 😉
Saludos
PS: con «ps -e» podemos ver qué procesos tenemos asociados a TTYs y cuáles no (? significa que no está asociado a ninguna TTY)
A probarlo que tengo un ordenador algo viejo y a ver la diferencia jeje ya os contare
FUNCIONA tengo abierto 2 veces google chrome (en total 8 pestañas) con un video de youtube a 480p (es algo antiguo el portatil), 2 veces el nautilus, la terminal, el glxgears (a 60fps, bajadas cuando abro algo pero luego se reestablece).
PD:Piwi te falta algunas cosas para que funcione, para la gente que lo intente lo que falta esta aqui http://www.webupd8.org/2010/11/alternative-to-200-lines-kernel-patch.html
Se me olvida antes del parche el glxgears me iba a 30fps y cuando he iniciado me ha parecido que se ha iniciado mas rápido no le ha dado tiempo a la otra pantalla a mostrarse el plymouth (uso 2)
Una pregunta si no tienes el directorio local que tengo k hacer me eh kedado aki
josema@josema-desktop:/etc$ cd /local
bash: cd: /local: No existe el archivo o directorio
Hola, hay un error en el post, no es «cd /etc/local» sino «gedit /etc/rc.local»
Hay un error. Es el archivo /etc/rc.local y no un directorio /etc/local
gracias por la informacion… he quedado estancado en la misma parte que el amigo JoseManuel si alguien nos puede responder seria grandioso
gracias de antemano
He puesto el parche este y puedo decir que realmente es milagroso. He puesto dos películas en 1080p y sin relantizaciones 🙂 ya probaré despues con más
Desde /etc/local ejecutamos:
mkdir -p /dev/cgroup/cpu
mount -t cgroup cgroup /dev/cgroup/cpu -o cpu
mkdir -m 0777 /dev/cgroup/cpu/user
en esta parte estoy estancado… tengo que poner esas partes en el archivo rc.local o en una carpeta llamada local hacer esas lineas??
No llego a entender muy bien como se aplica esto en Ubuntu 10.04lts, ufff tengo la sensación que no lo estoy haciendo bien 😦 y que me lo cargo o algo … ayuda porfa. 😦
Francisco, este post tiene muchos errores. Pásate por el link que ha puesto afsoons.
Muchas gracias voy a echarle un vistazo. 😀
no le entiendo al tutorial, no se donde se empieza y ni haciendo q
no le entiendo al tutorial, no se donde se empieza y ni haciendo q
hola, alguno lo podria explicar paso a paso como hacerlo, por que no esta muy claro.
gracias
a mi también me funcionó lo del link externo, gracias por el dato y por el post!
tb aqui:
http://taringa.net/posts/linux/8024634/Alternativa-al-parche-de-200-lineas-_Ubuntu_edit_.html
No sabes si este parche será lanzado de forma oficial por parte del equipo de desarollo de Ubuntu?
Gracias.
si es aprovado, que parece que si, sera incluido en la proxima version del kernel.
yo no he comensado y ya me dio un error
mkdir: no se puede crear el directorio «/sys/fs/cgroup/cpu/user/5596»: No existe el archivo o directorio
bash: /sys/fs/cgroup/cpu/user/5596/tasks: No existe el archivo o directorio
alguna sugerencia?
depende, si usas ubuntu tienes que usar la alternativa que se comenta mas abajo. en ubuntu no existen esos directorios.
Lo ideal seria crear un script instalador. empaquetarlo como .deb y asi ya todos lo podriamos instalar sin problemas.
pero 😦 yo no tengo tiempo ahora. a ver si alguien se anima.
ya se ha creao deb en http://www.webupd8.org/2010/11/alternative-to-200-lines-kernel-patch.html
al final del articulo
pd: a mi si me ha incrementado el rendimiento, tb viendo videos en flash a 1080 en pantalla completa en youtube, antes cuando keria pasar de segundos se «petaba», ahora va mas rapido.
segun hay que bajar los paquetes deb de kernel, pero no seria mas practico crear un script que genere esas instrucciones? alguien con conocimiento de programacion para los comunes mortales?
se agradeceria.
esto es un EPIC FAIL xD