![]() | Para hacer la historia corta, hace unos días uno de los desarrolladores del kernel subió un patch (de 200 líneas de código) que permitía mejorar considerablemente (casi una 10 veces) el rendimiento del sistema, especialmente al lidiar con el multitasking durante la ejecución de una tarea pesada (como compilar el kernel). Linus felicitó a este desarrollador por su gran aporte. No obstante, un desarrollador de Red Hat, Lennar Poettering, no estaba de acuerdo en implementar esa mejora directo desde el kernel; para él era mejor hacer los cambios en el espacio de usuario (~/.bashrc). Linus se enojó e increpó a este desarrollador, diciéndole que los resultados hablaban por sí mismos. Lennar, en vez de responder con palabras duras, se sentó e ideó una alternativa (que no precisa de parchear el kernel) y que ocupa apenas 4 líneas. En definitiva, le cerraron el pico a Linus... |
Nota: este método requiere de soporte a grupos de tareas en el Kernel Linux (cgroups), es decir, solamente usuarios con Kernel superior a 2.6.36 podrían aplicarlo.
Cómo aplicar el parche en Fedora
1.- Editá el archivo ~/.bashrc.gedit ~/.bashrc
2.- Pegá el siguiente código al final del archivo:
if [ "$PS1" ] ; then
mkdir -m 0700 /sys/fs/cgroup/cpu/user/$$
echo $$ > /sys/fs/cgroup/cpu/user/$$/tasks
fi3.- Ejecutá los siguientes comandos:
mount -t cgroup cgroup /sys/fs/cgroup/cpu -o cpu mkdir -m 0777 /sys/fs/cgroup/cpu/user
Cómo aplicar el parche en Ubuntu
En Ubuntu la cosa es un poquito más complicada...1.- Editá el archivo rc.local con este comando:
sudo gedit /etc/rc.local
y pegá antes de donde dice "exit 0", lo siguiente:
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
2.- Guardá el archivo y otorgale permisos de ejecución:
sudo chmod +x /etc/rc.local
3.- Editá el archivo ~/.bashrc:
gedit ~/.bashrc
4.- Pegá el siguiente código al final del archivo:
if [ "$PS1" ] ; then mkdir -m 0700 /dev/cgroup/cpu/user/$$ echo $$ > /dev/cgroup/cpu/user/$$/tasks echo "1" > /dev/cgroup/cpu/user/$$/notify_on_release fi
5.- Modificá el archivo cgroup_clean:
sudo gedit /usr/local/sbin/cgroup_clean
6.- Pegá el siguiente código al final del archivo:
#!/bin/sh if [ "$*" != "/user" ]; then rmdir /dev/cgroup/cpu/$* fi
7.- Guardá el archivo y otorgale permisos de ejecución:
sudo chmod +x /usr/local/sbin/cgroup_clean
8.- Reiniciá el sistema.
Nota: si ves la carpeta /dev/cgroup/ vas a notar una mejora considerable en la gestión de la multitarea.

