Cómo usar el comando vmstat en Linux

Indicador de terminal en un escritorio Linux
Fatmawati Achmad Zaenuri / Shutterstock.com

Su computadora Linux o macOS está usando memoria virtual. Descubra cómo está afectando el uso de su sistema de la memoria física, la CPU y los recursos del disco duro.

¿Qué es la memoria virtual?

Su computadora está equipada con una cantidad finita de memoria física llamada memoria de acceso aleatorio (RAM). Esta RAM debe ser administrada por el kernel y compartida entre el sistema operativo y cualquier aplicación que se esté ejecutando. Si estas demandas combinadas exigen más memoria de la que está instalada físicamente en su computadora, ¿qué puede hacer el kernel?

Los sistemas operativos Linux y similares a Unix, como macOS, pueden usar espacio en su disco duro para ayudarlos a administrar las demandas de memoria. Un área reservada de espacio en el disco duro llamada «espacio de intercambio» se puede usar como si fuera una extensión de la RAM. Esta es la memoria virtual.

El kernel de Linux puede escribir el contenido de un bloque de memoria en el espacio de intercambio y liberar esa región de RAM para que la use otro proceso. La memoria intercambiada, también llamada «paginada», se puede recuperar del espacio de intercambio y restaurar a la RAM cuando sea necesario.

Por supuesto, la velocidad de acceso a la memoria paginada es más lenta que la de la memoria almacenada en la RAM. Y esa no es la única compensación. Si bien la memoria virtual proporciona una forma para que Linux administre sus demandas de memoria, el uso de memoria virtual aumenta las cargas en otras partes de la computadora.

Su disco duro debe realizar más lecturas y escrituras. El kernel, y por lo tanto, la CPU, debe trabajar más a medida que intercambia memoria, ingresa y mantiene todas las placas girando para satisfacer las necesidades de memoria de los diferentes procesos.

Linux proporciona una forma de monitorear toda esta actividad en la forma del vmstatcomando, que informa sobre las estadísticas de la memoria virtual .

El comando vmstat

Si escribe vmstatcomo un comando sin parámetros, le mostrará un conjunto de valores. Estos valores son los promedios de cada una de las estadísticas desde que se reinició su computadora por última vez. Estas cifras no son una instantánea de los valores «ahora mismo».

vmstat

vmstat en una ventana de terminal

Se muestra una pequeña tabla de valores.

Salida de vmstat en una ventana de terminal

Hay columnas tituladas Procs, Memory, Swap, IO, System y CPU. La última columna (la columna más a la derecha) contiene los datos relacionados con la CPU.

vmstat genera columnas de la derecha en una ventana de terminal

Aquí hay una lista de los elementos de datos en cada columna.

Proc

  • r : el número de procesos ejecutables. Estos son procesos que se han iniciado y están en ejecución o están esperando su próxima ráfaga de ciclos de CPU divididos en el tiempo.
  • b : El número de procesos en suspensión ininterrumpida. El proceso no está inactivo, está realizando una llamada al sistema de bloqueo y no se puede interrumpir hasta que haya completado su acción actual. Por lo general, el proceso es un controlador de dispositivo que espera que se libere algún recurso. Cualquier interrupción en cola para ese proceso se maneja cuando el proceso reanuda su actividad habitual.
Relacionado:  Cómo crear rápidamente un archivo de texto usando la línea de comandos en Linux

Memoria

  • swpd : la cantidad de memoria virtual utilizada. En otras palabras, cuánta memoria se ha intercambiado.
  • free : la cantidad de memoria inactiva (actualmente sin usar).
  • buff : la cantidad de memoria utilizada como búfer.
  • caché : la cantidad de memoria utilizada como caché.

Intercambiar

  • si : cantidad de memoria virtual intercambiado en desde el espacio de intercambio.
  • por lo que : cantidad de memoria virtual intercambiado a cabo a espacio de intercambio.

IO

  • bi : Bloques recibidos de un dispositivo de bloque. El número de bloques de datos utilizados para intercambiar la memoria virtual de nuevo a la RAM.
  • bo : Bloques enviados a un dispositivo de bloque. El número de bloques de datos que se utilizan para intercambiar la memoria virtual de la RAM al espacio de intercambio.

Sistema

  • in : el número de interrupciones por segundo, incluido el reloj.
  • cs : el número de cambios de contexto por segundo. Un cambio de contexto es cuando el kernel cambia del procesamiento en modo sistema al procesamiento en modo usuario.

UPC

