Gestionar y optimizar la memoria en Linux

Hoy en día, la mayoría de los servidores de producción se ejecutan en Linux —ya sea Debian, Ubuntu o CentOS— gracias a la versatilidad del sistema operativo y el hecho de que es gratuito. Linux dispone de una amplia gama de herramientas para dar soporte, gestionar, supervisar e implementar aplicaciones de software.

Los servicios y las funciones que se añaden a la aplicación del producto pueden consumir una memoria considerable. Optimizar la memoria para los servidores Linux no solo hace que las aplicaciones se ejecuten de forma más rápida y fluida, sino que también reduce el riesgo de pérdida de datos y fallos del servidor. En este artículo, veremos algunas formas de optimizar la memoria en Linux.

Para optimizar la memoria para equipos Linux, primero necesitamos entender cómo funciona la memoria en Linux. Comenzaremos con algunos términos relacionados con la memoria y luego discutiremos cómo Linux la maneja. Por último, aprenderemos cómo solucionar y prevenir problemas de memoria.

Cantidad de memoria

La cantidad total de memoria que puede contener un equipo se basa en la arquitectura del sistema operativo. Por ejemplo, un sistema operativo con arquitectura de 32 bits solo puede soportar 4 GB de memoria. Uno de 64 bits puede soportar alrededor de 128 GB. Teóricamente, podría soportar hasta 16 EB si se mejoran las capacidades de hardware.

Memoria virtual

Toda la memoria de Linux se denomina memoria virtual. Esta incluye la memoria física —a menudo llamada RAM— y el espacio de intercambio. La memoria física de un sistema no se puede ampliar a menos que agreguemos más RAM. Sin embargo, la memoria virtual se puede aumentar usando el espacio de intercambio del disco duro.

Memoria física

La RAM determina si tu equipo puede manejar procesos que consumen mucha memoria. Por ejemplo, necesitaremos al menos 1 GB de RAM para 1.000 activos que usen MongoDB en un servidor de producción. Para garantizar un rendimiento satisfactorio del servidor, la memoria física debe superar lo que necesita la base de datos. De lo contrario, MongoDB comenzará a utilizar la memoria de intercambio. Esto reducirá el rendimiento del sistema. La razón detrás de esto es que la memoria física es accesible en nanosegundos; la memoria de intercambio, solo en milisegundos.

Memoria de intercambio

Por lo general, la memoria física se encarga de almacenar datos para todos los procesos en el equipo. ¿Pero qué sucede cuando la memoria física está llena? Ahí es cuando la memoria de intercambio entra en juego.

Cuando el sistema está lleno, las páginas inactivas de la memoria se moverán a la memoria de intercambio. Esta consta de una partición de intercambio, un archivo de intercambio o ambos. Una partición de intercambio es una partición de disco. Un archivo de intercambio es un sistema de archivos. Usar uno u otro depende de tu preferencia. Ambas son opciones válidas.

Memoria de disco

La memoria de disco a menudo es más grande que la memoria física. Mientras el equipo funciona, los datos de las tareas en ejecución se almacenan en la memoria RAM. Si el equipo se queda sin energía, esos datos desaparecen. Por eso es importante guardar con frecuencia tu trabajo. La memoria de disco guarda datos persistentes.

Flujo de utilización de la memoria en Linux

A continuación se muestra un diagrama de flujo que muestra cómo se procesan los datos en Linux.

Los datos del usuario, además de los procesos del equipo y el disco duro, se envían a la RAM. Si es necesario, la memoria RAM los almacenará y enviará de vuelta al usuario o disco duro. Si los datos necesitan ser persistentes, la RAM los enviará a la CPU.

Comandos para gestionar la memoria de Linux

Para detectar problemas de memoria y optimizar la memoria en Linux, necesitaremos una de varias herramientas.

Detectar hardware en el equipo

Los problemas de hardware pueden afectar directamente la optimización de la memoria. Digamos que tu sitio web funciona con lentitud y que un programa local se ha ralentizado. Para ver si esto se debe a un problema de RAM, deberás quitar los módulos de RAM y probarlos para determinar cuál es el culpable.

