Saltar al contenido principal

Comprobar la ocupación de memoria en GNU/Linux

· 5 min de lectura
Vicen Rodríguez

El presente documento recoge una serie de comandos que pueden servir para examinar la ocupación de memoria en una estación con sistema operativo GNU/Linux.

El archivo '/proc/meminfo'

En ‘/proc/meminfo’ se almacenan estadísticas acerca de la utilización de la memoria en un sistema Linux. Este mismo archivo es utilizado por algunos comandos como ‘free’. Puede utilizarse de los siguientes modos:

$ cat /proc/meminfo

$ less /proc/meminfo

$ more /proc/meminfo

$ watch 'cat /proc/meminfo'

$ egrep --color ‘Mem|Cache|Swap’ /proc/meminfo

$ watch “egrep --color ‘Mem|Cache|Swap’ /proc/meminfo”

Aclaración

El símbolo ‘$’ de los ejemplos anteriores no debe introducirse. Habitualmente, cuando se utilizan ejemplos de comandos, se utiliza el símbolo ‘$’ al principio de la línea del comando si se quiere indicar que el comando puede utilizarlo un usuario sin privilegios de administrador, y el símbolo ‘#’ se utiliza para indicar que el comando se está utilizando con privilegios de administrador.

El comando 'free'

El comando ‘free’ permite mostrar la utilización de la memoria. Puede utilizarse de los siguientes modos:

$ free –m

$ free –t -m

$ free –ms 5

En el primer caso se está indicando que el resultado debe indicarse en MB. En el segundo caso se pide que se muestre también el total y que todo se muestre en MB. En el tercer caso, se pide que se muestre en MB el resultado de la ejecución del comando cada 5 segundos. También puede enviarse el resultado del comando ‘free’ a un archivo. Por ejemplo, utilizando el siguiente comando podemos enviar el resultado del comando ‘free’, presentado en MB, cada 30 segundos a un archivo llamado ‘memoria.txt’ que esté en el directorio ‘/tmp’:

$ free -ms 30 > /tmp/memoria.txt

El comando 'vmstat'

$ vmstat

El comando 'top'

$ top

Para ver los procesos ordenados atendiendo al uso de memoria, debe introducirse una ‘M’ (una ‘m’ mayúscula). Si se desea ver una barra representando de manera gráfica el consumo de memoria sobre el total, debe introducirse una ‘m’ (una ‘m’ mayúscula); pulsando una segunda vez la 'm', esa barra se verá como un bloque sólido,

Para salir del comando ‘top’ basta con pulsar la tecla ‘q’.

Otros modos de utilización del comando ‘top’ pueden ser mediante la siguiente sintaxis:

$ top -b -n 1 | grep -i <nombre_de_proceso>

$ top -U <nombre_de_usuario>

Por ejemplo, el siguiente comando mostrará la actividad de los procesos relacionados con 'systemd':

$ top -b -n 1 | grep -i systemd

El siguiente comando mostrará la actividad de los procesos relacionados con el mismo 'top' (y con otros procesos que incluyen la combinación de letras 'top' como parte de su nombre:

$ top -b -n 1 | grep -i top

Y el siguiente comando mostrará la actividad de los procesos puestos en marcha por el usuario 'vicen':

$ top -U vicen

El programa 'atop'

El programa ‘atop’ es un monitor interactivo que permite ver la carga de un sistema GNU/Linux. Puede mostrar la cantidad de memoria utilizada y de memoria libre. Es similar a ‘top’, pero dispone de opciones avanzadas adicionales. La mayoría de distribuciones GNU/Linux no instalan ‘atop’ por defecto.

$ atop

El programa 'htop'

El programa ‘htop’ es un visor de procesos interactivo. Es similar a ‘top’ (y a ‘atop’) pero permite desplazarse por la lista vertical y horizontalmente para ver los procesos y sus líneas de comando completas. En la mayoría de distribuciones de GNU/Linux no está instalado por defecto

$ htop

Gnome System Monitor

La aplicación Gnome System Monitor es una herramienta de interfaz gráfico del escritorio Gnome que permite presentar información básica del sistema y monitorizar procesos, la utilización de recursos y sistemas de ficheros. También puede utilizarse para modificar el comportamiento del sistema. Puede iniciarse yendo al menú ‘System -> Administration -> System monitor’ o tecleando lo siguiente en un intérprete de comandos:

$ gnome-system-monitor

(Aunque la utilización de Gnome System Monitor no debería comportar ningún riesgo, debe utilizarse con precaución en sistemas con un gran número de CPU porque puede provocar un bloqueo de los gráficos o del sistema).

Relación entre memoria y rendimiento

Una ocupación del 90% o más de la RAM se considera una situación crítica.

Una ocupación del 80% o más de la SWAP se considera una situación crítica.

Para resolver problemas relacionados con la memoria y el rendimiento, se recomienda añadir RAM al sistema e incrementar el espacio swap, o mover el espacio swap a otra unidad de disco o a otra controladora.

Otros comandos para comprobar la utilización de la memoria

Para comprobar la utilización de la memoria desde un intérprete de comandos es posible utilizar también alguno de los siguientes:

$ ps fauxwww

$ ps aux | awk ‘{sum +=$4}; END {print sum}’

$ lsb_release -a && free –m

El siguiente comando muestra los diez procesos que consumen más memoria, indicando el % de memoria que consume cada uno de ellos:

$ ps -auxf | sort -nr -k 4 | head -10

Una variación de ese comando puede ser la siguiente:

$ ps -A --sort -rss -o comm,pmem | head -n 11

Cómo liberar la memoria que había sido ocupada pero ya no está siendo utilizada

Para liberar la memoria que había sido ocupada pero ya no está siendo utilizada, puede utilizarse uno de los siguientes comandos.

Para liberar la ‘pagecache’:

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

Para liberar ‘dentries’ e ‘inodos’:

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

Para liberar ‘pagecache’, ‘dentries’ e ‘inodos’:

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