Estos valores son todos porcentajes del tiempo total de CPU.

  • us : tiempo dedicado a ejecutar código que no es del kernel. Es decir, cuánto tiempo se dedica al procesamiento del tiempo del usuario y al procesamiento del tiempo agradable.
  • sy : tiempo dedicado a ejecutar el código del kernel.
  • id : tiempo de inactividad.
  • wa : Tiempo dedicado a la espera de entrada o salida.
  • st : tiempo robado de una máquina virtual. Este es el tiempo que una máquina virtual tiene que esperar a que el hipervisor termine de dar servicio a otras máquinas virtuales antes de que pueda regresar y atender esta máquina virtual.

Usando un intervalo de tiempo

Podemos  vmstat proporcionar actualizaciones periódicas de estas cifras mediante el uso de un delayvalor. El delayvalor se proporciona en segundos. Para tener las estadísticas actualizadas cada cinco segundos, usaríamos el siguiente comando:

vmstat 5

vmstat 5 en una ventana de terminal

Cada cinco segundos vmstatagregará otra línea de datos a la tabla. Deberá presionar Ctrl + C para detener esto.

salida de vmstat 5 en una ventana de terminal

Usando un valor de conteo

El uso de un delay valor demasiado bajo ejercerá una presión adicional sobre su sistema. Si necesita realizar actualizaciones rápidas para intentar diagnosticar un problema, se recomienda que utilice un countvalor además de un delayvalor.

El countvalor indica vmstatcuántas actualizaciones se deben realizar antes de salir y lo regresa al símbolo del sistema. Si no proporciona un countvalor, vmstatse ejecutará hasta que Ctrl + C lo detenga.

Para vmstatproporcionar una actualización cada cinco segundos, pero solo para cuatro actualizaciones, use el siguiente comando:

vmstat 5 4

vmstat 5 4 en una ventana de terminal

Después de cuatro actualizaciones se vmstatdetiene por sí solo.

salida de vmstat 5 4 en una ventana de terminal

Cambio de unidades

Puede elegir que la memoria y las estadísticas de intercambio se muestren en kilobytes o megabytes utilizando la -Sopción (carácter de unidad). Esto debe ser seguido por uno de k, K, m, o M. Estos representan:

  • k : 1000 bytes
  • K : 1024 bytes
  • m : 1000000 bytes
  • M : 1048576 bytes
Relacionado:  ¿En qué se diferencia Crosh de la terminal de Linux en un Chromebook?

Para que las estadísticas se actualicen cada 10 segundos con la memoria y las estadísticas de intercambio mostradas en megabytes, use el siguiente comando:

vmstat 10 -SM

vmstat 10 -SM en una ventana de terminal

Las estadísticas de memoria e intercambio ahora se muestran en megabytes. Tenga en cuenta que la -Sopción no afecta a las estadísticas del bloque IO. Estos siempre se muestran en bloques.

salida de vmstat 10 -SM en una ventana de terminal

Memoria activa e inactiva

Si usa la -aopción (activa), las columnas de memoria caché y de memoria caché se reemplazan por las columnas «inact» y «activa». Como sugerirían, estos muestran la cantidad de memoria inactiva y activa.

Para ver estas dos columnas en lugar de las columnas de mejora y caché, incluya la -aopción, como se muestra:

vmstat 5 -a -SM

vmstat 5 -a -SM en una ventana de terminal

Las columnas inact y activa se ven afectadas por la opción -S (carácter de unidad).

salida de vmstat 5 -a -SM en una ventana de terminal

tenedores

El -fconmutador muestra el número de bifurcaciones que se han producido desde que se inició la computadora.

En otras palabras, esto muestra la cantidad de tareas que se han iniciado (y, para la mayoría de ellas, cerradas nuevamente) desde que se inició el sistema. Cada proceso iniciado desde la línea de comando aumentaría esta cifra. Cada vez que una tarea o proceso genera o clona una nueva tarea, esta cifra aumentará.

vmstat -f

vmstat -f en una ventana de terminal

La pantalla de horquillas no se actualiza.

Visualización de Slabinfo

El kernel tiene su propia gestión de memoria de la que preocuparse, así como la gestión de memoria para el sistema operativo y todas las aplicaciones.

Como puede imaginar, el kernel asigna y desasigna memoria una y otra vez para los diferentes tipos de objetos de datos que debe manejar. Para que esto sea lo más eficiente posible, utiliza un sistema llamado losas. Esta es una forma de almacenamiento en caché.

La memoria asignada, utilizada y que ya no es necesaria para un tipo específico de objeto de datos del kernel se puede reutilizar para otro objeto de datos del mismo tipo sin que la memoria sea desasignada y reasignada. Piense en las losas como segmentos de RAM preasignados, hechos a medida, para las propias necesidades del kernel.

