HOWTO: Cómo acelerar Linux para que vaya más rápido. · 23 noviembre 2010, 23:11

GNU/Linux y Software Libre

Desde hace una semana está corriendo como la pólvora por todo Internet una interesante noticia: la creación de un parche para Linux que permitiría mejorar sustancialmente el rendimiento de nuestro PC.

El parche en concreto era una modificación para el núcleo Linux de tan sólo 200 líneas de código.

La pega de este parche es que hay que recompilar el núcleo o esperar a que el parche sea aplicado a la versión oficial de Linux.

La buena noticia es que parece ser que Linus Torvalds está decidido a incluirlo, así que, en un futuro no muy lejano podremos disfrutar de una mejora en el rendimiento de nuestro sistema automáticamente, sin hacer nada, sólo actualizando nuestro sistema operativo favorito (Windows y MacOS X… se siente!). ;)

Sin embargo, para los que somos más impacientes, existe un sistema mucho más fácil de conseguir idénticos resultados, sin recompilar el núcleo: ¡basta con modificar sólo tres archivos!

Aumentar el rendimiento de Linux Debian o Ubuntu

Aquí os dejo el tutorial para obtener mayor rendimiento de nuestro escritorio Linux para distribuciones Debian, Ubuntu y derivadas:

Tutorial: Cómo mejorar el rendimiento de nuestro sistema GNU/Linux usando CGROUPS

Como root (o con sudo) editaremos el archivo /etc/rc.local y añadiremos, justo antes de donde pone exit 0 las siguientes líneas:


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

Ahora, editaremos (crearemos) el fichero: /usr/local/sbin/cgroup_clean

Y añadiremos las siguientes líneas:


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

Y nos aseguraremos de que ambos archivos son ejecutables:


chmod +x /etc/rc.local
chmod +x /usr/local/sbin/cgroup_clean

Ahora, editaremos el archivo .bashrc de nuestro usuario (y de todos aquellos usuarios que deseamos quieran disfrutar de la mejora):

Editaremos el archivo ~/.bashrc y por el final del mismo, añadiremos las siguientes líneas:


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

Y listo!

Reiniciamos nuestro equipo o sencillamente ejecutamos como root (o con sudo):


# /etc/rc.local

(Esto último es por si hay algún windowsero leyendo y se frotó las manos al leer que había que reiniciar… pobrecillos…)

Aumentar el rendimiento de Linux Debian o Ubuntu

Mis impresiones

Yo, personalmente, lo he notado bastante en todos los PC’s donde he aplicado los parches.

Es realmente increíble la sensación de respuesta del ordenador. Es como si todo funcionase aún más rápido.

No se trata de que el ordenador vaya más rápido en un sentido estricto, ni que ripee películas en un santiamén, ni nada parecido, sino que de lo que se trata es que el truco consigue que la respuesta del escritorio sea mucho más fluida, rápida y directa.

A veces, cuando estamos ejecutando muchas aplicaciones a la vez, y sobre todo cuando alguna de ellas hace uso intensivo de la CPU (rippear DVD’s, convertir vídeo o audio, etc.) notamos como hay un cierto lag (retraso) entre los clics y movimientos que hacemos por el escritorio y la respuesta de las aplicaciones y del escritorio mismo a dichos eventos…

Es algo minúsculo, casi inapreciable, pero los que pasamos muchas horas al día frente al ordenador notamos esas cosas.

Si el ordenador es más limitado, con menos recursos (o si usa Windows), entonces creo que cualquiera lo habrá podido apreciar y sabrá a lo que me refiero. ;)

Gracias a este parche, todo va mucho más fluido, más instantáneo, y el sistema realmente da la sensación de responder en el acto a todos nuestros gestos.

En fin, yo os lo recomiendo encarecidamente, a mi me ha encantado y es increíble la sensación de control y fluidez que uno siente, incluso cuando los ordenadores están trabajando a tope.

Espero vuestras impresiones y testimonios cuando apliquéis el truco. ;)


También te puede interesar:

— jEsuSdA 8)

