Todo sobre Apple, Android, Juegos Apks y Sitios de Peliculas

Comprenda fácilmente el uso de RAM de Linux con Smem

El uso de la memoria de Linux puede ser difícil de interpretar y de entender. Con smem es fácil saber qué memoria está usando un proceso y qué procesos están usando más.

Uso de memoria

Linux le ofrece muchas formas de comprobar qué está pasando con la RAM de su computadora. El problema es que la gestión de la memoria es un desafío complicado para su sistema operativo. Tiene que hacer malabares con la RAM física, la RAM virtual en forma de espacio de intercambio y las demandas de los diferentes tipos de procesos que se ejecutan en un momento dado.

Relacionado: ¿Cuánta RAM necesita su computadora para juegos de PC?

Los procesos consumen RAM a medida que se cargan en la memoria. Luego solicitan más RAM para tener espacio para realizar cualquier tarea para la que están diseñados. Algunos procesos apenas afectan la RAM, otros consumen mucha memoria.

El kernel y el resto del sistema operativo, su entorno de escritorio y cada aplicación o sesión de línea de comando que ejecuta claman por una parte de la cantidad finita de RAM instalada en su computadora. Algunos procesos generan otros procesos. Algunos procesos comparten RAM con otros procesos.

Relacionado: Cómo verificar el uso de la memoria desde la terminal de Linux

Intentando descifrar todo esto y encontrar una respuesta sencilla a la pregunta “¿Cuánta RAM utiliza este programa o proceso?” puede ser un desafío sorprendente. La granularidad es excelente y tiene su lugar, pero, igualmente, el exceso de información puede ser un impedimento.

Por ejemplo, usando

 cat 

para asomarse al /proc/meminfo pseudosistema de archivos devolvió 50 líneas de salida en la máquina utilizada para investigar este artículo. ¿Por dónde empiezas?

cat /proc/meminfo

Y algunas utilidades de Linux dan respuestas diferentes. En nuestra máquina de prueba, teníamos una instancia de menos ejecución, que tenía un proceso ID de 2183.

Podemos usar la utilidad pmap con la opción -x (extendida) para obtener una imagen completa del uso de memoria de un proceso. Lo usaremos con el proceso. ID de nuestra instancia de less:

pmap -x 2183

En la parte inferior del resultado, obtenemos un total del tamaño del conjunto residente, que es la cantidad de RAM principal que se utiliza.

Luego usamos la utilidad ps con la opción -o (salida), seleccionamos la columna RSS y le pasamos el proceso. ID de la misma instancia de menos:

ps -o rss 2183

Obtenemos un resultado diferente. Esta es una decisión de diseño por parte de los autores de ps. Esto es de la página de manual de ps:

Los campos TAMAÑO y RSS no cuentan algunas partes de un proceso, incluidas las tablas de páginas, la pila del núcleo, la estructura thread_info y la estructura task_struct. Esto suele ser al menos 20 KiB de memoria que siempre reside. TAMAÑO es el tamaño virtual del proceso (código+datos+pila).

Los autores de otras utilidades tienen sus propios puntos de vista sobre cómo medir el uso de RAM.

El RSS, el USS y el PSS

El tamaño del conjunto residente (RSS) es la cantidad de RAM asignada a un proceso, excluyendo el espacio de intercambio, pero incluyendo cualquier RAM requerida por las bibliotecas compartidas que utiliza el proceso.

Relacionado: Por qué es bueno que la RAM de su computadora esté llena

RSS casi siempre informa demasiado sobre el uso de RAM. Si dos o más procesos utilizan una o más bibliotecas compartidas, RSS simplemente agregará el uso de RAM de cada biblioteca a su recuento de uso de RAM para cada uno de esos procesos. Además de la inexactitud, hay cierta ironía en esto. Las bibliotecas compartidas significan que cada proceso no necesita cargar su propia instancia privada de una biblioteca. Si la biblioteca ya está en la memoria, la compartirá y reducirá la sobrecarga de RAM.

El tamaño del conjunto proporcional intenta solucionar este problema dividiendo la cantidad de memoria compartida entre los procesos que la comparten. Si hay cuatro procesos que comparten algo de memoria, PSS informa que cada uno de esos procesos utiliza el 25% de la RAM compartida. Esta es una aproximación, pero se parece más a lo que está pasando que al cuadro que pinta RSS.

El tamaño de conjunto único es la cantidad de RAM que utiliza exclusivamente un proceso, ya sea que el proceso la consuma directamente o la utilicen bibliotecas que el proceso utiliza exclusivamente. Nuevamente, ignora el espacio de intercambio. Sólo le interesa la RAM física genuina.

