El parche «milagro» de Linux de 200 lineas implementado en 4 lineas de Bash

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

36 Respuestas to “El parche «milagro» de Linux de 200 lineas implementado en 4 lineas de Bash”


  1. 1 Damnshock noviembre 20, 2010 a las 11:07 am

    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)

  2. 2 afsoons noviembre 20, 2010 a las 11:29 am

    A probarlo que tengo un ordenador algo viejo y a ver la diferencia jeje ya os contare

  3. 5 Jose Manuel noviembre 20, 2010 a las 12:41 pm

    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

  4. 6 ChineseGeek noviembre 20, 2010 a las 1:46 pm

    Hola, hay un error en el post, no es «cd /etc/local» sino «gedit /etc/rc.local»

  5. 7 Francisco T. noviembre 20, 2010 a las 1:52 pm

    Hay un error. Es el archivo /etc/rc.local y no un directorio /etc/local

  6. 8 Pablo noviembre 20, 2010 a las 2:13 pm

    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

  7. 9 albertoi noviembre 20, 2010 a las 2:18 pm

    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

  8. 10 Pablo noviembre 20, 2010 a las 2:27 pm

    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??

  9. 11 Francisco noviembre 20, 2010 a las 2:31 pm

    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. 😦

  10. 12 maria noviembre 20, 2010 a las 2:50 pm

    Francisco, este post tiene muchos errores. Pásate por el link que ha puesto afsoons.

  11. 13 Francisco noviembre 20, 2010 a las 3:29 pm

    Muchas gracias voy a echarle un vistazo. 😀

  12. 14 Luis noviembre 20, 2010 a las 3:47 pm

    no le entiendo al tutorial, no se donde se empieza y ni haciendo q :/

  13. 15 Luis noviembre 20, 2010 a las 3:47 pm

    no le entiendo al tutorial, no se donde se empieza y ni haciendo q :/

  14. 16 julian noviembre 20, 2010 a las 4:20 pm

    hola, alguno lo podria explicar paso a paso como hacerlo, por que no esta muy claro.
    gracias

  15. 17 Antonio Moreno noviembre 20, 2010 a las 4:52 pm

    a mi también me funcionó lo del link externo, gracias por el dato y por el post!

  16. 19 Llefri noviembre 20, 2010 a las 5:31 pm

    No sabes si este parche será lanzado de forma oficial por parte del equipo de desarollo de Ubuntu?
    Gracias.

  17. 21 nenelinux noviembre 20, 2010 a las 5:40 pm

    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?

  18. 23 superpiwi noviembre 20, 2010 a las 6:00 pm

    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.

  19. 24 zd noviembre 20, 2010 a las 6:09 pm

    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.

    • 25 sa noviembre 20, 2010 a las 11:54 pm

      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.

  20. 26 angelbotto noviembre 20, 2010 a las 7:02 pm

    esto es un EPIC FAIL xD


  1. 1 Tweets that mention El parche “milagro” de Linux de 200 lineas implementado en 4 lineas de Bash « Ubuntu Life -- Topsy.com Trackback en noviembre 20, 2010 a las 10:30 am
  2. 2 El parche “milagro” de Linux de 200 lineas implementado en 4 lineas de Bash | Ayuda Linux Trackback en noviembre 20, 2010 a las 8:21 pm
  3. 3 Hacer más eficiente tu Kernel Linux — Nehuen Escalada Trackback en noviembre 20, 2010 a las 9:37 pm
  4. 4 El kernel, parche de 200 lineas y escandalo….. | Tux Files Trackback en noviembre 21, 2010 a las 2:27 am
  5. 5 El parche “milagro” de Linux (ahora con script de instalación) « Ubuntu Life Trackback en noviembre 22, 2010 a las 7:05 pm
  6. 6 El parche “milagro” de Linux (ahora con script de instalación) | Ayuda Linux Trackback en noviembre 23, 2010 a las 1:21 am
  7. 7 El parche “milagro” de Linux de 200 lineas (ahora con script de instalación) | El Blog de Rigo Trackback en noviembre 23, 2010 a las 10:08 am
  8. 8 Linux recebe “patch milaculoso” e Linus Torvalds é OWNADO! | Ciência da Computação UFSJ Trackback en noviembre 26, 2010 a las 4:44 am
  9. 9 Mejora del rendimiento interactivo agrupando tareas por terminal | karpoke Trackback en diciembre 16, 2010 a las 12:03 am
  10. 10 Linus, el script mágico y un zas en toda la boca - Ubuntizando.com Trackback en enero 28, 2015 a las 1:28 pm

Deja un comentario







¿Es compatible tu equipo con Ubuntu?


( Muchos fondos de pantalla, aqui )

DESCARGATE SCIFI LIFE

365 Dias de Soledad
Me debes los sueños, las promesas y las noches rotas. Me debes la paz, la sonrisa y la esperanza robadas. Me debes la sangre, las lágrimas y el sudor vertido. Me debes las noches vacías, los abrazos anhelados. Me debes un beso de ajenjo de tu amarga boca.

The Ubuntu Counter Project - user number # 11961
Geo Visitors Map

Archivos

noviembre 2010
L M X J V S D
1234567
891011121314
15161718192021
22232425262728
2930  

Blog Stats

  • 31.398.603 hits