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 requieren 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 utilizar 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 procedimiento. La memoria intercambiada, además llamada «paginada», se puede recuperar del espacio de intercambio y restaurar a la RAM cuando sea necesario.
Desde luego, 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. Aunque la memoria virtual proporciona una forma para que Linux administre sus demandas de memoria, el uso de la 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 eso, la CPU, debe hacer más trabajo, puesto que intercambia memoria, intercambia memoria y mantiene todas las placas girando para satisfacer las necesidades de memoria de los diferentes procesos.
Linux le proporciona una forma de supervisar toda esta actividad en forma de vmstat
comando, que informa sobre estadísticas de 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 para cada una de las estadísticas desde la última vez que reinició su computadora. Estas cifras no son una instantánea de los valores «en este momento».
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.
A continuación, se muestra una lista de los ítems de datos de 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 procedimiento 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 procedimiento es un controlador de dispositivo que espera que se libere algún recurso. Cualquier interrupción en cola para ese procedimiento se maneja cuando el procedimiento reanuda su actividad usual.
Memoria
- swpd: la cantidad de memoria virtual utilizada. Dicho de otra forma, cuánta memoria se ha intercambiado.
- gratis: la cantidad de memoria inactiva (hoy en día sin utilizar).
- fuerte: la cantidad de memoria utilizada como búfer.
- cache: la cantidad de memoria utilizada como caché.
Intercambio
- si: Cantidad de memoria virtual intercambiada en desde el espacio de intercambio.
- asi que: Cantidad de memoria virtual intercambiada fuera para intercambiar espacio.
IO
- bi: Bloques recibidos de un dispositivo de bloque. La cantidad de bloques de datos utilizados para intercambiar la memoria virtual nuevamente en la RAM.
- bo: Bloques enviados a un dispositivo de bloque. El número de bloques de datos utilizados para intercambiar la memoria virtual de la RAM al espacio de intercambio.
Sistema
- en: 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.
- nosotros: Tiempo dedicado a ejecutar código que no es del núcleo. Dicho de otra forma, 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.
- identificación: Tiempo de inactividad.
- Washington: Tiempo dedicado a la espera de entrada o salida.
- S t: 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 tener vmstat
proporcionar actualizaciones periódicas de estas cifras a través de un delay
valor. los delay
El 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
Usando un valor demasiado bajo delay
El valor ejercerá una presión adicional sobre su sistema. Si necesita tener actualizaciones rápidas para intentar diagnosticar un obstáculo, se recomienda que utilice un count
valor así como un delay
valor.
los count
el valor dice vmstat
cuántas actualizaciones realizar antes de que salga y lo devuelva al símbolo del sistema. Si no proporciona un count
valor, vmstat
se ejecutará hasta que se detenga a través de Ctrl + C.
Tener vmstat
proporcione una actualización cada cinco segundos, pero solo para cuatro actualizaciones, use el siguiente comando:
vmstat 5 4
Después de cuatro actualizaciones vmstat
se detiene por sí solo.
Cambio de unidades
Puede seleccionar que la memoria y las estadísticas de intercambio se muestren en kilobytes o megabytes usando el -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
- metro: 1000000 bytes
- METRO: 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 -S M
Las estadísticas de memoria e intercambio ahora se muestran en megabytes. Tenga en cuenta que el -S
La opción no afecta las estadísticas del bloque de E / S. Estos siempre se muestran en bloques.
Memoria activa e inactiva
Si utiliza el -a
(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 -S M
Las columnas inactivas y activas están afectado por la opción -S (carácter de unidad).
tenedores
los -f
El conmutador muestra el número de bifurcaciones que se han producido desde que se inició el equipo.
Dicho de otra forma, esto muestra la cantidad de tareas que se han iniciado (y, para la mayoría de ellas, se han cerrado nuevamente) desde que se inició el sistema. Cada procedimiento iniciado desde la línea de comando aumentaría esta cifra. Cada vez que una tarea o procedimiento 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 administración de memoria de la que preocuparse, así como la administració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 factible, 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 se desasigne y reasigne la memoria. 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, utilice la -m
(losas) opción. Necesitarás utilizar sudo
, y se le pedirá su contraseña. Como la salida puede ser bastante larga, la estamos canalizando less
.
sudo vmstat -m | less
La salida tiene cinco columnas. Estos son:
- Cache: Nombre de la caché.
- num: El número de objetos hoy en día activos en esta caché.
- total: El número total de objetos disponibles en esta caché.
- Talla: El tamaño de cada objeto en la caché.
- paginas: El número total de páginas de memoria que disponen (al menos) un objeto asociado hoy en día con esta caché.
prensa q
dejar 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, utilice el -s
(estadísticas) opción. Tenga en cuenta que es una «s» minúscula.
vmstat -s
Aún cuando las estadísticas que se informan son en gran medida las mismas que la información que constituye la vmstat
salida, algunos de ellos se desglosan con más detalle.
A modo de 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 de forma separada.
Visualización de estadísticas de disco
Puede obtener una lista equivalente de estadísticas de disco usando el -d
(disco) opción.
vmstat -d | less
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 de segundos en IO se mide en segundos, pero las estadísticas sustentadas 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.
- Sra: 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.
- Sra = Recuento total de tiempo en milisegundos que se utilizó para escribir datos en el disco.
IO
- canalla: Número de lecturas o escrituras de disco actuales.
- segundo: 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, utilice el -D
(suma de disco) opción. Tenga en cuenta la «D» mayúscula
vmstat -D
La cantidad de discos puede parecer anormalmente alta. La computadora utilizada para investigar este post ejecuta Ubuntu. Con Ubuntu, cada vez que instala una aplicación desde un Snap, un 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 estadísticas asociadas con una partición específica, use el -p
(partición) y proporcione el identificador de partición como parámetro de línea de comando.
Aquí vamos a mirar 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, intentará solucionar un obstáculo, a veces no le interesará debido a que quiere saber cómo funciona su computadora.
vmstat
puede proporcionarle una gran cantidad de información útil. Ahora sabe cómo entrar a él y lo que significa. Y estar advertido está prevenido: cuando necesite arremangarse y hacer algunos diagnósticos, sabrá que tiene vmstat
de tu lado.