USS y PSS son términos y conceptos que fueron propuesto por Matt Mackallel autor de smem.

La utilidad smem

La utilidad smem informa sobre la memoria utilizada por los procesos, los usuarios, el mapeo o en todo el sistema. En todas las distribuciones que probamos, requirió instalación. Para instalarlo en Ubuntu, use este comando:

sudo apt install smem

Para instalar smem en Fedora necesitas escribir:

sudo dnf install smem

Para instalar smem en Manjaro use:

sudo pacman -Sy smem

El uso de smem sin opciones le brinda una lista de los procesos que utilizan RAM.

smem

Se muestra una tabla de información en la ventana del terminal.

Las columnas son:

  • PID: El proceso ID del proceso que está utilizando la memoria.
  • Usuario: El nombre de usuario del usuario propietario del proceso.
  • Dominio: La línea de comando que inició el proceso.
  • Intercambio: Cuánto espacio de intercambio está utilizando el proceso.
  • USS: El tamaño de conjunto único.
  • PSS: El tamaño del conjunto proporcional.
  • RSS: El tamaño del conjunto residente.

Para ver los tamaños expresados ​​como porcentajes, utilice la opción -p (porcentaje).

smem -p

Los tamaños en bytes se han reemplazado por porcentajes.

Para ver las figuras representadas en una forma más amigable para los humanos, use la opción -k (abreviado). Esto reduce las cifras y agrega indicadores unitarios.

smem -k

En lugar de bytes sin formato, los tamaños se muestran en megabytes, gigabytes, etc.

Para agregar una línea de totales, use la opción -t (totales).

smem -k -t

La última línea del resultado muestra los totales de cada columna.

Refinando el informe

Puede pedirle a smem que informe sobre el uso de la memoria por parte de los usuarios, el mapeo (bibliotecas) o todo el sistema. Para filtrar la salida por usuario, utilice la opción -u (usuario). Note que si desea ver algo más que su propio uso, deberá ejecutar smem con sudo.

smem -u
sudo smem -u

Como puede ver, la salida se deforma para nombres de usuario de más de ocho caracteres.

Para ver el uso asignado a las bibliotecas que están en uso, independientemente de qué procesos estén usando las bibliotecas, ni qué usuarios sean propietarios de esos procesos, use la opción -m (asignación).

smem -m -k -t

También solicitamos valores legibles por humanos y un total.


 

Para ver el uso de memoria en todo el sistema, utilice la opción -w (en todo el sistema).

smem -w -k -t

Informes sobre un único programa

Con un poco de magia en la línea de comandos, podemos generar informes sobre un único programa y todos sus subprocesos. Canalizaremos la salida de smem a tail y le pediremos a tail que muestre solo la última línea. Le diremos a smem que utilice valores legibles por humanos y que proporcione un total. El total será la última línea, y esa es la línea final que se mostrará para nosotros.

Usaremos la opción -c (columnas) con smem y le indicaremos qué columnas queremos que se incluyan en nuestra salida. Restringiremos esto a la columna Tamaño de conjunto proporcional. La opción -P (filtro de proceso) nos permite darle una cadena de búsqueda a smem. Solo se incluirán líneas de salida coincidentes.

smem -c pss -P firefox -k -t | tail -n 1

Esa es una forma rápida y sencilla de averiguar el consumo de RAM de un programa y sus procesos secundarios.

Generando gráficos

Puede pasar las opciones –pie o –bar para que smem genere gráficos. Hay que decir que con demasiadas categorías los gráficos rápidamente se vuelven ininteligibles, pero pueden resultar útiles para una visión general rápida.

El formato del comando es:

smem --pie name -s uss

El gráfico circular aparece en su propia ventana de visualización.

Para ver otros gráficos, utilice pss o rss en lugar de uss. Para ver un gráfico de barras, utilice –bar en lugar de –pie.

Para que esto funcione necesitarás tener instalado Python, junto con la biblioteca matplotlib. Estos ya estaban instalados en las distribuciones Ubuntu, Fedora y Manjaro que probamos.

Las cosas buenas vienen en paquetes pequeños

La utilidad smem tiene algunos trucos más bajo la manga y le recomendamos que consulte su página de manual. Su repertorio principal es el que hemos descrito aquí, y es una pequeña herramienta excelente para tener en su caja de herramientas CLI.

Relacionado: 37 comandos importantes de Linux que debes conocer