Cómo borrar la memoria caché, el búfer y el espacio de intercambio 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 hace el trabajo de escribir en un archivo.

Si tiene que borrar la caché del disco, el primer comando es más seguro en la empresa y la producción, ya que “... echo 1>…” borrará únicamente la 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 extensivo de E/S, 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 la 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 lo necesite para borrar la memoria caché de RAM.

Ahora configure un cron para borrar la memoria caché de RAM todos los días a las 2 am. 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 programar 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é ram u200bu200btodos los días a las 2 a. M. Todos los días a las 2 a. M., El script se ejecuta y vacía su caché de RAM. Un día, por el motivo que sea, 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, el script programado 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. Así que borre el caché de memoria RAM solo cuando sea necesario y conozca sus pasos, de lo contrario, será un administrador del sistema Cargo Cult.

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 borrar la memoria caché RAM y el búfer en producción y Enterprise?