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
- 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
- Página web: http://www.selenic.com/smem
- Repositorio de código fuente: http://selenic.com/repo/smem
- Lista de correo: http://selenic.com/mailman/listinfo/smem
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.
- /proc/$pid/cmdline
- /proc/$pid/smaps
- /proc/$pid/stat
- /proc/meminfo
- /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