| Red Hat Enterprise Linux 4: Introducción a la administración de sistemas | ||
|---|---|---|
| Anterior | Capítulo 3. Ancho de banda y poder de procesamiento | Siguiente |
La monitorización del ancho de banda y de la utilización del CPU bajo Red Hat Enterprise Linux implica utilizar las herramientas discutidas en el Capítulo 2; por lo tanto, si aún no ha leído ese capítulo, es bueno que lo haga antes de continuar.
Como se indicó en la Sección 2.4.2, es difícil monitorizar directamente la utilización del ancho de banda. Sin embargo, examinando las estadísticas a nivel de dispositivos, es posible medir a grandes rasgos si la insuficiencia de ancho de banda es un problema en su sistema.
Usando vmstat, es posible determinar si es excesiva la actividad general de los dispositivos examinando los campos bi y bo; además, revisando los campos si y so le dará un poco más de conocimiento sobre cuánta actividad de disco se debe a E/S relacionada a swap.
procs memory swap io system cpu
r b w swpd free buff cache si so bi bo in cs us sy id
1 0 0 0 248088 158636 480804 0 0 2 6 120 120 10 3 87
|
En este ejemplo, el campo bi muestra dos bloques/segundos escritos a los dispositivos en bloque (principalmente unidades de disco), mientras que el campo bo muestra seis bloques/segundos leído desde los dispositivos de bloque. Podemos determinar que ninguna de esta actividad se debe a intercambio de memoria (swap), ya que los campos si y so ambos muestran una tasa de E/S relacionada a swap de cero kilobytes/segundo.
Usando iostat, es posible obtener un poco más de detalles sobre la actividad relacionada al disco:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003
avg-cpu: %user %nice %sys %idle
5.34 4.60 2.83 87.24
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
dev8-0 1.10 6.21 25.08 961342 3881610
dev8-1 0.00 0.00 0.00 16 0
|
Esta salida nos muestra que el dispositivo con un número major de 8 (el cual es /dev/sda, el primer disco SCSI) tiene un promedio un poco mayor de una operación de E/S por segundo (el campo tsp). La mayoría de la actividad de E/S para este dispositivo fueron escrituras (el campo Blk_wrtn), con un poco más de 25 bloques escritos cada segundo (el campo Blk_wrtn/s).
Si se necesitan más detalles, utilice la opción -x de iostat:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003
avg-cpu: %user %nice %sys %idle
5.37 4.54 2.81 87.27
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz
/dev/sda 13.57 2.86 0.36 0.77 32.20 29.05 16.10 14.53 54.52
/dev/sda1 0.17 0.00 0.00 0.00 0.34 0.00 0.17 0.00 133.40
/dev/sda2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11.56
/dev/sda3 0.31 2.11 0.29 0.62 4.74 21.80 2.37 10.90 29.42
/dev/sda4 0.09 0.75 0.04 0.15 1.06 7.24 0.53 3.62 43.01
|
Más allá de las largas líneas conteniendo más campos, la primera cosa a tener en mente es que esta salida de iostat está mostrando ahora estadísticas a un nivel de partición. Usando df para asociar los puntos de montaje con los nombres de dispositivos, es posible utilizar este informe para determinar si, por ejemplo, la partición conteniendo /home/ está experimentando una sobrecarga excesiva.
En realidad, cada línea de salida de iostat -x es más larga y contiene más información que esto; he aquí el resto de cada línea (agregando la columna del dispositivo para facilitar la lectura):
Device: avgqu-sz await svctm %util
/dev/sda 0.24 20.86 3.80 0.43
/dev/sda1 0.00 141.18 122.73 0.03
/dev/sda2 0.00 6.00 6.00 0.00
/dev/sda3 0.12 12.84 2.68 0.24
/dev/sda4 0.11 57.47 8.94 0.17
|
En este ejemplo, es interesante observar que /dev/sda2 es la partición swap del sistema; obviamente, a partir de los muchos campos de esta particiónque leen 0.00, el swapping no es un problema en el sistema.
Otro punto interesante a tomar en cuenta es /dev/sda1. Las estadísticas para esta partición son inusuales; la actividad general parece baja, pero por qué el tamaño promedio de peticiones de E/S (el campo avgrq-sz), el tiempo promedio de espera (el campo await) y el tiempo promedio de servicio (el campo svctm) son mucho más grandes que en las otras particiones? La respuesta es que esta partición contiene el directorio /boot/, el cual es donde el kernel y el disco inicial ramdisk son almacenados. Cuando el sistema arranca, las lecturas de E/S (observe que solamente los campos rsec/s y rkB/s son diferentes de cero; no se hace ninguna escritura aquí de forma regular) usadas durante el proceso de arranque son para grandes números de bloques, resultando en despliegues iostat de esperas relativamente largas y tiempos de servicios.
Es posible utilizar sar para una vista de largo plazo de las estadísticas de E/S; por ejemplo, sar -b muestra un informe general de E/S:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003
12:00:00 AM tps rtps wtps bread/s bwrtn/s
12:10:00 AM 0.51 0.01 0.50 0.25 14.32
12:20:01 AM 0.48 0.00 0.48 0.00 13.32
…
06:00:02 PM 1.24 0.00 1.24 0.01 36.23
Average: 1.11 0.31 0.80 68.14 34.79
|
Aquí, como en la pantalla inicial de iostat, las estadísticas son agrupadas para todos los dispositivos de bloque.
Usando sar -d se produce otro informe relacionado a E/S:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003
12:00:00 AM DEV tps sect/s
12:10:00 AM dev8-0 0.51 14.57
12:10:00 AM dev8-1 0.00 0.00
12:20:01 AM dev8-0 0.48 13.32
12:20:01 AM dev8-1 0.00 0.00
…
06:00:02 PM dev8-0 1.24 36.25
06:00:02 PM dev8-1 0.00 0.00
Average: dev8-0 1.11 102.93
Average: dev8-1 0.00 0.00
|
Este informe proporciona información por dispositivo, pero con pocos detalles.
Mientras que no hay estadísticas explícitas mostrando la utilización del ancho de banda para un bus o datapath dado, al menos podemos determinar qué están haciendo los dispositivos y utilizar su actividad para determinar indirectamente la carga del bus.
A diferencia del ancho de banda, la supervisión de la utilización del CPU es mucho más directa. Desde un porcentage de utilización de CPU en el Monitor del sistema GNOME, hasta las estadísticas más detalladas informadas por sar, es posible determinar de forma veraz cuánto poder de CPU está siendo utilizado y en qué.
Más allá del Monitor del sistema GNOME, top es la primera herramienta de supervisión de recursos discutida en el Capítulo 2 para proporcionar una representación más profunda de la utilización de CPU. A continuación se muestra un informe con top de una estación de trabajo con dos procesadores:
9:44pm up 2 days, 2 min, 1 user, load average: 0.14, 0.12, 0.09
90 processes: 82 sleeping, 1 running, 7 zombie, 0 stopped
CPU0 states: 0.4% user, 1.1% system, 0.0% nice, 97.4% idle
CPU1 states: 0.5% user, 1.3% system, 0.0% nice, 97.1% idle
Mem: 1288720K av, 1056260K used, 232460K free, 0K shrd, 145644K buff
Swap: 522104K av, 0K used, 522104K free 469764K cached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
30997 ed 16 0 1100 1100 840 R 1.7 0.0 0:00 top
1120 root 5 -10 249M 174M 71508 S < 0.9 13.8 254:59 X
1260 ed 15 0 54408 53M 6864 S 0.7 4.2 12:09 gnome-terminal
888 root 15 0 2428 2428 1796 S 0.1 0.1 0:06 sendmail
1264 ed 15 0 16336 15M 9480 S 0.1 1.2 1:58 rhn-applet-gui
1 root 15 0 476 476 424 S 0.0 0.0 0:05 init
2 root 0K 0 0 0 0 SW 0.0 0.0 0:00 migration_CPU0
3 root 0K 0 0 0 0 SW 0.0 0.0 0:00 migration_CPU1
4 root 15 0 0 0 0 SW 0.0 0.0 0:01 keventd
5 root 34 19 0 0 0 SWN 0.0 0.0 0:00 ksoftirqd_CPU0
6 root 34 19 0 0 0 SWN 0.0 0.0 0:00 ksoftirqd_CPU1
7 root 15 0 0 0 0 SW 0.0 0.0 0:05 kswapd
8 root 15 0 0 0 0 SW 0.0 0.0 0:00 bdflush
9 root 15 0 0 0 0 SW 0.0 0.0 0:01 kupdated
10 root 25 0 0 0 0 SW 0.0 0.0 0:00 mdrecoveryd
|
La primera información relacionada con el CPU se presenta en la primera línea: la carga promedio. La carga promedio es un número correspondiente al número promedio de procesos ejecutables en el sistema. La carga promedio es a menudo listada como tres conjuntos de números (como lo hace top), lo que representa la carga promedio para los últimos 1, 5 y 15 minutos, indicando que el sistema en este ejemplo no estaba muy ocupado.
La línea siguiente, aunque no está relacionada estrictamente a la utilización del CPU, tiene una relación indirecta, en que muestra el número de procesos ejecutables (aquí, solamente uno -- recuerde este número, pues significa algo especial en este ejemplo). El número de procesos ejecutables es un buen indicador de cuan comprometido computacionalmente puede estar un sistema.
Luego estan dos líneas mostrando la utilización actual para cada uno de los dos CPUs en el sistema. Las estadísticas de utilización se desglosan para mostrar si los ciclos de CPU gastados se hicieron para procesamiento a nivel de usuario o a nivel del sistema; también está incluido una estadística que muestra cuanto tiempo de CPU se gastó por procesos con prioridades de planificación alteradas. Finalmente, hay una estadística de tiempo ocioso.
Desplazandose más abajo en la sección relacionada a procesos, encontramos que el proceso ejecutando la mayor parte del poder de CPU es top mismo; en otras palabras, el proceso ejecutable en este sistema ocioso fue top tomando una "foto" de sí mismo.
![]() | Sugerencia |
|---|---|
Es importante recordar que el acto mismo de ejecutar un monitor del sistema afecta las estadísticas de utilización de recursos que usted recibe. Todos los monitorizadores basados en software hasta cierto punto hacen esto. |
Para obtener más conocimiento detallado sobre la utilización del CPU, debemos cambiar herramientas. Si examinanos la salida desde vmstat, obtenemos un entendimiento ligeramente diferente de nuestro sistema ejemplo:
procs memory swap io system cpu
r b w swpd free buff cache si so bi bo in cs us sy id
1 0 0 0 233276 146636 469808 0 0 7 7 14 27 10 3 87
0 0 0 0 233276 146636 469808 0 0 0 0 523 138 3 0 96
0 0 0 0 233276 146636 469808 0 0 0 0 557 385 2 1 97
0 0 0 0 233276 146636 469808 0 0 0 0 544 343 2 0 97
0 0 0 0 233276 146636 469808 0 0 0 0 517 89 2 0 98
0 0 0 0 233276 146636 469808 0 0 0 32 518 102 2 0 98
0 0 0 0 233276 146636 469808 0 0 0 0 516 91 2 1 98
0 0 0 0 233276 146636 469808 0 0 0 0 516 72 2 0 98
0 0 0 0 233276 146636 469808 0 0 0 0 516 88 2 0 97
0 0 0 0 233276 146636 469808 0 0 0 0 516 81 2 0 97
|
Aquí hemos utilizado el comando vmstat 1 10 para tomar muestras del sistema cada segundo diez veces. Primero, las estadísticas relacionadas al CPU (los campos us, sy, y id) parecen similares a lo que mostraba top, y quizás hasta aparece un poco menos detallado. Sin embargo, a diferencia de top, también podemos obtener un poco más de información en cómo el CPU es utilizado.
Si examinamos los campos system, notamos que el CPU está manejando alrededor de 500 interrupciones por segundo en promedio y que se intercambia entre procesos entre 80 y 400 veces en un segundo. Si piensa que esto parece mucha actividad, piense nuevamente, porque el procesamiento a nivel de usuario (el campo us) está promediando solamente 2%, mientras que el procesamiento a nivel del sistema (el campo sy) es usualmente por debajo de 1%. Una vez más, esto es un sistema ocioso.
Revisando las herramientas que Sysstat ofrece, encontramos que iostat y mpstat proporcionan poca información adicional sobre lo que ya hemos experimentado con top y vmstat. Sin embargo, sar produce un número de informes que son de ayuda cuando se supervisa la utilización del CPU.
El primer informe se obtiene por el comando sar -q, el cual muestra el largo de la cola de ejecución, número total de procesos y la carga promedio durante los últimos uno y cinco minutos. He aquí un ejemplo:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003
12:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5
12:10:00 AM 3 122 0.07 0.28
12:20:01 AM 5 123 0.00 0.03
…
09:50:00 AM 5 124 0.67 0.65
Average: 4 123 0.26 0.26
|
En este ejemplo, el sistema siempre está ocupado (dado que siempre hay más de un proceso ejecutable), pero no está sobrecargado (puesto que este sistema particular tiene más de un procesador).
El próximo informe sar relacionado con el CPU lo produce el comando sar -u:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003
12:00:01 AM CPU %user %nice %system %idle
12:10:00 AM all 3.69 20.10 1.06 75.15
12:20:01 AM all 1.73 0.22 0.80 97.25
…
10:00:00 AM all 35.17 0.83 1.06 62.93
Average: all 7.47 4.85 3.87 83.81
|
Las estadísticas contenidas en este informe no son diferentes de aquellas generadas por muchas otras herramientas. El principal beneficio aquí es que sar hace los datos disponibles de forma contínua y es por tanto más útil para obtener datos sobre promedios de largos tiempos, o para la producción de gráficos de utilización de CPU.
En sistemas multiproceso, el comando sar -U puede producir estadísticas para un procesador individual o para todos los procesos. He aquí un ejemplo de la salida desde sar -U ALL:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003
12:00:01 AM CPU %user %nice %system %idle
12:10:00 AM 0 3.46 21.47 1.09 73.98
12:10:00 AM 1 3.91 18.73 1.03 76.33
12:20:01 AM 0 1.63 0.25 0.78 97.34
12:20:01 AM 1 1.82 0.20 0.81 97.17
…
10:00:00 AM 0 39.12 0.75 1.04 59.09
10:00:00 AM 1 31.22 0.92 1.09 66.77
Average: 0 7.61 4.91 3.86 83.61
Average: 1 7.33 4.78 3.88 84.02
|
El comando sar -w informa sobre el número de switches de contexto por segundo, haciendo posible ganar conocimiento adicional sobre dónde se gastan los ciclos de CPU:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003
12:00:01 AM cswch/s
12:10:00 AM 537.97
12:20:01 AM 339.43
…
10:10:00 AM 319.42
Average: 1158.25
|
También es posible generar dos informes sar diferentes en actividad interrumpida. El primero, (generado usando el comando sar -I SUM) muestra una estadística simple de "interrupciones por segundo":
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003
12:00:01 AM INTR intr/s
12:10:00 AM sum 539.15
12:20:01 AM sum 539.49
…
10:40:01 AM sum 539.10
Average: sum 541.00
|
Usando el comando sar -I PROC, es posible desglosar la actividad de interrupciones por procesador (en sistemas multiproceso) y por nivel de interrupciones (desde 0 a 15):
Linux 2.4.21-1.1931.2.349.2.2.entsmp (pigdog.example.com) 07/21/2003
12:00:00 AM CPU i000/s i001/s i002/s i008/s i009/s i011/s i012/s
12:10:01 AM 0 512.01 0.00 0.00 0.00 3.44 0.00 0.00
12:10:01 AM CPU i000/s i001/s i002/s i008/s i009/s i011/s i012/s
12:20:01 AM 0 512.00 0.00 0.00 0.00 3.73 0.00 0.00
…
10:30:01 AM CPU i000/s i001/s i002/s i003/s i008/s i009/s i010/s
10:40:02 AM 0 512.00 1.67 0.00 0.00 0.00 15.08 0.00
Average: 0 512.00 0.42 0.00 N/A 0.00 6.03 N/A
|
Este informe (el cual se ha truncado horizontalmente para ajustarse a la página) incluye una columna por cada nivel de interrupción (por ejemplo, el campo i002/s ilustrando las tasas para nivel de interrupción 2). Si este fuese un sistema multiprocesador, habría una línea por período de muestra para cada CPU.
Otro pundo importante a tomar en cuenta es que sar añade o elimina campos de interrupción específicos si no se reunen datos para ese campo. El informe de ejemplo de arriba suministra un ejemplo de esto, el final del informe incluye los niveles de interrupción (3 y 10) que no estaban presentes al principio del período de muestras.
![]() | Nota | ||
|---|---|---|---|
Existen otros dos informes sar relacionados a interrupciones — sar -I ALL y sar -I XALL. Sin embargo, la configuración predeterminada para la utilidad de recolección de datos sadc no reune la información necesaria para estos informes. Esto se puede cambiar modificando el archivo /etc/cron.d/sysstat, y cambiando esta línea:
a esto:
Tenga en mente que este cambio ocasiona que se reuna información adicional por sadc y resulta en tamaños de archivos más grandes. Por lo tanto, asegúrese de que la configuración de su sistema pueda soportar el consumo de espacio adicional. |