Introducción
Al solucionar problemas de ralentización o mal comportamiento del sistema o de las aplicaciones, una de las primeras cosas que hay que comprobar es el uso de la memoria del sistema.
Este artículo explica cómo verificar el uso de RAM en Linux usando diferentes comandos.
Si desea verificar la RAM en un servidor remoto, siga leyendo; de lo contrario, omita el primer párrafo "Conexión al servidor" y lea el siguiente.
Conexión al servidor
Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:
ssh root@IP_DEL_SERVER
A continuación, deberá ingresar la contraseña del usuario root.
Si no usa el usuario raíz, puede iniciar sesión con otro nombre de usuario usando el mismo comando, luego cambie la raíz a su nombre de usuario:
ssh nome_utente@IP_DEL_SERVER
Luego se le pedirá que ingrese su contraseña de usuario.
El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Comando gratis
free
es el comando más utilizado para verificar el uso de memoria de un sistema Linux. Muestra información sobre la memoria total, usada y libre.
Generalmente, free
se invoca con la -h
que significa imprimir la salida en formato legible por humanos:
free -h
total used free shared buff/cache available
Mem: 1.9Gi 449Mi 166Mi 0.0Ki 1.3Gi 1.3Gi
Swap: 0B 0B 0B
Esto es lo que significa cada columna:
- total: la cantidad total de memoria que pueden utilizar las aplicaciones.
- utilizado: memoria utilizada. Se calcula como:
used = total - free - buffers - cache
- free: memoria libre /no utilizada.
- compartido: esta columna se puede ignorar; se muestra solo por compatibilidad con versiones anteriores.
- buff /cache: la memoria combinada utilizada por el kernel y los búferes de caché y losas de página. Esta memoria se puede recuperar en cualquier momento si las aplicaciones lo necesitan.
- disponible: memoria disponible estimada para iniciar nuevas aplicaciones, sin intercambiar.
El free
imprime información para la memoria física y el intercambio del sistema.
Comando superior
top
es una utilidad de línea de comandos que muestra información en tiempo real sobre los procesos en ejecución. También muestra el resumen del sistema, incluido el uso de la memoria.
Para invocar el comando, simplemente escriba top
:
top
La salida se verá así:
top - 18:04:15 up 6 days, 4:27, 1 user, load average: 0.00, 0.01, 0.00
Tasks: 84 total, 1 running, 83 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem: 1939.7 total, 166.0 free, 450.4 used, 1323.4 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 1321.5 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
100985 jenkins 20 0 2639512 382876 30480 S 0.3 19.3 7:19.48 java
1 root 20 0 168636 12588 8416 S 0.0 0.6 0:58.16 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-kblockd
9 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
10 root 20 0 0 0 0 S 0.0 0.0 0:09.42 ksoftirqd/0
11 root 20 0 0 0 0 I 0.0 0.0 0:16.22 rcu_sched
12 root rt 0 0 0 0 S 0.0 0.0 0:04.52...
El encabezado de salida incluye información sobre la memoria física y de intercambio total, libre y usada del sistema.
La %MEM
proporciona información sobre el uso compartido de memoria física disponible para cada proceso en ejecución.
Comando /proc /meminfo
La forma más sencilla de comprobar el uso de RAM es ver el contenido del archivo virtual /proc/meminfo
. Este archivo es utilizado por free
, top
, ps
y otros comandos del sistema de información.
Use less
o cat
para ver el contenido del /proc/meminfo
:
cat /proc/meminfo
El archivo incluye una gran cantidad de información sobre la memoria del sistema y el uso de intercambio:
MemTotal: 1986280 kB
MemFree: 170428 kB
MemAvailable: 1353864 kB
Buffers: 85156 kB
Cached: 1190784 kB
SwapCached: 0 kB
Active: 916192 kB
Inactive: 764900 kB
Active(anon): 405576 kB
Inactive(anon): 300 kB
Active(file): 510616 kB
Inactive(file): 764600 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 216 kB
Writeback: 0 kB
AnonPages: 405196 kB
Mapped: 87620 kB
Shmem: 724 kB...
La información del /proc/meminfo
se puede analizar y utilizar en scripts de shell.
Secuencia de comandos ps_mem
ps_mem
es un script de Python que informa el uso de RAM por programa. Funciona con Python 2 y 3 y se puede instalar con pip
:
sudo pip3 install ps_mem
La ejecución de ps_mem
requiere privilegios de administrador:
sudo ps_mem
La salida incluirá el uso de memoria de cada programa en ejecución en orden ascendente:
Private + Shared = RAM used Program
104.0 KiB + 186.0 KiB = 290.0 KiB none
204.0 KiB + 380.0 KiB = 584.0 KiB atd
384.0 KiB + 474.0 KiB = 858.0 KiB daemon
320.0 KiB + 600.0 KiB = 920.0 KiB cron
380.0 KiB + 896.0 KiB = 1.2 MiB agetty (2)
632.0 KiB + 1.2 MiB = 1.8 MiB qemu-ga
1.1 MiB + 1.8 MiB = 2.9 MiB dbus-daemon
1.0 MiB + 2.1 MiB = 3.1 MiB systemd-timesyncd
1.3 MiB + 1.9 MiB = 3.2 MiB sudo
1.9 MiB + 2.2 MiB = 4.1 MiB systemd-udevd
980.0 KiB + 3.3 MiB = 4.2 MiB polkitd...
Esta secuencia de comandos es útil cuando desea averiguar qué programa en ejecución ocupa la mayor parte de la memoria del sistema.
Conclusión
Le mostramos varios comandos que puede usar para verificar el uso de la memoria del sistema.