Liberación de memoria RAM en GNU/Linux

Posted on Actualizado enn

Cuando se tiene en funcionamiento por largas horas una computadora personal, servidor, etc. con alguna distribución GNU/Linux,  empezamos a notar alguna lentitud en nuestro sistema, esto sucede por la gran cantidad de aplicaciones que abrimos, sin importar que se cierren posteriormente.

¿Por qué  sucede esto ?

La caché de  RAM la maneja el  kernel.

El kernel gestiona y almacena en caché todas las aplicaciones usadas anteriormente, esto lo hace con la finalidad de que cuando se requiere acceder a una aplicación que se abrió anteriormente, el proceso de acceder y levantar la aplicación sea mucha más  rápida.

La caché RAM, son cosas que se quedan almacenadas ahí(en la memoria RAM), por si se necesitan luego. Algunos ejemplos que hacen que la caché se llene son:

  • Chrome
  • Firefox
  • Virtual Box
  • Pidgin
  • Clementine
  • Apache
  • Gimp

Puedo seguir escribiendo muchísimos mas programas, el objetivo es entender que a medida que uses los programas, la caché se va llenado, hasta el grado que se llene por completo y llegas hasta la perdida de datos o el sistema quede sin responder. 

Esto no solo es útil para tu computadora personal, si no también para servidores, por ejemplo el uso de Java en apache, consultas, etc. esto hace que la RAM se llene y no se vacié, si llegamos a tener un servidor sencillo de 512 MB de RAM o menos, esto nos va a salvar de tener que reiniciar algún servicio o el servidor por completo. 

Liberando Memoria

Para ver que cantidad de memoria estamos ocupando, cuanto tenemos en total y la que nos  queda libre, tecleamos el siguiente comando:

watch -n 1 free -m 

Podemos utilizar también el siguiente comando:

watch -n 1 cat  /proc/meminfo 

O bien sea:

cat /proc/sys/vm/drop_caches

Los datos que muestra drop_caches son los siguientes:

0: No libera nada, lo controla el kernel (valor por defecto).

1: Libera la pagecache.

2: Libera inodos y dentries.

3: Libera inodos, pagecache y dentries (todo en uno).

pagecache: Memoria caché de la paginación.   

dentries: (Dyrectory Entries) Representa la relación de forma estructurada que existe entre directorios-archivos.

inodes: Son nodos índice de archivos y directorios que usa el Sistema de Archivos para administrar las actividades posibles de dichos archivos y directorios guardados en disco o memoria. Contiene la metadata de los archivos y directorios: permisos, tamaño, propietario, última fecha de acceso, creación, modificación, etc. 

Hay dos formas de liberar memoria:

Antes de liberar memoria,  se debe de usar el comando sync

sync: Vuelca al disco todos los cambios que andan rondando en RAM.

Mediante sysctl

La forma correcta de hacerlo políticamente:

sync
sysctl vm.drop_caches=3
 Mediante echo

 La forma corta y fácil:

sync
echo “0” > /proc/sys/vm/drop_caches
sync
echo “1” > /proc/sys/vm/drop_caches
sync
echo “2” > /proc/sys/vm/drop_caches
sync
echo “3” > /proc/sys/vm/drop_caches
Con la opción 3 hacemos todo, lógicamente si ejecutamos dicha opción no es necesario ejecutar 1 y 2.
Estado Actual de la Memoria:
Liberando Memoria:
Se puede programar esto en bash para que a cada cierto tiempo si libere memoria , ya depende de tus necesidades —> Programar tareas en crontab

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