Liberar memoria RAM del kernel en Linux

por | 24 marzo, 2013
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 pensamientos en “Liberar memoria RAM del kernel en Linux

  1. Luweeds (@Luweeds)

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

    Responder
  2. victorhck

    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! 😉

    Responder
    1. tannhausser

      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

      Responder
      1. victorhck

        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.

        Responder
  3. aldobelus

    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…

    Responder
  4. benpaz

    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.

    Responder
    1. tannhausser

      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.

      Responder
      1. benpaz

        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.

        Responder
  5. Eneas Espinoza Gallardo

    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!

    Responder
    1. tannhausser

      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!

      Responder
  6. Yassir Meneses

    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.

    Responder
  7. mj

    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.

    Responder
  8. danielzazen

    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…

    Responder
  9. Pingback: Como liberar memoria cache | Yassir Meneses.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.