La memoria RAM, por Random Access Memory (Memoria de Acceso Aleatorio), es un componente crítico de un sistema Linux que necesita ser monitorizado de cerca.
En algunos casos, puede que te quedes sin memoria, dejando tu servidor con tiempos de respuesta muy lentos o sin responder por completo.
Como consecuencia, saber cómo comprobar tu memoria RAM en Linux es crucial porque podrías tomar acciones preventivas en lugar de correctivas.
También es posible que desee aumentar su memoria de intercambio, también conocida como memoria virtual, con el fin de mejorar el rendimiento de su servidor.
En este tutorial, vamos a enumerar todas las formas de comprobar su memoria RAM en Linux.
Comprobar la RAM en Linux usando free
El comando más popular para comprobar tu RAM en Linux es usar el comando «free».
$ free total used free shared buff/cache availableMem: 4039588 3475216 137584 39596 426788 287580Swap: 0 0 0
Como puedes ver, la salida se divide en dos categorías : memoria (la RAM real) y swap (también llamada memoria virtual).
Al usar free, se le proporciona la siguiente información :
- total : la cantidad total de memoria que está actualmente instalada en su sistema en kilobytes;
- usada : la cantidad de RAM actualmente usada en su sistema en kilobytes;
- libre : la cantidad de memoria libre disponible en su sistema en kilobytes;
- compartida : representa la memoria utilizada por tmpfs que es un sistema de archivos virtual que parece estar montado pero pertenece a la memoria volátil;
- búferes : memoria utilizada por los buffers del kernel;
- caché : el número de memoria utilizado por la caché de páginas donde los datos podrían ser almacenados primero antes de ser escritos en el disco;
- disponible : la memoria disponible en el sistema en kilobytes
Note que incluso si una gran cantidad de memoria podría ser utilizada por la caché o por los buffers, el Kernel puede liberar este espacio si su sistema requiere más memoria para los procesos.
Al igual que el comando lsblk que descubrimos en nuestros tutoriales de disco, el comando «free «puede mostrarse en un formato amigable para el ser humano.
Para comprobar la memoria RAM actual disponible utilizando un formato amigable para el ser humano, utilice «free» con la opción «-h».
total used free shared buff/cache availableMem: 3.9G 3.3G 127M 38M 400M 256MSwap: 0B 0B 0B
Como puede ver, la salida es más fácil de leer pero está redondeada.
De forma similar, con el comando free puedes hacer que se muestren las columnas totales para comprobar la cantidad total de RAM y swap disponible en tu sistema.
Para mostrar las columnas totales, utiliza «free» con la opción «-t».
$ free -t total used free shared buff/cache availableMem: 4039588 3499392 128828 39596 411368 263292Swap: 0 0 0Total: 4039588 3499392 128828
Nota que los comandos se pueden combinar para tener una salida amigable y para que se muestren las columnas totales.
$ free -th total used free shared buff/cache availableMem: 3.9G 3.3G 125M 38M 402M 257MSwap: 0B 0B 0BTotal: 3.9G 3.3G 125M
Comprobar la RAM usando vmstat
Otra gran manera de comprobar el uso actual de la memoria virtual es usar el comando «vmstat».
La salida puede ser un poco difícil de leer, pero aquí están los detalles de las columnas que se muestran :
- r : número de procesos ejecutables en su sistema;
- b : número de procesos en reposo ininterrumpido;
- swpd : la cantidad de RAM utilizada actualmente por su sistema;
- libre : la memoria disponible
- buff, cache : la RAM utilizada por los buffers del kernel y por las cachés de página;
- inactiva, activa : la cantidad de memoria inactiva y activa
- si : el swap utilizado desde el disco
- así : la memoria de swap intercambiada al disco
Las otras columnas están relacionadas con la E/S del disco y con el uso de la CPU que podrían no ser relevantes en nuestro caso.
$ vmstat -s 4039588 K total memory 3460532 K used memory 3398428 K active memory 198356 K inactive memory 162648 K free memory 48904 K buffer memory 367504 K swap cache 0 K total swap 0 K used swap 0 K free swap
Como puedes ver, te proporciona un gran número de salidas de línea pero sólo unas pocas son relevantes para lo que estamos tratando de conseguir.
En la parte superior de la salida de vmstat, puedes ver la memoria total, la memoria usada, la memoria activa (que equivale a la memoria usada), la inactiva y la libre.
Estas columnas son muy similares a las que se muestran usando el comando free.
También se le proporciona la memoria buffer, la caché de intercambio (que equivale a la caché de páginas) así como el total de intercambio si lo hay.
Inspección de /proc/meminfo para comprobar la RAM
Como ya sabéis, el Kernel es el que virtualiza el sistema de archivos y proporciona puntos de entrada a algunos de los dispositivos de vuestro sistema.
Por ejemplo, el directorio /proc puede almacenar referencias a procesos de tu sistema (es decir, descriptores de archivos) ; de forma similar, el /dev almacenará referencias a dispositivos virtuales que al final apuntan a discos reales.
Sin embargo, un archivo del directorio /proc puede ser más importante que otros a la hora de comprobar tu memoria RAM: meminfo.
Como puedes ver, el Kernel te está proporcionando estadísticas cercanas a las que muestra el comando «free» o «vmstat».
Eso no es en realidad una gran sorpresa porque esos comandos están obteniendo realmente su información del propio archivo meminfo.
Usando el archivo /proc/meminfo, tienes acceso a la cantidad total de memoria de tu sistema, la memoria libre disponible, la memoria disponible así como los buffers y las cachés de página que puedan estar usadas.
Por último, tiene acceso a la caché de swap así como a la swap activa e inactiva utilizada.
Listando el hardware de la RAM utilizando dmidecode
Todos los comandos utilizados anteriormente son muy útiles, pero sólo pueden ser utilizados con el fin de comprobar la RAM utilizada en un momento dado.
En algunos casos, puede que te interese saber más sobre tu hardware de RAM.
Para ello, tienes que usar el comando dmidecode.
Atención : puede que tengas que ser sudo para poder ejecutar dmidecode en tu sistema.
$ sudo dmidecode# dmidecode 3.1Getting SMBIOS data from sysfs.SMBIOS 2.4 present.13 structures occupying 405 bytes.Table at 0x000F10D0.Handle 0x0000, DMI type 0, 24 bytesBIOS Information Vendor: Private Version: 20171212 Release Date: 12/12/2017 Address: 0xE8000 Runtime Size: 96 kB ROM Size: 64 kB Characteristics: BIOS characteristics not supported Targeted content distribution is supported BIOS Revision: 1.0
Por defecto, el dmidecode se utiliza para realizar un volcado de todo el hardware utilizado en tu sistema.
Para obtener el hardware dedicado a tu memoria, tienes que especificar el tipo de hardware utilizado.
$ sudo dmidecode --type memory# dmidecode 3.1 Getting SMBIOS data from sysfs. SMBIOS 2.4 present. Handle 0x1000, DMI type 16, 15 bytes Physical Memory Array Location: Other Use: System Memory Error Correction Type: Multi-bit ECC Maximum Capacity: 4 GB Error Information Handle: Not Provided Number Of Devices: 1 Handle 0x1100, DMI type 17, 21 bytes Memory Device Array Handle: 0x1000 Error Information Handle: 0x0000 Total Width: 64 bits Data Width: 64 bits Size: 4096 MB Form Factor: DIMM Set: None Locator: DIMM 0 Bank Locator: Not Specified Type: RAM Type Detail: None
Como puedes ver, la salida de dmidecode es bastante útil : con ella puedes saber más sobre la capacidad máxima de tu sistema y cómo está distribuida.
En este ejemplo, mi sistema está equipado con 4 GB de memoria total proporcionados por una sola RAM situada en el espacio de memoria DIMM 0.
Utilizando la imagen proporcionada aquí, la memoria RAM se habría introducido en la primera ranura disponible (DIMM 0)
Comprobar el uso de la RAM usando Prometheus
Los métodos descritos anteriormente funcionan muy bien, pero son un poco anticuados en comparación con las soluciones de monitorización modernas.
Una gran manera de rastrear el uso de la memoria RAM es utilizar una pila de monitorización moderna como Prometheus & Grafana.
Prometheus expone un Node Exporter que se puede utilizar con el fin de recoger las métricas del host en particular las métricas de memoria.
Consultando en la página de Github de Node Exporter, tendrás que activar el recolector «meminfo» que está especializado en recoger métricas de memoria del archivo /proc/meminfo.
A partir de ahí, puedes importar fácilmente un dashboard existente a Grafana para tener estadísticas de memoria en tiempo real sobre tu sistema.
Consultando el tutorial de Node Exporter que enlazamos antes deberías llegar a la misma salida, puedes elegir el dashboard de Grafana que quieras aquí.
Rastrea el uso de la memoria RAM con los comandos top/htop
Por último, puede que te resulte útil utilizar los comandos interactivos top y htop para hacer un seguimiento del uso de la memoria.
Top se instala de forma nativa en su sistema, simplemente ejecute «top» con el fin de obtener las estadísticas sobre su sistema.
Como puede ver aquí, se le proporcionan las estadísticas de la CPU, pero también la cantidad total de RAM y swap utilizada por su sistema.
También se le dan las cantidades disponibles, así como las cachés de búfer y de página utilizadas.
Las estadísticas se dan para su sistema completo, pero también se proporcionan para cada proceso individual en su instancia ordenada de arriba a abajo.
El comando htop también se puede utilizar con eficacia con el fin de proporcionar un seguimiento de la memoria amigable en su servidor.
Puede que htop no esté instalado de forma nativa en su sistema, por lo que tendrá que instalarlo.
$ sudo apt-get install htop$ sudo yum install htop
Cuando htop esté instalado, puede empezar a ejecutarlo ejecutando «htop»
Como puede ver, los resultados son bastante similares: simplemente se han hecho más fáciles de leer.
Conclusión
En este tutorial, has aprendido sobre las diferentes formas de comprobar tu memoria RAM en Linux utilizando la línea de comandos o soluciones de monitorización modernas como Prometheus y Grafana.
Si necesitas mejorar la gestión de la memoria en tu sistema, definitivamente deberías revisar los tutoriales relacionados con swap ya que elaboran más sobre la importancia de la memoria virtual en tu sistema.
Si estás interesado en la administración de sistemas Linux, asegúrate de echar un vistazo a otros tutoriales que tenemos sobre el tema.