Table of Contents

Smem: La mejor aplicación para visualizar la memoria RAM en sistemas UNIX

smem es la mejor a día de hoy para visualizar el estado de la memoria ram en sistemas GNU/Linux permitiendo numerosos informes sobre el uso de la misma. A diferencia de las herramientas existentes, smem puede reportar tamaño del conjunto proporcional (PSS), que es una representación más realista de la cantidad de memoria utilizada por las bibliotecas, aplicaciones y usuarios en un sistema de memoria virtual. Antes de empezar a utilizar la herramienta se recomienda la lectura de “Tipos de memoria RAM

Conceptos básicos para usar smem

NOTA: USS y PSS incluyen únicamente el uso de memoria física. No incluyen la memoria que se ha intercambiado a disco.

Características de smem

Enlaces

Uso de smem

Indicando el origen de los datos, herramientas como smemcap permiten hacer copias del estado de la memoria ram en un determinado momento en el tiempo. Las instantáneas de la ram pueden ser con smem abiertas y mostrar la información deseada. Para ello tenemos estas opciones.

-K KERNEL, –kernel=KERNEL

Ruta a la imagen del núcleo descomprimida (vmlinux), al usarse con la opción “-w” permite obtener información de la ram en relación al kernel y sus datos.

-R REALMEM, –realmem=REALMEM

Capacidad de la memoria RAM física (–realmem=2048M), al usarse con la opción “-W” se obtiene el uso de memoria utilizado por el firmware/hardware. Si se usa junto la opción de porcentajes usará el valor como base para realizar los cálculos.

-S SOURCE, –source=SOURCE

Para que smem pueda hacer sus cálculos necesita acceder al directorio /proc, la opción –source permite indicarle un directorio previamente guardado con herramientas del tipo android-smemcap si se trata de dispositivos móviles.

NOTA: El comando “free”, top y la inmensa mayoría de comandos o ficheros que permiten visualizar información de la memoria RAM no incluye la memoria asignada por los dispositivos de hardware (la tarjeta de vídeo a menudo se asigna una buena parte de sus buffers de pantalla) ni la memoria utilizada por el propio núcleo.

smem -R 8388608K -K /boot/vmlinuz-linux -w
Area                           Used      Cache   Noncache 
firmware/hardware            521072          0     521072 
kernel image                   3812          0       3812 
kernel dynamic memory       4424052    4282724     141328 
userspace memory             827704     150976     676728 
free memory                 2611968    2611968          0 

Tipos de reporte

Filtros en los reportes

Nota: Si está ejecutando como un usuario sin privilegios sin especificar “–source” sólo se visualizarán los datos de procesos cuyo /proc/ pueda ser accedido.

smem -M "/usr/share/icons/hicolor/icon-theme.cach" -U busi -P LXDE
  PID User     Command                         Swap      USS      PSS      RSS 
  383 busi     pcmanfm --desktop --profile        0        0        1        8 
  382 busi     lxpanel --profile LXDE             0        4       25       52 

Formatos de salida

Parámetros para utilizar con la opción “-s”, –bar y –pie .

Gráficas con smem

smem --bar=pid -c "uss, user"

Realizar instantáneas del estado de la memoria RAM (Smemcap)

La aplicación smemcap genera un archivo tar en la salida estándar con información obtenido de los siguientes ficheros / directorios.

  1. /proc/$pid/cmdline
  2. /proc/$pid/smaps
  3. /proc/$pid/stat
  4. /proc/meminfo
  5. /proc/version
smemcap | gzip> smemcap.tar.gz 
smem -S smemcap.tar

Formas de obtener el tamaño de la memoria RAM desde consola en GNU/linux

Total de memoria RAM física real instalada en el equipo.

dmidecode -t 17 | grep Size | awk '{s+=$2} END {print s}'
8192

Memoria física disponible.

dmesg | grep Memory
[    0.000000] Memory: 7856952K/8067116K available (5229K kernel code, 857K rwdata, 1632K rodata, 1120K init, 1288K bss, 210164K reserved)
awk '/MemTotal/ { print $2 }' /proc/meminfo
7863724
 free
             total       used       free     shared    buffers     cached
Mem:       7863724    5390780    2472944      93536     113584    4339812
-/+ buffers/cache:     937384    6926340
Swap:      2367484          0    2367484