Índice del artículo

Monitoreando el rendimiento (comando vmstat)

Existen difernetes tipos de información que se pueden ir observando en el rendimiendo (performance) de nuestro equipo que resultan de interés para ser recopilados, entre estos datos se encuentran la utilización global y el consumo de CPU por cada uno de los procesos.

Esta infomación se obtiene de la utilización el comando vmstat con difernetes parámetros de utilización. Aquí veremos algunos ejemplos de funcionalidad de esta funcional instrucción.

Comenzaremos diciendo que podemos utilizar el comando vmstat con 3 tipos de reportes distintos

  1. Mostrando promedios
    $ vmstat
  2. Mediante una serie continua e infinita de reportes en intervalos de tiempo
    $ vmstat segs
  3. Mediante un número finito de reportes en intervalos de tiempo.
    $ vmstat segs repeticiones

Para ver un ejemplo de la salida ejecutaremos la tercera opción, el comando vmstat 5 20 para in dicarle que queremos 4 lecturas, una cada 5 segundos, esto por que con la primera lectura es poco fiable ya que trata de calcular un promedio de los valores desde el inicio del equipo. La salida que obtendremos será variable de acuerdo a nuestro equipo.

$ vmstat 5 4

kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr cd f0 s0 -- in sy cs us sy id
0 0 0 1069300 140576 0 2 1 0 0 0 0 0 0 0 0 617 327 442 0 1 99
0 0 0 967196 95412 31 14 3 0 0 0 0 1 0 0 0 673 1654 511 12 1 87
0 0 0 967188 95272 86 45 6 0 0 0 0 3 0 0 0 717 2322 519 19 2 80
0 0 0 967184 95204 6 3 2 0 0 0 0 4 0 0 0 685 1935 532 9 1 90

Como podemos ver, la primera lectura es muy diferente al resto debido a la causa que ya se mencionó en el párrafo anterior.

El reporte nos indica las siguientes medidas:

  • kthr (procs): El número de procesos en cada uno de sus tres estados
      • r (runnable queue): Cola de procesos ejecutables en espera de tiempo de CPU
      • b (blocked queue) : Procesos bloqueados en espera
      • w (swapped queue): Procesos ejecutables "swapeados" por falta de RAM (Si este es frecuentemente distinto a cero podríamos tener el diagnóstico de falta de memoria RAM)
  • memory: El uso de la memoria real y virtual,
  • page: Actividad de la paginación y sus fallas,
  • disk: Numero de operaciones en disco por segundo,
  • faults: Tasa promedio de trap/interrupt en los últimos segundos,
  • cpu: porcentaje de tiempo de cpu

Nota: Recuerda que si deseas información más específica, pudes utilizar el comando man vmstat donde se menciona con todo detalle cada una de las columnas. Ir a "Referencia de comandos básicos"

Otro parámetro de vmstat que es muy funcional para el monitoreo es -s, el cual nos despliega el total de eventos del sistema que han tenido lugar desde que arrancó.

$ vmstat -s
0 swap ins
0 swap outs
0 pages swapped in
0 pages swapped out
.
.
.
356117375 system cpu
3474604 idle cpu
0 wait cpu

En una carga de trabajo normal y hablando en términos generales la imagen ideal es de al rededor de 70% de user cpu, 30% de system cpu y entre 1% y 2% de idle cpu, es imporante señalar que esto es hablando en de forma muy general de parámetros que pueden ser muy variables de acuerdo al trabajo y función de cada equipo.