La Competencia se Hace Presente y Ahora Tenemos Algo Mejor para Kernel Linux

En la anterior entrada publicamos información sobre el milagroso parche, que hacia que el Kernel Linux trabajara como nunca pues bien, les tengo excelentes noticias: Lennart Poettering, desarrollador de Red Hat, ha enviado un mensaje a Linus Torvalds con una alternativa que hace los mismos resultados, con la diferencia de que solo requiere ejecutar dos mandatos y añadir cuatro líneas a ~/.bashrc. De acuerdo a Lennart, este método tiene aún mejores resultados que el parche de 200 líneas.


Método para Fedora 13 y 14.

Añadir lo siguiente en el fichero ~/.bashrc del usuario que se acostumbre utilizar:

if [ "$PS1" ] ; then
        mkdir -m 0700 -p /cgroup/cpu/user/$$
        echo 1 > /cgroup/cpu/user/$$/notify_on_release
        echo $$ > /cgroup/cpu/user/$$/tasks
fi

A partir de aquí, todos los procedimientos restantes se realizan como usuario root.

su -l

Se debe activar e iniciar el servicio cgconfig (muchos suelen desactivar éste para optimizar el arranque del sistema). Como root ejecutar:

chkconfig cgconfig on
service cgconfig start

Lo anterior hace que sea totalmente innecesario ejecutar el mandato mount -t cgroup -o cpu none /cgroup/cpu que se menciona en otros procedimientos documentados en Internet.

Como root, crear el fichero /bin/rmcgroup con el siguiente contenido:

#!/bin/bash
rmdir /cgroup/cpu/$1

El fichero debe hacerse ejecutable:

chmod +x /bin/rmcgroup

Y como root, ejecutar lo siguiente:

mkdir -p -m 0777 /cgroup/cpu/user
echo "/bin/rmcgroup" > /cgroup/cpu/release_agent

Para que esto se ejecute automáticamente, puede añadirse lo anterior en el fichero /etc/rc.local, de la siguiente manera:

# Necesario para permitir a los usuarios escritura en dicha ruta.
mkdir -p -m 0777 /cgroup/cpu/user > /dev/null 2>&1
# Especificar que utilizar para liberar agente
echo "/bin/rmcgroup" > /cgroup/cpu/release_agent

Lo único que resta por hacer para que surtan efecto los cambios, es reiniciar e sistema.

Método para Ubuntu.

Para utilizarlo en Ubuntu, como root hay que añadir lo siguiente al fichero /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

Y hacer ejecutable a /etc/rc.local

sudo chmod +x /etc/rc.local

A continuación, se añade lo siguiente en el fichero ~/.bashrc del usuario que se acostumbre utilizar:

if [ "$PS1" ] ; then
	mkdir -p -m 0700 /dev/cgroup/cpu/user/$$ > /dev/null 2>&1
	echo $$ > /dev/cgroup/cpu/user/$$/tasks
	echo 1 > /dev/cgroup/cpu/user/$$/notify_on_release
fi

Crear el fichero /usr/local/sbin/cgroup_clean con el siguiente contenido:

#!/bin/sh
rmdir /dev/cgroup/cpu/$*

Hacer ejecutable /usr/local/sbin/cgroup_clean:

chmod +x /usr/local/sbin/cgroup_clean

Y finalmente, reiniciar el sistema.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s