Foros del Web » Administración de Sistemas » Unix / Linux »

APORTE: Liberar la memoria cache

Estas en el tema de APORTE: Liberar la memoria cache en el foro de Unix / Linux en Foros del Web. A partir del kernel 2.6.16 se introdujo una nueva función en el mismo que automatiza la liberación de la cache, pero algunas veces cuando hacemos ...
  #1 (permalink)  
Antiguo 08/06/2015, 10:00
Avatar de lauser
Moderator Unix/Linux
 
Fecha de Ingreso: julio-2013
Ubicación: Odessa (Ukrania)
Mensajes: 3.255
Antigüedad: 6 años, 1 mes
Puntos: 395
Información APORTE: Liberar la memoria cache

A partir del kernel 2.6.16 se introdujo una nueva función en el mismo que automatiza la liberación de la cache, pero algunas veces cuando hacemos un uso intensivo de la ram y nuestro sistema empieza a ralentizar, la función de limpieza se ejecuta... pero ya es tarde y lo que se produce es un bloqueo del sistema por colapso que puede durar varios segundos.

Entonces, la pregunta sería:
Puedo limpiarla yo antes de que esto se produzca?
- Si puedes.

Forma manual, en terminal root:
Código BASH:
Ver original
  1. sync; echo 3 > /proc/sys/vm/drop_caches

Observa las imágenes tomadas del comando free o free -m, como más te guste:
Antes de liberar


Después de liberar


Como veis la diferencia es considerable y el rendimiento tambien. Pero vamos a hacerlo bien, que así con el comando digamos que no queda bonito.

Vamos a crear un simple script bash que quedara más elegante.

Empezamos con un bash para ejecutar manualmente (si estás trabajando sobre la maquina es la aconsejable):
Crea el archivo "liberar"
Código BASH:
Ver original
  1. nano /usr/local/bin/liberar
Pega este script y guarda el archivo.
Código BASH:
Ver original
  1. #!/bin/sh
  2. # Script liberador de ram
  3. sync; echo 3 > /proc/sys/vm/drop_caches ; echo "Memoria Liberada"
  4.  
  5. exit 0
Le damos permisos.
Código BASH:
Ver original
  1. chmod +x /usr/local/bin/liberar

Ya lo tenemos terminado, ahora cuando lo quieras ejecutar tan solo tienes que acceder a la consola o terminal como root y escribes...
Código BASH:
Ver original
  1. liberar
En pocos segundos hemos liberado la ram cache.
__________________
Los usuarios que te responden, lo hacen altruistamente y sin ánimo de lucro con el único fin de ayudarte. Se paciente y agradecido.
-SOLOLINUX-
  #2 (permalink)  
Antiguo 08/06/2015, 10:27
Avatar de lauser
Moderator Unix/Linux
 
Fecha de Ingreso: julio-2013
Ubicación: Odessa (Ukrania)
Mensajes: 3.255
Antigüedad: 6 años, 1 mes
Puntos: 395
Respuesta: APORTE: Liberar la memoria cache

Después de visto como crear y ejecutar nuestro propio script liberador de forma manual, veremos como automatizarlo con una tarea.

Creamos el script ejecutable:
Código BASH:
Ver original
  1. nano /root/liberar_memoria.sh

Pega este script y guarda el archivo.
Código BASH:
Ver original
  1. #!/bin/sh
  2. # Script liberador de ram
  3. sync; echo 3 > /proc/sys/vm/drop_caches ; echo "Memoria Liberada"

Le aplicas una tarea y ya está en marcha (por ejemplo cada 30minutos, todas las horas, todos los días).
Código BASH:
Ver original
  1. 30 * * * * /root/liberar_memoria.sh
__________________
Los usuarios que te responden, lo hacen altruistamente y sin ánimo de lucro con el único fin de ayudarte. Se paciente y agradecido.
-SOLOLINUX-

Etiquetas: bash, cache, liberar, memoria
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:32.