dmidecode puede ayudar a recuperar información de hardware del sistema mientras comprueba si hay problemas de hardware. La herramienta dmidecode ayuda a mostrar el BIOS de gestión del sistema en el contenido de la tabla.

Por ejemplo, ejecutar

dmidecode

Esto mostrará la siguiente información sobre la memoria.

Comprueba el espacio libre disponible

No tener suficiente espacio libre para ejecutar tareas es una de las razones más comunes de que el computador sea lento. Para comprobar si hay espacio libre disponible en el equipo, puedes utilizar el comando free.

free -g

Esto mostrará el espacio libre de memoria en GB.

Fig. 3: Information about free memory space in the machine Fig. 3: información sobre el espacio libre de memoria en el equipo
Fig. 2: dmidecode displays information about system hardware Fig. 2: dmidecode muestra información sobre el hardware del sistema

Comprobar el uso de la CPU y la memoria

Hay varias herramientas de línea de comandos para comprobar el uso de la CPU y la memoria. Estas incluyen htop, vmstat, y ps.

htop muestra información en tiempo real sobre los procesos de la CPU.

Fig. 4: htop showing real-time information about current running processes Fig. 4: htop mostrando información en tiempo real sobre los procesos actuales en ejecución

vmstat muestra información sobre CPU, memoria, procesos del sistema, paginación, interrupciones, y programación de CPU.

Por ejemplo, ejecutar

vmstat -a -S M

Esto mostrará información sobre la memoria en MB.

Fig. 5: Memory information in MB Fig. 5: información de la memoria en MB

ps nos da información sobre los procesos en ejecución en Linux.

Por ejemplo, ps -aux muestra todos los procesos en ejecución.

Fig. 5: Memory information in MB Fig. 5: información de la memoria en MB

Mejores prácticas y pasos adicionales

Optimizar la memoria en Linux es una tarea compleja. Corregir una memoria sobrecargada requiere un esfuerzo significativo. Estas son algunas de las mejores prácticas que pueden ayudar a evitar que se produzcan problemas de memoria.

Crea una partición de intercambio

Crea una partición de intercambio. Se puede utilizar como memoria virtual para tu servidor. En el peor de los casos, cuando la memoria física está llena, la memoria que pertenece a los procesos inactivos se moverá al espacio de intercambio. Esto permitirá que continúen los procesos activos vitales que necesitan memoria.

Crea un disco RAM

Un disco RAM se utiliza para el almacenamiento en caché de aplicaciones o áreas de trabajo. Es un espacio de almacenamiento volátil que se define dentro de la RAM. Usar un disco RAM aumenta el rendimiento del procesamiento de archivos. En comparación con las unidades de estado sólido (SSD), el disco RAM es más de 50 veces más rápido. Crear un disco RAM es útil cuando se tiene un servidor de aplicaciones que requiere cantidades significativas de recursos de hardware para ejecutarse.

Proteje los puertos abiertos

Para minimizar el riesgo de piratería, solo abre los puertos que necesitas en un momento dado. Además, limita los puertos de acceso a través de una red privada virtual.

Si te encuentras con un ataque de malware, bien puede ser un intento de cifrado, comprueba dos veces los puertos de entrada y salida. Luego, abre una vez más solo los puertos que necesites. A continuación, debes eliminar crontab de tus instancias. Esto se debe a que el malware creó crontab para iniciar las tareas de minería de datos.

Desactiva o detén los servicios que no se estén utilizando

Para conservar memoria, detén los servicios o contenedores que no estén en uso. Al implementar aplicaciones en un entorno de QA o desarrollo con Docker, puedes crear una imagen de Docker, un volumen y ejecutar el contenedor Docker para fines de prueba. Estos se pueden limpiar después de que se complete la prueba.

Was this article helpful?
Supervise su entorno Linux

Verifique el estado y la disponibilidad de sus servidores Linux para obtener un rendimiento óptimo con la herramienta de monitoreo de Linux de Site24x7.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 "Learn" portal. Get paid for your writing.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 “Learn” portal. Get paid for your writing.

Apply Now
Write For Us