User Tools

Site Tools


memoria_ram_en_gnu_linux_con_smem

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

  • USS (Unique Set Size): Memoria no compartida.
  • PSS (Proporcional Set Size): USS + memoria compartida proporcional de un proceso.
  • RSS (Resident Set Size): Memoria física asignada al espacio de direcciones de un proceso, pero de forma no proporcional, es decir, incluyendo también la memoria ocupada por bibliotecas compartidas utilizadas por el proceso.

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

  • Visión general del sistema.
  • Reporte por proceso , mapeo y usuario.
  • Listado y filtrado por proceso , la cartografía , o de usuario.
  • Columnas configurables de múltiples fuentes de datos.
  • Unidades de salida configurables y posibilidad de porcentajes.
  • Cabeceras configurables y totales.
  • Leer datos en tiempo real (/proc).
  • Lectura de instantáneas mediante repositorios o archivos tar comprimidos.
  • Herramienta de captura para sistema embebidos.
  • Visualizar gráficas si se tiene instalado Matplot, se pueden exportar como EPS , PNG, SVG, JPG, etc..

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

  • -m Reporta el uso de memoria mediante mapeo (Map,PIDs,AVGPSS,PSS ).
  • -u Reporta el uso de memoria mediante usuarios.
  • -w Reporta el uso de memoria mediante los grupos de sistema (Mirar -R y -K).

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.

  • -M MAPFILTER, –mapfilter=MAPFILTER Filtra la salida del mapeo.
  • -P PROCESSFILTER, –processfilter=PROCESSFILTER Filtra la salida de procesos.
  • -U USERFILTER, –userfilter=USERFILTER Filtra la salida de usuario.
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

  • -c COLUMNS, –columns=COLUMNS Especificar las columnas a visualizar.
  • -H, –no-header No muestra la cabecera de cada unidad (PID,User,Command,Swap,USS,PSS y RSS).
  • -k, –abbreviate Muestra la unidades (Mb, Kb, etc).
  • -n, –numeric Muestra IDs en vez de los nombres de usuario.
  • -p, –percent Muestra porcentajes.
  • -r, –reverse Muestra la información empezando por el proceso que más consume (Por defecto lo contrario).
  • -t, –totals Muestra los totales.
  • -s SORT, –sort=SORT Ordena la salida mediante los parámetros siguientes.

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

  • maps total number of mappings.
  • name name of process.
  • pid process ID.
  • pss proportional set size (including sharing).
  • rss resident set size (ignoring sharing).
  • swap amount of swap space consumed (ignoring sharing).
  • user owner of process.
  • uss unique set size.
  • vss virtual set size (total virtual memory mapped).

Gráficas con smem

  • –bar=XX Gráfica de barras (Ver los parámetros en el apartado anterior).
  • –pie=XX Gráfica circular (Ver los parámetros en el apartado anterior).
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
memoria_ram_en_gnu_linux_con_smem.txt · Last modified: 2020/12/25 22:57 by 127.0.0.1