Liberar memoria física en linux

Cualquier sysadmin que alguna vez hubiese manejado un sistema linux y se ha preocupado de observar el consumo de memoria RAM mientras este se encuentra funcionando, habrá notado que a medida que pasa el tiempo las aplicaciones van consumiendo la memoria física poco a poco, sin embargo cuando en el servidor se ejecutan procesos de alta demanda, es probable que este consumo se vea incrementado, haciendo aveces que el sistema tenga que hacer uso de la partición SWAP. Esto parece ocurrir porque Linux maneja un caché de memoria física para poder así mejorar el rendimiento en las respuestas de procesos.

Dependiendo de que tanta demanda tenga el servidor, he decidido forzar una limpieza de memoria cada cierto tiempo con la ayuda del Dios CRON

#!/bin/sh
sync; echo 3 > /proc/sys/vm/drop_caches

Ejecutar este script cada vez que se estime conveniente limpia el CACHE, personalmente recomendaría hacerlo en los momentos de menor uso de los servicios de la máquina.

Espero le sea útil a alguien y a quien le parezca interesante al menos deje un comentário 😀

Ingeniero, enfocado en la familia y el cliente, emprendiendo y capitalizando lo aprendido por años.

6 Comments

  1. @rafael campoverde

    Hola Rafael, lo que dices es cierto, este comando lo que hace es limpiar la memoria y es útil para limpiarla diariamente tras la carga de trabajo diario, sin embargo aplicar esto cada 20 minutos bordea lo descabellado, es casi tapar el sol con un dedo porque claramente ORACLE terminará por acabar con ella rápidamente.

    Yo partiría por asegurarme de que no cuentes con otras aplicaciones que estén consumiendo recursos ¿Solo corre oracle sobre esta máquina?

  2. rafael campoverde

    Buen dia, tengo un problemita y espero me puedan ayudar….

    estoy administrando recientemente unos redhat que corren oracle, estos se paran quedando sin memoria fisica y el free me dice que tengo 48mb libres o menos… no se que hacer para que esto no ocurra, consulte con los DBA y me dicen que me dije en el valor “-/+ buffers/cache:” del comando free pero no creo ke sea tan cierto eso..

    He visto que el anterior admin de aca ejecuta cada 20 minutos un: “sync; echo 3 > /proc/sys/vm/drop_caches” pero por lo que he leido eso solo limpia la memoria pero como las aplicacinoes siguen necesitandola, nuevamente se llena la memoria, es decir, ese comando no es real, almenos no para lo que necesito….

    bueno la pregunta es: que me quede sin memoria fisica significa que necesito mas memoria ram??? (tengo 8 nucleos y 16G de ram.)

    Gracias!!!!

  3. manel

    Poto:

    “Antes de darselas de sysadmin documentese” ( tu si que lo eres, no?)

    Te has lucido.

  4. realmente sabes que estas haciendo?

    ese hack es bastante sucio y peligroso. si estas escribiendo datos al momento de ejecutar ese comando estas haciendo dump fuera del cache del fs antes que alcance el disco..

    hay una forma mucho mas segura de hacerlo -> /proc/sys/vm/vfs_cache_pressure
    ahi le puedes decir al kernel que prioridad deberia tener cuando se limpian caches de inode/dentry.

    Antes de darselas de sysadmin documentese 😉

Leave Comment

Your email address will not be published. Required fields are marked *

%d bloggers like this: