{"id":21483,"date":"2026-09-17T11:51:02","date_gmt":"2026-09-17T09:51:02","guid":{"rendered":"https:\/\/webhosting.de\/linux-vmstat-richtig-interpretieren-performanceanalyse-monitoring\/"},"modified":"2026-09-17T11:51:02","modified_gmt":"2026-09-17T09:51:02","slug":"como-interpretar-correctamente-vmstat-en-linux-analisis-del-rendimiento-y-supervision","status":"publish","type":"post","link":"https:\/\/webhosting.de\/es\/linux-vmstat-richtig-interpretieren-performanceanalyse-monitoring\/","title":{"rendered":"C\u00f3mo interpretar correctamente vmstat en Linux para un an\u00e1lisis eficaz del rendimiento"},"content":{"rendered":"<p>Te voy a ense\u00f1ar a interpretar vmstat en Linux de forma eficaz: podr\u00e1s detectar cuellos de botella en la CPU, presi\u00f3n en la memoria, uso del swap y tiempos de espera de E\/S en cuesti\u00f3n de segundos. As\u00ed es como puedes interpretar con seguridad las columnas r, b, free, si\/so, bi\/bo y us\/sy\/id\/wa\/st, y deducir medidas concretas a partir de los patrones \u2014sin tener que ir a ciegas, con <strong>borrar<\/strong> Normas.<\/p>\n\n<h2>Puntos centrales<\/h2>\n\n<ul>\n  <li><strong>Cola de ejecuci\u00f3n<\/strong> vs. bloqueos: \u00abr\u00bb indica la carga de la CPU; \u00abb\u00bb avisa de tiempos de espera de E\/S.<\/li>\n  <li><strong>Memoria<\/strong> Valorar la realidad: que sea gratis no es lo \u00fanico que cuenta; lo que decide es si... o si...<\/li>\n  <li><strong>E\/S<\/strong> En resumen: bi\/bo no son un problema si wa se mantiene bajo.<\/li>\n  <li><strong>Cuotas de mercado de CPU<\/strong> Significado: us+sy altos, id bajo \u2192 alta carga de trabajo.<\/li>\n  <li><strong>L\u00edneas de base<\/strong> Elaborar: comparar los valores de la vida cotidiana con los de las etapas problem\u00e1ticas.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/linux-vmstat-analyse-9847.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>\u00bfQu\u00e9 muestra realmente vmstat?<\/h2>\n\n<p>Vmstat agrupa los estados de los procesos, la memoria, el espacio de intercambio, las E\/S de bloques y la distribuci\u00f3n de la CPU en una salida compacta que, en cuesti\u00f3n de segundos, ofrece una <strong>a nivel del sistema<\/strong> Ofrece una buena visi\u00f3n general. Primero leo \u201eprocs\u201c para r\/b, despu\u00e9s \u201ememory\/swap\u201c para free, buff, cache y si\/so. A continuaci\u00f3n, compruebo \u201eio\u201c con bi\/bo y termino con \u201ecpu\u201c para us, sy, id, wa y, opcionalmente, st. Este orden me ayuda a distinguir entre causa y efecto: un valor alto de r indica carga de c\u00e1lculo, un valor alto de b apunta a tiempos de espera de E\/S, y wa relaciona la inactividad de la CPU con la latencia de E\/S. As\u00ed puedo detectar si el cuello de botella es la carga de c\u00e1lculo, la escasez de memoria o el dispositivo de almacenamiento, y me ahorro <strong>Desv\u00edos<\/strong>.<\/p>\n\n<h2>Comienza en 60 segundos: llamadas e intervalos<\/h2>\n\n<p>Para obtener una instant\u00e1nea desde el arranque, ejecuto \u201evmstat\u201c sin par\u00e1metros; para an\u00e1lisis en tiempo real, utilizo \u201evmstat 1\u201c o \u201evmstat 5 12\u201c para obtener doce lecturas cada cinco segundos, y obtengo un <strong>temporal<\/strong> Fila. Importante: la primera l\u00ednea refleja los valores medios desde el inicio del sistema, por lo que me fijo sobre todo en las l\u00edneas siguientes. Con \u201eDelay\/Count\u201c controlo la frecuencia de muestreo y la duraci\u00f3n, por ejemplo, \u00abvmstat 1 30\u00bb en picos breves. En cargas de trabajo irregulares, establezco entre 1 y 2 segundos; en escenarios tranquilos, m\u00e1s bien 5 segundos. Observo tendencias, no fotogramas individuales, porque los patrones son los que realmente <strong>Causas<\/strong> espect\u00e1culo.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/vmstat_performance_4567.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Comprender los procesos: el \u00abr\u00bb y el \u00abb\u00bb en la vida cotidiana<\/h2>\n\n<p>La columna \u00abr\u00bb muestra los hilos listos para ejecutarse que est\u00e1n a la espera de tiempo de CPU, mientras que \u00abb\u00bb cuenta los hilos bloqueados, a menudo en espera de E\/S. Si \u00abr\u00bb se mantiene claramente por encima del n\u00famero de n\u00facleos f\u00edsicos, se impone un <strong>Cuello de botella de la CPU<\/strong> ; en cuatro n\u00facleos, un valor de r=8 durante un periodo prolongado se considera una se\u00f1al clara. Un valor de b superior a 0 durante un periodo prolongado indica soportes de datos lentos, bases de datos sobrecargadas o rutas de red o almacenamiento lentas. Correlaciono r con us+sy e id: si id es bajo y r es alto, la CPU est\u00e1 sobrecargada; si wa es alto y b es alto, la E\/S est\u00e1 ralentizando el sistema. As\u00ed decido si escalo la potencia de c\u00e1lculo, optimizo las consultas o el <strong>Sistema de almacenamiento<\/strong> Compru\u00e9balo.<\/p>\n\n<h2>Interpretaci\u00f3n de las memorias: free, buff, cache, swpd<\/h2>\n\n<p>Un valor bajo de \u00abfree\u00bb es normal en Linux, ya que el n\u00facleo utiliza la RAM de forma intensiva como cach\u00e9, lo que acelera el acceso a los archivos y proporciona una verdadera <strong>Rendimiento<\/strong> Por eso presto m\u00e1s atenci\u00f3n a swpd y a los flujos de swap si\/so que al valor de \u00abfree\u00bb por s\u00ed solo. Un nivel alto de cach\u00e9 es bueno, siempre y cuando si\/so se mantenga casi siempre en 0; solo una actividad de swap constante indica una presi\u00f3n real. Si, adem\u00e1s, se produce latencia o incluso un error OOM, intervengo: aumento la RAM, recorto procesos a tiempo o ajusto los tama\u00f1os de la cach\u00e9 y la JVM. El contexto sigue siendo importante: la carga de trabajo, el tama\u00f1o de la memoria y la disposici\u00f3n NUMA determinan lo que en tu entorno se considera <strong>saludable<\/strong> se aplica.<\/p>\n\n<h2>Actividad de swap: clasificar de una forma u otra<\/h2>\n\n<p>Las columnas \u00absi\/so\u00bb miden el flujo constante entre la RAM y el espacio de intercambio en KB\/s y permiten visualizar la presi\u00f3n real sobre la memoria, no solo la que se percibe. <strong>Deficiencia<\/strong>. Los picos breves son normales, por ejemplo, cuando se trasladan p\u00e1ginas que se utilizan con poca frecuencia. La situaci\u00f3n se vuelve cr\u00edtica cuando estos valores se mantienen por encima de 0 de forma permanente; esto ralentiza todo el sistema, ya que cada operaci\u00f3n de paginaci\u00f3n genera una carga adicional de E\/S. Los valores elevados de \u00abso\u00bb indican una paginaci\u00f3n activa, y los tiempos de respuesta aumentan de forma notable. En este punto, me pongo a buscar las causas: reducir el consumo de memoria, ampliar la RAM o optimizar los servicios que consumen mucha memoria. <strong>sintonizar<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/vmstat-linux-performance-analysis-6234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Entender el E\/S en bloque: bi y bo<\/h2>\n\n<p>Con bi\/bo puedo determinar la velocidad de lectura y escritura en bloques por segundo, pero sin contexto no la eval\u00fao; lo decisivo es la interacci\u00f3n con <strong>wa<\/strong>. Un valor alto de bi\/bo y, al mismo tiempo, un valor alto de wa indican que el almacenamiento no da abasto. Si un valor alto de bi se da junto con una base de datos, compruebo los perfiles de consulta y las coincidencias en la cach\u00e9 antes de cambiar el hardware. Para un an\u00e1lisis m\u00e1s detallado de los tiempos de respuesta, utilizo iostat y analizo la longitud de las colas y las latencias, de modo que pueda <a href=\"https:\/\/webhosting.de\/es\/servidor-io-wait-analizar-iostat-vmstat-metricas-disco\/\">Analizar la espera de E\/S<\/a> y pueda abordar los cuellos de botella de forma espec\u00edfica. Solo si wa se mantiene bajo, pero bi\/bo se dispara de forma permanente, me plantear\u00e9 <strong>Escala<\/strong> del sistema de almacenamiento.<\/p>\n\n<h2>Componentes de la CPU: us, sy, id, wa, st<\/h2>\n\n<p>Los valores altos de us con un wa bajo indican un trabajo \u00fatil productivo, mientras que los valores altos de sy apuntan a una gran sobrecarga del n\u00facleo, como innumerables operaciones peque\u00f1as de E\/S o muchas <strong>Cambio de contexto<\/strong>. Si id se sit\u00faa cerca de 0 y se mantiene ah\u00ed, la CPU est\u00e1 funcionando al l\u00edmite; si a esto se le suma un valor alto de r, es indicativo de una elevada carga de c\u00e1lculo. Si wa aumenta, la CPU est\u00e1 a la espera de E\/S; en este caso, el ajuste fino del almacenamiento suele aportar m\u00e1s beneficios que las actualizaciones de la CPU. En las m\u00e1quinas virtuales, presto atenci\u00f3n a st (steal): unos valores altos de st indican que el hipervisor est\u00e1 desviando tiempo de CPU, por lo que hablo con el operador sobre la carga del host. Siempre eval\u00fao us+sy como suma, ya que esto muestra la actividad <strong>Trabajo<\/strong> en el sistema.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/vmstat_linux_perf_Bild_7392.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Gu\u00eda r\u00e1pida: Columnas y valores orientativos<\/h2>\n\n<p>Utilizo la siguiente tabla como gu\u00eda r\u00e1pida cuando analizo los resultados de vmstat para una primera <strong>Evaluaci\u00f3n<\/strong> lectura cruzada.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Columna<\/th>\n      <th>Significado<\/th>\n      <th>A qu\u00e9 presto atenci\u00f3n<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>r<\/td>\n      <td>Hilos listos para ejecutarse<\/td>\n      <td>Permanentes &gt; N\u00facleos \u2192 <strong>Presi\u00f3n de la CPU<\/strong><\/td>\n    <\/tr>\n    <tr>\n      <td>b<\/td>\n      <td>Hilos bloqueados<\/td>\n      <td>Constante &gt; 0 + wa al alza \u2192 Problema de E\/S<\/td>\n    <\/tr>\n    <tr>\n      <td>gratis<\/td>\n      <td>RAM libre<\/td>\n      <td>Un valor bajo est\u00e1 bien, siempre y cuando si\/so se mantenga \u2248 0<\/td>\n    <\/tr>\n    <tr>\n      <td>buff\/cach\u00e9<\/td>\n      <td>B\u00fafer FS\/Cach\u00e9 de p\u00e1ginas<\/td>\n      <td>Una gran cantidad de cach\u00e9 es buena; se puede publicar <strong>convertirse en<\/strong><\/td>\n    <\/tr>\n    <tr>\n      <td>si\/so<\/td>\n      <td>Intercambio de entrada\/salida<\/td>\n      <td>Valor constante &gt; 0 \u2192 presi\u00f3n real del acumulador<\/td>\n    <\/tr>\n    <tr>\n      <td>bi\/bo<\/td>\n      <td>E\/S en bloque<\/td>\n      <td>Solo es cr\u00edtico si \u00abwa\u00bb tambi\u00e9n es alto<\/td>\n    <\/tr>\n    <tr>\n      <td>us\/sy<\/td>\n      <td>Usuario\/N\u00facleo<\/td>\n      <td>us+sy de forma permanente &gt; 80% \u2192 alta <strong>Carga<\/strong><\/td>\n    <\/tr>\n    <tr>\n      <td>id<\/td>\n      <td>marcha en vac\u00edo<\/td>\n      <td>Cerca de 0 a lo largo del tiempo \u2192 CPU saturada<\/td>\n    <\/tr>\n    <tr>\n      <td>wa<\/td>\n      <td>Espera de E\/S<\/td>\n      <td>Valor alto con \u00abb\u00bb alto \u2192 El almacenamiento como causa<\/td>\n    <\/tr>\n    <tr>\n      <td>st<\/td>\n      <td>Robar (m\u00e1quinas virtuales)<\/td>\n      <td>Alto \u2192 El hipervisor toma <strong>CPU<\/strong>-Hora<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>L\u00edneas de referencia y seguimiento continuo<\/h2>\n\n<p>No me baso en datos puntuales, sino que comparo los valores con las referencias de \u00e9pocas tranquilas para poder descartar correctamente los valores at\u00edpicos <strong>reconocer<\/strong>. \u201evmstat 1 60\u201c me proporciona un perfil de carga de un minuto, que comparo con las fases normales conocidas. Para obtener una perspectiva hist\u00f3rica, utilizo <a href=\"https:\/\/webhosting.de\/es\/sar-sysstat-supervision-de-servidores-linux\/\">Supervisi\u00f3n de sar\/sysstat<\/a>, para evaluar las tendencias a lo largo de varios d\u00edas y ajustar los valores l\u00edmite. Configuro las alertas de forma conservadora: r en relaci\u00f3n con los n\u00facleos, si\/so distinto de 0 en varios intervalos, wa notablemente elevado. As\u00ed puedo reaccionar a tiempo, antes de que los usuarios notifiquen retrasos y antes de que <strong>Pico<\/strong>-Las fases se agravan.<\/p>\n\n<h2>Vmstat junto con otras herramientas<\/h2>\n\n<p>Empiezo con vmstat, analizo los patrones y profundizo de forma espec\u00edfica con iostat, mpstat, pidstat o m\u00e9tricas de aplicaciones, para poder identificar las causas <strong>borrar<\/strong> asigna. Mientras que vmstat muestra los tiempos de espera de E\/S, yo mido con iostat las latencias y las colas de cada dispositivo. Si \u00abr\u00bb indica un l\u00edmite del n\u00facleo, mpstat muestra las asimetr\u00edas del n\u00facleo. En momentos de m\u00e1xima carga de procesos, proporciona <a href=\"https:\/\/webhosting.de\/es\/pidstat-linux-analisis-de-procesos-supervision\/\">An\u00e1lisis de procesos pidstat<\/a> los hilos m\u00e1s intensos sobre el tiempo. Solo la correlaci\u00f3n con los registros y los tiempos de las aplicaciones aclara el panorama y me lleva a la verdadera <strong>Causa<\/strong>.<\/p>\n\n<h2>Detectar patrones y actuar<\/h2>\n\n<p>Si veo que \u00abr\u00bb es alto, \u00abid\u00bb bajo y \u00abwa\u00bb moderado, la aplicaci\u00f3n suele optimizar de forma que requiere un gran esfuerzo de c\u00e1lculo, por lo que compruebo el c\u00f3digo o el paralelismo y planifico los recursos de la CPU antes de <strong>Hardware<\/strong> Si aparecen juntos \u00abb alto\u00bb, \u00abwa alto\u00bb y \u00abbi\/bo alto\u00bb, tengo en cuenta el ajuste del almacenamiento, la optimizaci\u00f3n de consultas y el almacenamiento en cach\u00e9. Si el valor de \u00abfree\u00bb es bajo y \u00absi\/so\u00bb es mayor que 0, reduzco el consumo de memoria, transmito los resultados en tiempo real o aumento la RAM. Si los valores de \u00abus\u00bb son moderados y los de \u00absy\u00bb muy altos, reviso los filtros de paquetes, las opciones del sistema de archivos o los controladores. Con esta lista de comprobaci\u00f3n, act\u00fao con rapidez y dedico el tiempo a lo que m\u00e1s <strong>cuenta<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/vmstat-linux-analyst-7645.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>C\u00f3mo evitar errores de medici\u00f3n: muestreo, unidades, primera l\u00ednea<\/h2>\n\n<p>A prop\u00f3sito, no tengo en cuenta la primera l\u00ednea para detectar fallos agudos, ya que lleva promediando los datos desde el arranque y suaviza completamente los picos. Adem\u00e1s, baso la frecuencia de muestreo en la hip\u00f3tesis de la causa: capto los picos de CPU con intervalos de 1 segundo, y las fugas de memoria lentas con intervalos de 5 a 10 segundos. Tengo en cuenta las unidades: si\/so son KB\/s, bi\/bo son \u201ebloques\/s\u201c (hist\u00f3ricamente 1 KB por bloque, variable seg\u00fan la versi\u00f3n de vmstat). Compruebo si \u201evmstat -w\u201c (salida amplia) evita el recorte de columnas y si los cambios en la frecuencia de reloj (estados P, Turbo) influyen en la percepci\u00f3n de la carga a corto plazo. Sincronizo las mediciones con los picos de la aplicaci\u00f3n, en lugar de fijarme ciegamente en \u201eminutos completos\u201c.<\/p>\n\n<h2>Descifrar la secci\u00f3n \u00abSystem\u00bb: \u00abin\u00bb y \u00abcs\u00bb<\/h2>\n\n<p>Adem\u00e1s de procs\/memory\/swap\/io\/cpu, vmstat tambi\u00e9n muestra \u201esystem\u201c: <strong>en<\/strong> (interrupciones\/s) y <strong>cs<\/strong> (Cambios de contexto\/s). Estos dos valores me dan mucha informaci\u00f3n sobre la sobrecarga del n\u00facleo.<\/p>\n<ul>\n  <li>cs muy alto con una carga de trabajo moderada: oscilaciones de subprocesos, lotes de trabajadores demasiado peque\u00f1os o conflictos de bloqueo. Aumento el tama\u00f1o de los lotes, regulo el paralelismo (grupos de subprocesos) y compruebo los puntos cr\u00edticos del programador y los mutex.<\/li>\n  <li>Aumento repentino: tormentas de interrupciones de red o de almacenamiento, efectos NAPI\/polling o interrupciones de temporizador. Lo comparo con el porcentaje de sy y los resultados de iostat para comprobar los controladores o las rutas de red.<\/li>\n  <li>cs es proporcional a r: esto apunta a una presi\u00f3n constante por el cambio de contexto debido a un paralelismo excesivo. Reduzco el paralelismo activo o asigno los hilos activos a n\u00facleos espec\u00edficos.<\/li>\n<\/ul>\n<p>Siempre correlaciono in\/cs con sy y b\/wa: solo en conjunto se obtiene una imagen clara de si el trabajo del n\u00facleo es \u00fatil (p. ej., el rendimiento) o si se trata de una mera sobrecarga.<\/p>\n\n<h2>Variantes y opciones \u00fatiles de vmstat<\/h2>\n\n<p>Utilizo vmstat de forma flexible para obtener perspectivas adicionales sin tener que cambiar de herramienta:<\/p>\n<ul>\n  <li><strong>vmstat -s<\/strong>: Contadores acumulativos (por ejemplo, procesos iniciados desde el arranque del sistema, fallos de p\u00e1gina mayores y menores). Ideales para comparar fugas o recuentos en intervalos de tiempo.<\/li>\n  <li><strong>vmstat -m<\/strong>: Uso de Slab: ayuda a clasificar las cach\u00e9s del n\u00facleo (Dentry\/Inode, red) como consumidores de RAM.<\/li>\n  <li><strong>vmstat -d<\/strong>: Eventos de disco a nivel de totales. No sustituye a iostat, pero es \u00fatil para hacer una r\u00e1pida comprobaci\u00f3n de la situaci\u00f3n real.<\/li>\n  <li><strong>vmstat -S M<\/strong>: Cambiar las unidades (M\/K) para facilitar la lectura de los n\u00fameros.<\/li>\n  <li><strong>vmstat -w<\/strong>: Las columnas m\u00e1s anchas evitan que se corten las columnas de n\u00fameros largas.<\/li>\n<\/ul>\n<p>Combino estas opciones con intervalos cortos para no perderme ning\u00fan evento y, aun as\u00ed, mantener una visi\u00f3n general.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/vmstat_linux_analyse_3947.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Contenedores, m\u00e1quinas virtuales y cgroups: particularidades<\/h2>\n\n<p>En los contenedores, interpreto vmstat con cautela: muchos datos del n\u00facleo son v\u00e1lidos para todo el host, mientras que los l\u00edmites provienen de los Cgroups. Los valores altos de r en un contenedor reflejan la perspectiva del espacio de nombres, pero el tiempo real de CPU puede verse limitado por las cuotas de CPU o las cuotas compartidas de CPU. Me baso en <strong>st<\/strong> (Steal) en m\u00e1quinas virtuales: un valor alto de st significa que el hipervisor me resta tiempo; en ese caso, ni siquiera una optimizaci\u00f3n perfecta de la aplicaci\u00f3n sirve de mucho mientras el host est\u00e9 sobrecargado. En el caso de los l\u00edmites de memoria en Cgroups, puede que no se produzca ning\u00fan efecto, aunque el contenedor est\u00e9 \u201eagitado\u201c al llegar al l\u00edmite (terminaciones por OOM en lugar de swap). Por eso, compruebo adem\u00e1s los registros de OOM y las estad\u00edsticas de Cgroup, y comparo las im\u00e1genes de vmstat con los l\u00edmites.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/vmstat-linux-analyst-7645.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>NUMA y afinidad: cuando la localidad es importante<\/h2>\n\n<p>En los hosts NUMA, compruebo los valores de r y us\/sy por n\u00facleo (con mpstat) y observo si algunos sockets se \u201esobrecalientan\u201c, mientras que otros permanecen inactivos. Una localizaci\u00f3n de memoria inadecuada provoca un aumento de cs\/sy y de b\/wa debido a los accesos a memoria lejana. Pruebo la afinidad de CPU y memoria (cpuset, numactl), configuro los montones grandes como \u201eintercalados\u201c o estrictamente locales y me aseguro de que los hilos activos se ejecuten all\u00ed donde se encuentra su huella de datos. Una distribuci\u00f3n NUMA estable suaviza el cs, reduce los valores at\u00edpicos de wa y aumenta la <strong>Planificabilidad<\/strong> bajo carga.<\/p>\n\n<h2>Evitar malentendidos: \u201ewa\u201c y \u00abb\u00bb son algo m\u00e1s que \u00absoportes de datos lentos\u00bb<\/h2>\n\n<p>El valor de wa no solo aumenta con las latencias cl\u00e1sicas de disco: tambi\u00e9n lo elevan las redes NFS o de alta latencia, el almacenamiento de objetos saturado, los vol\u00famenes en la nube que provocan bloqueos o las lentas operaciones de reescritura en la cach\u00e9 de p\u00e1ginas. b cuenta las tareas en estado de suspensi\u00f3n ininterrumpida (estado D), entre las que se incluyen los bloqueos en controladores, rutas de red o bloqueos del sistema de archivos. Por eso nunca eval\u00fao wa\/b de forma aislada, sino siempre junto con bi\/bo y los tiempos de respuesta de las aplicaciones. Si wa es alto, pero bi\/bo es bajo, a menudo se debe a una <strong>Dependencia de la espera<\/strong> m\u00e1s all\u00e1 de la mera cuesti\u00f3n del rendimiento de los dispositivos (por ejemplo, bloqueo, E\/S remota, atascos de reescritura).<\/p>\n\n<h2>Optimizaci\u00f3n con sentido de la proporci\u00f3n: Swappiness, Writeback, Scheduler<\/h2>\n\n<p>Solo modifico Kernel-Tuner despu\u00e9s de realizar las mediciones y con un plan de reversi\u00f3n:<\/p>\n<ul>\n  <li><strong>vm.swappiness<\/strong>: Un valor bajo reduce el intercambio proactivo, lo cual es bueno para aplicaciones en las que la latencia es fundamental; si es demasiado bajo, puede aumentar la presi\u00f3n sobre la cach\u00e9 de p\u00e1ginas.<\/li>\n  <li><strong>vm.dirty_background_ratio \/ vm.dirty_ratio<\/strong> (o *_bytes): Influyen en los momentos de reescritura. Los valores demasiado altos provocan r\u00e1fagas de escritura prolongadas (picos de wa), mientras que los valores demasiado bajos aumentan los peque\u00f1os flushinges constantes (aumentan sy\/bo).<\/li>\n  <li><strong>Programador de E\/S\/Profundidad de la cola<\/strong>: En NVMe, los ajustes de Optima son diferentes a los de HDD\/RAID. Mido las compensaciones entre latencia y rendimiento con iostat antes de realizar ning\u00fan cambio.<\/li>\n  <li><strong>Rutas de red<\/strong>: Hay muchos paquetes peque\u00f1os e interrupciones que llegan a \/cs\/sy. Los ajustes generales son GRO\/LRO, RPS\/RFS y IRQ-Affinity; realizo mediciones antes y despu\u00e9s.<\/li>\n<\/ul>\n<p>Mi objetivo es conseguir curvas estables y predecibles en vmstat: us\/sy m\u00e1s estables, wa\/b m\u00e1s bajas y si\/so cercanas a 0. Solo entonces ampl\u00edo el hardware.<\/p>\n\n<h2>Gu\u00eda pr\u00e1ctica: An\u00e1lisis de 3 minutos con vmstat<\/h2>\n\n<ul>\n  <li>0:00\u20130:30 \u2013 \u201evmstat 1 30\u201c: ignora la primera l\u00ednea y, a continuaci\u00f3n, examina r\/b, us\/sy\/id\/wa. Pregunta: \u00bfl\u00edmite de CPU (r alto, id bajo) o l\u00edmite de E\/S (b\/wa altos)?<\/li>\n  <li>0:30\u20131:00 \u2013 Vista del acumulador: comprobar swpd y si\/so. \u00bfsi\/so constantemente &gt; 0? \u2192 Presi\u00f3n real del acumulador. free es secundario.<\/li>\n  <li>1:00\u20131:30 \u2013 Contexto de E\/S: bi\/bo frente a wa. \u00bfValores altos de bi\/bo sin wa? \u2192 La E\/S se desconecta. \u00bfValores altos de wa con valores moderados de bi\/bo? \u2192 Latencia\/bloqueo\/E\/S remota.<\/li>\n  <li>1:30\u20132:00 \u2013 Secci\u00f3n \u00absystem\u00bb: \u00bfin\/cs en relaci\u00f3n con sy. cs muy alto? \u2192 Presi\u00f3n por cambio de contexto; comprobar paralelismo\/bloqueo.<\/li>\n  <li>2:00\u20133:00 \u2013 Consolidar la hip\u00f3tesis y elegir la herramienta adecuada: iostat para el \u00edndice de E\/S, mpstat para las asimetr\u00edas del n\u00facleo y pidstat para los puntos cr\u00edticos de los procesos. Solo despu\u00e9s, pasar al ajuste y al escalado.<\/li>\n<\/ul>\n\n<h2>Ejemplos pr\u00e1cticos avanzados<\/h2>\n\n<ul>\n  <li><strong>Saturaci\u00f3n de la CPU sin un r elevado<\/strong>: us+sy en 90%+, id \u2248 0, pero r moderado \u2192 punto cr\u00edtico de un solo hilo o problema de afinidad. Soluci\u00f3n: paralelizar la ruta cr\u00edtica, comprobar el \u00abcore pinning\u00bb.<\/li>\n  <li><strong>Swap-Thrash<\/strong>: tanto si como si, al mismo tiempo, claramente &gt; 0; b\/wa aumentan, us disminuye \u2192 la RAM es claramente insuficiente o el heap est\u00e1 mal dimensionado. Medidas: aumentar la RAM, reducir el conjunto de trabajo, ajustar el swappiness.<\/li>\n  <li><strong>Sobrecarga del n\u00facleo<\/strong>: sy alto, cs\/in alto, us moderado \u2192 muchas llamadas al sistema y operaciones de E\/S peque\u00f1as. Soluci\u00f3n: procesar por lotes, reducir las llamadas al sistema, comprobar las opciones de montaje del sistema de archivos.<\/li>\n  <li><strong>Atasco de reversiones<\/strong>: wa alto, bo alto, ondas cortas \u2192 los l\u00edmites de \u00abdirty\u00bb son demasiado altos, la latencia de almacenamiento var\u00eda. Revisar el ajuste de \u00abwriteback\u00bb y el programador de E\/S.<\/li>\n  <li><strong>Presi\u00f3n por la virtualizaci\u00f3n<\/strong>: st visible, r fluct\u00faa, id \u201esalta\u201c \u2192 El host comparte la CPU. Soluci\u00f3n: comprobar la asignaci\u00f3n y la ubicaci\u00f3n de las vCPU, reducir el overcommit.<\/li>\n<\/ul>\n\n<h2>Conocer los l\u00edmites de vmstat<\/h2>\n\n<p>Vmstat es una excelente <strong>Sensor de alerta temprana<\/strong>, pero no es un microscopio. Me muestra que hay un atasco y d\u00f3nde se produce, pero no me indica el archivo concreto, la consulta o el hilo que lo provoca. Por eso, tras el diagn\u00f3stico con vmstat, recurro sistem\u00e1ticamente a herramientas m\u00e1s avanzadas, confirmo hip\u00f3tesis desde varios \u00e1ngulos y luego modifico solo una cosa tras otra. De este modo, las mejoras siguen siendo medibles y reproducibles.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/vmstat_linux_analyse_3947.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Resumen de la pr\u00e1ctica<\/h2>\n\n<p>Con vmstat puedo detectar en cuesti\u00f3n de segundos si la CPU, la RAM, el espacio de intercambio o las E\/S est\u00e1n ralentizando el sistema, analizando la interacci\u00f3n entre r, b, si\/so, bi\/bo y us\/sy\/id\/wa\/st <strong>leer<\/strong>. Analizo las tendencias en lugar de los valores individuales, comparo con los valores de referencia y, si es necesario, recurro a iostat, mpstat, pidstat y a mediciones hist\u00f3ricas. Ignoro la primera l\u00ednea en caso de fallos agudos y me centro en las l\u00edneas siguientes, que tienen una frecuencia de muestreo fija. Tomo decisiones basadas en los datos: r en relaci\u00f3n con los n\u00facleos, si\/so permanentemente distinto de 0, wa persistentemente elevado, us+sy cerca de la plena capacidad. De este modo, deduzco r\u00e1pidamente medidas concretas y mantengo los sistemas notablemente <strong>reactivo<\/strong>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Aprende a interpretar correctamente el comando \u00abvmstat\u00bb de Linux para detectar cuellos de botella en la CPU, la memoria y las E\/S, y optimiza tu an\u00e1lisis de rendimiento con la palabra clave \u00abvmstat linux\u00bb.<\/p>","protected":false},"author":1,"featured_media":21476,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[780],"tags":[],"class_list":["post-21483","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administration-anleitungen"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"79","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"vmstat linux","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"21476","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts\/21483","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/comments?post=21483"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts\/21483\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/media\/21476"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/media?parent=21483"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/categories?post=21483"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/tags?post=21483"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}