Liberar memoria RAM del kernel en Linux

an alien Empress Vs a Predator

An alien Empress Vs a Predator by Chasing Artwork

Muchas veces cuando ejecutamos el comando top, nos sorprendemos con que tenemos libre, una cantidad mínima de memoria, a pesar de que en ese momento apenas tengamos unos pocos programas abiertos. Ello es debido a que el kernel gestiona y almacena el caché de las aplicaciones utilizadas anteriormente, para poder acceder a ellas más rapidamente, y reutilizarlas en cualquier momento, ya que el acceso al disco siempre es más lento.

En la inmensa mayoría de los casos esto no supone ningún problema, al contrario, es una manera inteligente de gestionar el sistema, porque en caso de ser necesario lanzar alguna nueva aplicación, se libería automáticamente esa memoria caché.

Pero también puede ser que necesitemos liberar caché de forma inmediata, bien porque queramos deshacernos de algunos procesos zombies o por cualquier otro motivo, para ello podemos en primer lugar medir el consumo de memoria en tiempo real (1 seg.) con el siguiente comando:

watch -n 1 free -m

memory

Si os fijáis en la imágen tengo la memoria casi repleta, con mas de 2 GB de memory cached.

Ahora si quiero eliminar la memoria que no estoy usando tan solo tengo que ejecutar como root el comando:

sysctl -w vm.drop_caches=3

memory1

Ahora si vuelvo a ejecutar el comando inicial:

watch -n 1 free -m

memory3

vemos que la cosa ha cambiado sustancialmente, apenas 300 MB de RAM Cached.

Vía | TutorFree

Entrada relacionada:

29 thoughts on “Liberar memoria RAM del kernel en Linux”

  1. Luweeds (@Luweeds) says:

    Muy buena Joe¡¡ yo siempre ando con Ram justica , era una cosa que tenía pendiente , lo usaré, no lo dudes¡¡ 🙂

    1. tannhausser says:

      Gracias Luweeds!
      Un saludo amigo!

  2. victorhck says:

    Por que cuando doy al botón de compartir en Tw tu artículo no me sale lo de “vía @tannhausser” ? y me sale via wordpress o algo así que no recuerdo…??

    Por cierto buen artículo! 😉

    1. tannhausser says:

      Gracias Victor!
      Antes tenía dos botones, pero parece que me cargué el que no era 🙂 .Hablando de twitter, redes sociales, etc.. y haciendo offtopic, estoy encantado con feedly (un buen sustituto para Google Reader) y su barra social para compartir artículos (feedly mini).
      Te la recomiendo

      1. victorhck says:

        No uso nada de eso…
        Utilizo mi lector de feeds en el navegador y poco más…
        Pero gracias por la recomendación, leeré el artículo cuando lo publiques en el blog! jejeje

        Saludos.

  3. Yoyo Fernández says:

    Buen tip pero faltaron tetas :-/

    1. liamngls says:

      Nunca están de más 🙂

      1. Jamin Fernandez (@JaminSamuel) says:

        Siii … no olvides que siempre hay que poner tetas xD ajajajaja

      2. tannhausser says:

        Me parece que os tengo muy viciados a vosotros tres ↓↑
        🙂

  4. Esteban Saracho says:

    Muy bueno, creo que lo mismo puede hacerse asi: “echo 3 > /proc/sys/vm/drop_caches”

    Aqui mas info sobre esto: http://linux-mm.org/Drop_Caches

    Igual prefiero que el kernel administre mi memoria 🙂

    1. tannhausser says:

      Gracias por el link Esteban, explica muy bien los parámetros del comando

  5. aldobelus says:

    Como bien dices tú y Esteban Saracho, el kernel sabe de esto (extrapolando el sentido, libremente…) pero a mí me pasa de vez en cuando que el kernel debe andar tonto, o la memoria o yo que sé, y me cuesta mucho hacer que arranque un programa. Veo el consumo de RAM o de CPU y está disparado. Como comentas, ese momento no es de consumo especial. Días hubo peores y las aplicaciones arrancaban. Imagino que esos serán los días en que intentaré “ayudar” al kernel con tu comando, que me anoto súbito. Espero no volar por los aires…(obviamente, es una broma! ¿Se nota que antes fumaba porros?) Saludos y gracias o al revés…

  6. Hector says:

    Muchas gracias por el tip a usarlo ahora

    1. tannhausser says:

      Gracias a ti por comentar!
      Saludos!

  7. benpaz says:

    Amigos hablando de consumo, conocen alguna configuración para que Gnome Shell 3.6 no consuma mucha CPU y por ende no caliente mucho mi notebook, saben me encanta Gnome Shell saben por qué?, porque marca la diferencia de todos los escritorios, es innovación. Uso Fedora 18 64 bits con Gnome Shell 3.6, CPU core i3 con 4 GB de RAM. Espero su ayuda gracias.

    1. tannhausser says:

      Hola Benpaz, yo he utilizado GNOME Shell en equipos mucho mas modestos y no he tenido ese problema de calentamiento que comentas, supongo que será cuestión de gráfica y drivers, mas que de distro.

      1. benpaz says:

        La verdad creo que mi procesador funciona así, su temperatura máxima normal es de 80 °C, leyendo me gané ese dato así que creo que es normal, otro dato importante es que hay que configurar las revoluciones de los ventildares desde la bios. Gracias por la respuesta.

  8. hug0 says:

    Muy buen dato!

    1. tannhausser says:

      Gracias hugO!
      Un placer verte por aquí!

  9. Eneas Espinoza Gallardo says:

    Hola, pregunta de novel, ¿corro algún riesgo de perder información al ejecutar este comando o lo puedo aplicar en cualquier momento no importa qué o cuántas aplicaciones tenga activas? Gracias!

    1. tannhausser says:

      Hola Eneas!
      Este comando lo que hace es liberar la memoria cache, así que en principio no debería afectar a las aplicaciones que en ese momento esten activas!

      1. Eneas Espinoza Gallardo says:

        Lo usé. Todo perfecto. Gracias! (desde xubuntu 12.10)

  10. Yassir Meneses says:

    Yo propongo este comando: watch -n 600 sysctl -w vm.drop_caches=3

    y lo explico, ejecuta el comando para liberar cache cada 10 minutos, pueden cambiar el intervalo de tiempo sencillamente cambiando el número 600 por el número de segundos que gusten.

    Nota: no olviden ejecutarlo con privilegios.

    1. tannhausser says:

      Una buena solución! lo ejecutas una vez y te olvidas por el resto de la sesión!
      Gracias por el apunte!

  11. Freddy says:

    Gracias

  12. mj says:

    Hola,
    Muchas gracias, muy util y sin duda bien explicado; pero tengo una inquietud, para volver al promt despues de ejecutar la orden “watch -n 1 free -m” debo oprimir “control + c” para volver al prompt de la shell o existe otra manera de hacerlo.

  13. danielzazen says:

    Busque pero no encontre un sensor o una herramienta que me de un grafico del uso de la ram… podría alguien darme ese dato? Yo creo que estos valores podrian ser filtrados y redirigidos a una tabla para ser graficados, alguien debe haberlo hecho ya…

    1. Yassir Meneses says:

      Hola, ya intentaste con el monitor del sistema?

  14. Pingback: Como liberar memoria cache | Yassir Meneses.
  15. Trackback: Como liberar memoria cache | Yassir Meneses.

Deja un comentario