Para ver las estadísticas de las losas, use la -mopción (losas). Necesitará usar sudoy se le pedirá su contraseña. Como la salida puede ser bastante larga, la estamos canalizando less.

sudo vmstat -m | Menos

sudo vmstat -m |  menos en una ventana de terminal

La salida tiene cinco columnas. Estos son:

  • Caché : Nombre de la caché.
  • num : el número de objetos actualmente activos en esta caché.
  • total : el número total de objetos disponibles en esta caché.
  • tamaño : el tamaño de cada objeto en la caché.
  • páginas : el número total de páginas de memoria que tienen (al menos) un objeto actualmente asociado con esta caché.

salida de sudo vmstat -m |  menos en una ventana de terminal

Presione qpara salir less.

Visualización de contadores de eventos y estadísticas de memoria

Para mostrar una página de contadores de eventos y estadísticas de memoria, use la -sopción (estadísticas). Tenga en cuenta que es una «s» minúscula.

vmstat -s

vmstat -s en una ventana de terminal

Aunque las estadísticas que se informan son en gran medida las mismas que la información que constituye la vmstatsalida predeterminada , algunas de ellas se dividen con más detalle.

Relacionado:  Cómo usar BleachBit en Linux

Por ejemplo, la salida predeterminada combina el tiempo de CPU del usuario agradable y no agradable en la columna «nosotros». La pantalla -s (estadísticas) enumera estas estadísticas por separado.

salida de vmstat -s en la ventana terminal

Visualización de estadísticas de disco

Puede obtener una lista similar de estadísticas de disco utilizando la -dopción (disco).

vmstat -d | Menos

vmstat -d |  menos en una ventana de terminal

Para cada disco, se muestran tres columnas, estas son Lecturas, Escrituras e IO.

salida de vmstat -d |  menos en una ventana de terminal

IO es la columna de la derecha. Tenga en cuenta que la columna seg en IO se mide en segundos, pero las estadísticas basadas en el tiempo en las columnas de lectura y escritura se miden en milisegundos.

salida vmstat -d |  menos en una ventana de terminal

Esto es lo que significan las columnas:

Lee

  • total : el recuento total de lecturas de disco.
  • fusionado : el recuento total de lecturas agrupadas.
  • sectores : el recuento total de sectores que se han leído.
  • ms : Cantidad total de tiempo en milisegundos que se utilizó para leer datos del disco.

escribe

  • total : el recuento total de escrituras en disco.
  • fusionado : el recuento total de escrituras agrupadas.
  • sectores : el recuento total de sectores en los que se escribe.
  • ms = Recuento total de tiempo en milisegundos que se utilizó para escribir datos en el disco.

IO

  • cur:  número de lecturas o escrituras de disco actuales.
  • seg:  tiempo empleado en segundos para cualquier lectura o escritura en curso.

Visualización de estadísticas de disco de resumen

Para ver una visualización rápida de las estadísticas resumidas de la actividad de su disco, use la -Dopción (disk-sum). Tenga en cuenta la «D» mayúscula

vmstat -D

vmstat -D en una ventana de terminal

La cantidad de discos puede parecer anormalmente alta. La computadora utilizada para investigar este artículo ejecuta Ubuntu. Con Ubuntu, cada vez que instala una aplicación desde un Snap, squashfsse crea un pseudo-sistema de archivos que se adjunta a un dispositivo / dev / loop.

Es molesto que muchas de las utilidades y comandos de Linux cuenten estas entradas de dispositivo como dispositivos de disco duro.

salida de vmstat -D en una ventana de terminal

Visualización de estadísticas de partición

Para ver las estadísticas relacionadas con una partición específica, use la -popción (partición) y proporcione el identificador de la partición como parámetro de línea de comando.

Aquí vamos a ver la partición sda1. El dígito uno indica que esta es la primera partición en el dispositivo sda, que es el disco duro principal de esta computadora.

vmstat -p sda1

vmstat -p en una ventana de terminal

La información devuelta muestra el recuento total de lecturas y escrituras en disco desde y hacia esa partición, y el número de sectores incluidos en las acciones de lectura y escritura en disco.

salida de vmstat -p sda1 en una ventana de terminal

Un vistazo bajo el capó

Siempre es bueno saber cómo levantar el capó y ver qué pasa debajo. A veces, tratará de resolver un problema, a veces no le interesará porque desea saber cómo funciona su computadora.

vmstatpuede proporcionarle un montón de información útil. Ahora sabe cómo acceder a él y lo que significa. Y estar advertido está prevenido: cuando necesite arremangarse y hacer algunos diagnósticos, sabrá que está vmstatde su lado.