Tabla de contenidos
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 vmstat
comando, que informa sobre las estadísticas de la memoria virtual .
El comando vmstat
Si escribe vmstat
como 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
Se muestra una pequeña tabla de valores.
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.
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.
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 delay
valor. El delay
valor se proporciona en segundos. Para tener las estadísticas actualizadas cada cinco segundos, usaríamos el siguiente comando:
vmstat 5
Cada cinco segundos vmstat
agregará otra línea de datos a la tabla. Deberá presionar Ctrl + C para detener esto.
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 count
valor además de un delay
valor.
El count
valor indica vmstat
cuántas actualizaciones se deben realizar antes de salir y lo regresa al símbolo del sistema. Si no proporciona un count
valor, vmstat
se ejecutará hasta que Ctrl + C lo detenga.
Para vmstat
proporcionar una actualización cada cinco segundos, pero solo para cuatro actualizaciones, use el siguiente comando:
vmstat 5 4
Después de cuatro actualizaciones se vmstat
detiene por sí solo.
Cambio de unidades
Puede elegir que la memoria y las estadísticas de intercambio se muestren en kilobytes o megabytes utilizando la -S
opció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
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
Las estadísticas de memoria e intercambio ahora se muestran en megabytes. Tenga en cuenta que la -S
opción no afecta a las estadísticas del bloque IO. Estos siempre se muestran en bloques.
Memoria activa e inactiva
Si usa la -a
opció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 -a
opción, como se muestra:
vmstat 5 -a -SM
Las columnas inact y activa se ven afectadas por la opción -S (carácter de unidad).
tenedores
El -f
conmutador 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
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 -m
opción (losas). Necesitará usar sudo
y se le pedirá su contraseña. Como la salida puede ser bastante larga, la estamos canalizando less
.
sudo vmstat -m | Menos
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é.
Presione q
para 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 -s
opción (estadísticas). Tenga en cuenta que es una «s» minúscula.
vmstat -s
Aunque las estadísticas que se informan son en gran medida las mismas que la información que constituye la vmstat
salida predeterminada , algunas de ellas se dividen con más detalle.
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.
Visualización de estadísticas de disco
Puede obtener una lista similar de estadísticas de disco utilizando la -d
opción (disco).
vmstat -d | Menos
Para cada disco, se muestran tres columnas, estas son Lecturas, Escrituras e IO.
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.
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 -D
opción (disk-sum). Tenga en cuenta la «D» mayúscula
vmstat -D
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, squashfs
se 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.
Visualización de estadísticas de partición
Para ver las estadísticas relacionadas con una partición específica, use la -p
opció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
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.
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.
vmstat
puede 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á vmstat
de su lado.