---

Comentarios

  1. Gracias por el HowTo. Si que he notado la mejoria en lo que comentas, va todo mas fluido como si no le costara “nada”.

    Salu2!

    — Datzerox · 23 noviembre 2010, 15:09 · #

  2. una vez mas gracias…!!!!sin querer ayer en la tarde estaba leyendo un howTo aqui en tu blog y de un momento a otro esta tremenda sorpresa gracias…!!!

    — aldo · 24 noviembre 2010, 03:56 · #

  3. gracias por los grandes aportes, es excelente yo trabajo en debian.
    una ayuda por favor, para losiguiente como poder cambiar de fondo a una foto que tenga a una mujer con el cabello alborotado producto del viento ejemplo http://image.shutterstock.com/display_pic_with_logo/72112/72112,1223777287,1/stock-photo-nude-beauty-model-in-studio-with-hair-blown-by-wind-18745972.jpg.
    otro ejemplo puede ser http://photopostsblog.com/wp-content/uploads/2008/12/girls-with-wind-in-her-hair22.jpg
    pero en algunos caso el color de fondo se confunde en parte con el color de cabello.

    de ante mano te agradesco muchisimo tu ayuda.

    — joelgomez · 24 noviembre 2010, 14:28 · #

  4. Si, si, si… llevo usando este método como 1 semana y la diferencia se nota, al principio pense que era un tipo efecto plasebo, pero, no, realmente se aprecia una diferencia…

    Por sierto, que opinas del nuevo artwork de Debian 6? yo lo encontre horrible, sería un buen tema para discutir…

    Saludos

    Carlos Albornoz · 24 noviembre 2010, 18:32 · #

  5. Hola Joel.

    El comentario no tiene nada que ver con el post, pero te responderé de todos modos.

    Aprovechando que el fondo de las fotografías es contínuo, podrías usar la opción de COLORES > COLOR A ALFA y extraer el fondo de la imagen.

    Para no hacer transparentes también partes de la chica, realiza primero una selección.

    ———————————————————

    Hola Carlos!

    Pues celebro que tú también hayas notado mejora. ;)

    Respecto al artwork de debian 6 decirte que no he seguido los últimos avances, porque no he tenido tiempo.

    De cualquier forma, el problema que hay, en mi opinión, es que son poca gente trabajando en el apartado gráfico de Debian.

    Yo les recomendé hace unas semanas que, en lugar de hacer todo de cero, usaran temas que ya hay en Debian, como los temas shiki, gnome-color, etc., pero me dijeron que preferían diseñar todo desde cero…

    Yo creo que la gente de Linux mint, por ejemplo, dejan su distro bastante más bonita usando temas existentes y añadiendo algunos pequeños retoques, pero parece que el propósito de hacer todo desde cero en Debian es firme y, claro, habiendo poca gente en el proyecto de artwork tampoco se les puede pedir mucho más.

    Salu2 de jEsuSdA 8)

    jEsuSdA 8) · 24 noviembre 2010, 19:40 · #

  6. muchas gracias por tu ayuda, voy a poner en practica tu sugerencia.

    — joelgomez · 25 noviembre 2010, 02:23 · #

  7. Lo he probado en LinuxMint 10 en un Asus EEE 4G (un netbook bastante limitado) y parece funcionar.

    Es una instalación desde cero y lo que he hecho es comprobar cuanto tarda en encontrar un paquete en Synaptic. Antes de aplicar el parche se lo pensaba más, y ahora parece ir más suelto. Tendré que darle más uso para sacar una conclusión.

    Una duda: ¿No sería mejor editar el archivo /etc/bash.bashrc en lugar del de cada usuario?

    — daute · 25 noviembre 2010, 22:30 · #

  8. Hola Daute,

    Pues en teoría debería funcionar con el /etc/bash.bashrc , pero habría que probarlo para estar seguros.

    Si alguien lo prueba, que lo diga. ;)

    Salu2 de jEsuSdA 8)

    jEsuSdA 8) · 26 noviembre 2010, 06:24 · #

  9. Hola Jesús.
    A mi me dice :

    mount: tipo de sistema de ficheros ‘cgroup’ desconocido

    O sea que no me reconoce ese sistema de ficheros. ¿Qué kernel hace falta?

    Salu2

    Antonio Omatos Soria · 26 noviembre 2010, 21:55 · #

  10. De aquí: http://bit.ly/fxXUVj

    Looks like a kernel re-build will be needed

    [ ~]$ zgrep CGROUP /proc/config.gz

    # CONFIG_CGROUPS is not set

    jotarp · 26 noviembre 2010, 23:01 · #

  11. Yo tengo el kernel 2.6.32-5-amd64 de Debian.
    En Ubuntu maverik también funciona.

    ¿Qué versión de kernel tenéis?

    Si alguien conoce la versión mínima necesaria para que el truco funcione, que avise. ;)

    Salu2 de jEsuSdA 8)

    jEsuSdA 8) · 27 noviembre 2010, 10:47 · #

  12. sencillamente impresionante
    100% recomendado
    uso debian squeeze amd64

    Tonny · 27 noviembre 2010, 16:18 · #

  13. Pues en mi OpenSuse no encuentro el /etc/rc.local y no está por otras carpetas

    — heoft · 2 diciembre 2010, 15:53 · #

  14. Hola Heoft

    Creo que en SuSE el equivalente a /etc/rc.local es /etc/init.d/boot.local

    A ver si te sirve.
    Salu2 de jEsuSdA 8)

    jEsuSdA 8) · 2 diciembre 2010, 20:38 · #

  15. Muchas gracias Jesusda, a ver si me atrevo y lo hago.
    Saludos.
    heoft.

    — heoft · 3 diciembre 2010, 20:00 · #

  16. Muchas gracias. Voy a ponerlo en práctica en Arch a ver qué tal. Ya hay algún kernel en el repositorio de usuarios de ArchLinux que trae el parche aplicado, pero me dá mucha pereza ponerme a compilarlo, y tu solución me viene de perlas.
    Saludos.

    — kagan · 7 diciembre 2010, 13:59 · #

  17. Hola, soy usuario de Linux Mint 9 y he tenido que crear en mi usuario el archivo .bashrc, ya que no existe. ¿He hecho bien? Voy a ver que tal funciona, me ha gustado mucho el artículo.

    — Luis · 7 diciembre 2010, 17:10 · #

  18. Hola Luis,

    el .bashrc fija las variables de entorno cuando ejecutas scripts o abres una consola.

    Las variables las coge al principio de una configuración común para todos los usuarios, y el .bashrc añade configuraciones personalizadas.

    En definitiva: debe funcionar. :D

    Salu2 de jEsuSdA 8)

    jEsuSdA 8) · 7 diciembre 2010, 18:58 · #

  19. Probado en mi Debian Squeeze y funcionando de maravilla.

    Gracias, Jesus ;-)

    Yoyo · 18 diciembre 2010, 15:17 · #

  20. hola el truco es permanente? o hay me meter en la consola la orden /etc/rc.local, yo reinicie y tube que ejecutar dicha orden para k se note, gracias uso kali en debian de probatinas

    — traza · 28 marzo 2014, 17:21 · #

  21. Hay que editar el archivo /etc/rc.local y dejar indicados los comandos ahí o también puedes insertar los comandos en el archivo .bashrc que encontrarás en tu /home.

    Tanto en un caso como en otro se ejecutarán solos. ;)

    Un saludo!
    jEsuSdA 8)

    jEsuSdA 8) · 11 abril 2014, 10:44 · #

  22. oye esto funciona con el sistema de la canaima 3.2 por q escribo /etc/rc.local y no hace nada por fa ayudame

    — buscador · 14 enero 2015, 04:49 · #

  23. Hola Buscador,

    Cuando se ejecutan los comandos de rc.local no tienes que “ver” que tu sistema “hace nada”, sino que, a partir de ese momento, los usuarios que hacen login en la máquina gozan de cierta “preferencia” en sus procesos con respecto a otros procesos de la máquina y, por ende, la respuesta del sistema se “nota” más fluida.

    Todo esto se puede percibir más o menos dependiendo de varias cosas:

    - La máquina que tengas: si es una buena máquina, lo notarás menos, porque la máquina ya es suficientemente potente, con lo que ya iba rápido sin hacer nada.

    - La versión de kernel. Las nuevas versiones de kernel ya permiten ser compiladas dando prioridad a los procesos de los usuarios interactivos. A lo mejor tu kernel ya llevaba este “tunning” de fábrica.

    - La actividad que realices con tu máquina. Si no sobrecargas tu sistema será más difícil que veas el cambio.

    Salu2 de jEsuSdA 8)

    jEsuSdA 8) · 14 enero 2015, 06:46 · #

  24. Hola, soy algo nuevo en esto, probe tú tutorial sin embargo no se ve la diferencia, tengo Linux Mint 17.1 Cinnamon – 64 bits, y al iniciar mi maquina cuando abro la terminal me aparecen las siguientes lineas:

    bash: /dev/cgroup/cpu/user/2366/tasks: No such file or directory
    bash: /dev/cgroup/cpu/user/2366/notify_on_release: No such file or directory

    alguna sugerencia?

    — Jonathan · 3 abril 2015, 15:58 · #

  25. Hola, Jonathan.

    Creo que es normal que no notes ninguna mejoría e, incluso, que no te funcionen algunas de las instrucciones.

    El tutorial de mi blog es de 2010 y está basado en unas mejoras que se introdujeron en el kernel de linux y que, en aquella época no venían activadas por defecto para sistemas de escritorio.

    Con posterioridad no sólo se activaron sino que, además, la mayoría de las distros de escritorio vienen con éstas y otras mejoras optimizadas para tal fin.

    Seguramente podría asegurar sin riesgo a equivocarme que Mint 17.1 funciona mejor que la mint de 2010 con los trucos de mi post. :D

    Salu2 de jEsuSdA 8)

    jEsuSdA 8) · 6 abril 2015, 10:17 · #

  26. Hola, jEsuSdA:
    Hace un par de años que vengo formateando la PC regularmente, probando diferentes distros de acuerdo a mis necesidades. Lo primero que hago después de una instalación limpia es copiar toda mi carpeta personal, importar los archivos de mi radio virtual, tweakear Firefox, disminuir el uso de swap y meterme en este post.
    Lo he usado mucho, y en esta ocasión quiero reconocer tu aporte.
    Gracias.

    Un abrazo.

    Dany Andersen (CCN) · 12 enero 2016, 19:07 · #

  27. Hola, Dany.

    Es un placer serte de ayuda. Te agradezco mucho tu comentario.
    Es agradable conocer de primera mano que mis post resultan de utilidad para mis lectores.

    Un saludo! ;)

    jEsuSdA 8) · 15 enero 2016, 08:51 · #

  28. Ahora cada vez que habro la terminal dice:

    bash: /dev/cgroup/cpu/user/4104/tasks: No existe el archivo o el directorio
    bash: /dev/cgroup/cpu/user/4104/notify_on_release: No existe el archivo o el directorio

    Como quito esa cosa fastidiosa!.

    Cesar Miguel Network, Inc. · 26 abril 2016, 17:47 · #

  29. Hola, César.

    Desde hace algunas versiones, el propio kernel ya maneja los Cgroups para que no sea necesario forzar su uso para mejorar el rendimiento de la máquina.

    Es por eso que te sale ese mensaje.

    Lo que tienes que hacer es proceder de forma inversa:

    Edita el archivo ~/.bashrc

    Y borra las líneas

    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

    Elimina el archivo cgroup_clean (como root)

    rm /usr/local/sbin/cgroup_clean

    Edita el archivo /etc/rc.local

    y elimina las líneas

    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 listo! ;)

    Un saludo y gracias por comentar!

    jEsuSdA 8) · 28 abril 2016, 11:42 · #

Ayuda Textile

|