Cómo borrar la memoria caché, el búfer y el espacio de intercambio de la memoria RAM en Linux


Como cualquier otro sistema operativo, GNU/Linux ha implementado una gestión de memoria de manera eficiente e incluso más que eso. Pero si algún proceso está consumiendo su memoria y desea borrarlo, Linux proporciona una forma de vaciar o borrar la memoria caché RAM.

Cada sistema Linux tiene tres opciones para borrar el caché sin interrumpir ningún proceso o servicio.

1. Limpiar sólo PageCache.

# sync; echo 1 > /proc/sys/vm/drop_caches

2. Limpiar dentries e inodos.

# sync; echo 2 > /proc/sys/vm/drop_caches

3. Limpiar PageCache, dentries e inodos.

# sync; echo 3 > /proc/sys/vm/drop_caches 

Explicación del comando anterior.

sync vaciará el búfer del sistema de archivos. El comando Separado por “;” se ejecuta secuencialmente. El shell espera a que termine cada comando antes de ejecutar el siguiente comando de la secuencia. Como se menciona en la documentación del kernel, escribir en drop_cache limpiará el caché sin matar ninguna aplicación/servicio, el comando echo está haciendo el trabajo de escribir en el archivo.

Si tiene que borrar el caché del disco, el primer comando es más seguro en la empresa y la producción, ya que “... echo 1>…” borrará únicamente el PageCache. No se recomienda utilizar la tercera opción sobre “... echo 3>” en producción hasta que sepa lo que está haciendo, ya que borrará PageCache, dentries e inodos.

Cuando está aplicando varias configuraciones y desea verificar, si realmente está implementado especialmente en un banco de pruebas de E/S extenso, entonces es posible que deba borrar la memoria caché del búfer. Puede eliminar el caché como se explicó anteriormente sin reiniciar el sistema, es decir, no se requiere tiempo de inactividad.

Linux está diseñado de tal manera que busca en el caché del disco antes de mirar en el disco. Si encuentra el recurso en la caché, la solicitud no llega al disco. Si limpiamos la caché, la caché del disco será menos útil ya que el sistema operativo buscará el recurso en el disco.

Además, también ralentizará el sistema durante unos segundos mientras se limpia la caché y todos los recursos requeridos por el sistema operativo se cargan nuevamente en la caché del disco.

Ahora crearemos un script de shell para borrar automáticamente la memoria caché de RAM todos los días a las 2 am a través de una tarea del programador cron. Cree un script de shell clearcache.sh y agregue las siguientes líneas.

#!/bin/bash
# Note, we are using "echo 3", but it is not recommended in production instead use "echo 1"
echo "echo 3 > /proc/sys/vm/drop_caches"

Establezca el permiso de ejecución en el archivo clearcache.sh.

# chmod 755 clearcache.sh

Ahora puede llamar al script cada vez que necesite borrar la memoria caché de la memoria RAM.

Ahora configure un cron para borrar la memoria caché de RAM todos los días a las 2 a. M. Abra crontab para editarlo.

# crontab -e

Agregue la línea de abajo, guarde y salga para ejecutarlo a las 2 am todos los días.

0  2  *  *  *  /path/to/clearcache.sh

Para obtener más detalles sobre cómo cronometrar un trabajo, puede consultar nuestro artículo sobre 11 trabajos de programación cron.

¡No! No lo es. Piense en una situación en la que haya programado el script para borrar la memoria caché de RAM todos los días a las 2 a. M. Todos los días a las 2 a. M., Se ejecuta el script y vacía la memoria caché de la RAM. Un día, por cualquier motivo, puede ser que más de los usuarios esperados estén en línea en su sitio web y busquen recursos en su servidor.

Al mismo tiempo, la secuencia de comandos programada se ejecuta y borra todo el caché. Ahora todos los usuarios están recuperando datos del disco. Dará como resultado un bloqueo del servidor y dañará la base de datos. Por lo tanto, limpie la memoria caché solo cuando sea necesario y conozca los pasos de sus pies.

Si desea borrar el espacio de intercambio, es posible que desee ejecutar el siguiente comando.

# swapoff -a && swapon -a

También puede agregar el comando anterior a un script cron anterior, después de comprender todos los riesgos asociados.

Ahora combinaremos los dos comandos anteriores en un solo comando para crear un script adecuado para borrar la memoria caché de RAM y el espacio de intercambio.

# echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'

OR

$ su -c "echo 3 >'/proc/sys/vm/drop_caches' && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'" root

Después de probar los dos comandos anteriores, ejecutaremos el comando "free -h" antes y después de ejecutar el script y verificaremos el caché.

Eso es todo por ahora, si le gustó el artículo, no olvide enviarnos sus valiosos comentarios en los comentarios para informarnos, ¿qué cree que es una buena idea para borrar la memoria caché RAM y el búfer en producción y Enterprise?