Tener un sistema operativo que cumpla con nuestras expectativas es importante, para que de este modo podamos sentirnos cómodos durante su uso y podemos realizar todas aquellas tareas que necesitamos en cada momento de una manera productiva. Pero además de esto, es importante que dispongamos de la memoria RAM necesaria para poder ejecutar todo aquello que queramos en nuestro PC.
La memoria RAM es una de las piezas fundamentales en cualquier sistema operativo pueda ser ejecutado de una forma completa y con la velocidad que se necesita, lógicamente existen escenarios donde se requiere un nivel de RAM mucho mas alto de RAM como lo son entornos de juego, de servidores, etc.
En el caso de Linux detectar con precisión el uso y comportamiento de la memoria RAM puede llegar a ser complejo y es en este caso donde Solvetic te explicará cómo realizar esta tarea de forma simple.
1. Cómo analizar memoria RAM en Linux
En primer lugar vamos a revisar el sistema de archivos /proc/meminfo usando cat de la siguiente manera:
cat /proc/meminfo
Para listar los procesos con sus PID vamos a ejecutar el comando “ps”:
Allí tendremos el PID del proceso, ahora usaremos el comando pmap para gestionar dicha RAM.
El comando pmap se encarga de brindar un informe del mapa de memoria de un proceso en Linux, la sintaxis a usar es:
pmap [ -x | -d ] [ -q ] pids...Ejecutaremos pmap usando la opción -x (extendida) con el fin de acceder a detalles más completos del uso de memoria de un proceso especifico:
pmap -x PID
En la parte final es posible ver en detalle la memoria RAM que está usando ese proceso.
Algunos de los campos que muestra pmap son:
Es posible usar el comando ps con la opción -o (salida - output), allí vamos a seleccionar la columna RSS e ingresamos el PID:
ps -o rss PID
Con RSS no se tiene acceso a detalles del proceso como las tablas de páginas, la pila del núcleo, la estructura thread_info o la estructura task_struc, es un resumen mucho más directo.
RSS (Resident Set Size - tamaño del conjunto residente), hace referencia a la cantidad de memoria RAM que se brinda a un proceso, esto excluye el espacio de intercambio Swap, pero se añade la memoria RAM usada por las bibliotecas compartidas del proceso.
Algunas opciones extras de usar pmap son:
- -x: extendido: despliega el formato extendido
- -d: dispositivo: despliega el formato del dispositivo
- -q: quiet: no muestra algunas líneas de encabezado/pie de página
- -V: permite ver la versión de pmap
2. Uso de smem para acceder a detalles de la memoria RAM
Esta es una utilidad que genera informes sobre el uso de la memoria junto a la memoria compartida, la memoria no compartida se informa como USS (Unique Set Size), con esta utilidad la memoria se puede informar por proceso, por usuario, por mapeo o bien en todo el sistema Linux si es necesario.
Instalamos smem:
sudo apt install smem
Ingresamos la letra S para confirmar la descarga:
Veremos el siguiente mensaje:
Damos clic en Si y esperamos que el proceso llegue a su final:
Podemos ejecutar smem sin parámetros para acceder a detalles completos del uso de memoria RAM:
Encontramos las columnas:
- PID: Indica el ID de proceso que usa la memoria
- Usuario: es el nombre de usuario propietario del proceso
- Comando: Es la línea de comando que inició el proceso
- Intercambio (Swap): permite ver la cantidad de espacio de intercambio usada por el proceso
- USS: es el tamaño único del conjunto
- PSS: es el tamaño del conjunto proporcional
- RSS: es el tamaño del conjunto residente
smem -p
Para ver los detalles con indicadores de unidad usaremos la opción -k:
smem -k
Para añadir la línea de totales ejecutamos:
smem -k -t
Como mencionamos, smem puede dar detalles sobre el uso de la memoria ya sea de un usuario, por las bibliotecas o de todo el sistema, para filtrar por usuario ejecutamos:
smem -u
Ahora podemos agregar SUDO para acceder a más detalles:
sudo smem -u
Para ver el uso asignado a las bibliotecas, ejecutaremos:
smem -m -k -t
Para ver el uso de memoria en todo el sistema vamos a ejecutar:
smem -w -k -t
Es posible usar la opción -c (columnas) y luego indicar qué columnas serán agregadas al resultado, por ejemplo ejecutaremos:
smem -c pss -P firefox -k -t | tail -n 1La opción -P (filtro de proceso) permite indicar una cadena de búsqueda con smem:
Veremos el tamaño de dicha búsqueda.
Es posible usar las opciones --pie o –bar para acceder a un reporte grafico del uso de memoria con smem, ejecutamos:
smem --pie name -s uss
Al pulsar Enter veremos el uso de RAM en formato grafico:
Esto da un resultado mucho mas dinámico para ver el uso de RAM en Linux.
Para usar smem en Linux es necesario:
- Kernel de Linux con la métrica 'Pss' en /proc/<pid>/smaps (versiones 2.6.27 o posterior)
- Python 2.x (2.4 o superior)
- La biblioteca matplotlib (para generar tablas gráficas)