|
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
fi
3.- 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.