Estoy tratando de entender algunos datos que se han extraído de SAR. Tengo tres preguntas principales sobre esto. En última instancia, me gustaría determinar cuántas CPU estaban inactivas en cada intervalo de muestreo en un grupo de servidores.
- Muchas de las CPU no se muestran en cada entrada. ¿Es esto esperado y qué significa eso exactamente? ¿Está relacionado con el n. ° 2?
- Hay líneas no utilizadas (CPU = U). La documentación dice "U indica la capacidad no utilizada de todo el sistema". Realmente no puedo encontrar una definición precisa de "capacidad no utilizada en todo el sistema" o ninguna definición. No estoy seguro de cómo interpretar una línea que dice algo como "la capacidad no utilizada estaba inactiva en un 70%".
- Por último, no estoy seguro de cómo se calcula la línea
-
oall
. Creo que es el promedio de todas las CPU, pero cuando hago los cálculos en todas las CPU, obtengo una respuesta muy diferente de lo que está en esa línea. ¿Alguien puede decirme exactamente qué implica ese cálculo? Mirando de cerca esta pregunta relacionada sobre SAR , parece que elsystem-wide
porcentaje de inactividad es la suma del producto del porcentaje de inactividad de cada CPU y el valor 'físico'. Desafortunadamente, no tengo elphysc
o entc% (suponiendo que haya uno), así que no puedo verificar esto con mis propios datos. Si eso es correcto, ¿significa que necesito losphysc
valores para comprender realmente el porcentaje inactivo?
Aquí hay algunos ejemplos de lo que estoy viendo. Todos estos son del mismo día.
CPU | Idle CPU | Idle CPU | Idle
---------- ---------- ----------
0 | 8 0 | 15 0 | 17
1 | 25 1 | 94 1 | 32
2 | 79 2 | 100 2 | 97
3 | 62 3 | 99 3 | 71
4 | 5 4 | 13 4 | 5
5 | 7 5 | 13 5 | 23
6 | 6 6 | 99 6 | 71
7 | 7 7 | 44 7 | 98
8 | 11 8 | 12 8 | 48
9 | 17 12 | 0 12 | 38
10 | 33 16 | 12 16 | 37
11 | 64 20 | 3 20 | 42
12 | 6 U | 95 U | 97
13 | 6 - | 15 - | 85
14 | 6
15 | 6
16 | 12
17 | 15
18 | 62
19 | 69
20 | 7
21 | 7
22 | 6
23 | 7
U | 80
- | 15
case 1: avg(24): 22
case 2: avg(12): 42
case 3: avg(12): 48
Estos datos son producidos por un script que se ejecuta: sar -P ALL 1 1
luego ejecuta un comando awk. No soy bueno con awk, pero estas son claramente las partes importantes:
Filtrar: /System|AIX|^$|%/ {next}
Analizar gramaticalmente: {k=0;if(NR==7) k=1} {sub("^-", "all", $1); cpu=$(1+k); user=$(2+k); sys=$(3+k); io=$(4+k); idle=$(5+k)}
Esto parece correcto según lo poco que entiendo de awk y lo que veo de los ejemplos de la salida.
Si supongo que los valores faltantes son todos cero para el caso 2, el promedio es 21, lo que parece algo consistente con el caso 1. Sin embargo, si hago esa suposición para el caso 3, obtengo el 24%, que está completamente en desacuerdo con el 85% valor porcentual dado por sar para la CPU inactiva general
Aquí hay un gráfico de las capturas de un día completo (cada 30 segundos):
Cuando hay muy poco tiempo de inactividad 'en todo el sistema', la correlación entre la inactividad promedio de la CPU y la inactiva 'en todo el sistema' es casi perfecta. Pero a medida que aumenta el tiempo de inactividad 'en todo el sistema', la correlación se vuelve mucho más débil. Trabajando con el supuesto de que se trata de máquinas deterministas, eso me dice que los datos que tengo no dan la imagen completa. ¿Pero cuánto me importa?
No entiendo completamente por qué algunas CPU no se informan en cada punto, pero las que faltan no se distribuyen uniformemente como se ve en los ejemplos anteriores. Además, al leer este libro rojo , supongo que deben ser CPU lógicas y que sin los physc
números, creo que no puedo hacer mucho con estos valores. He tratado de usar el U
valor en varias ecuaciones pero no he encontrado nada sensato. Ni siquiera está claro para mí que el porcentaje de inactividad general se pueda tomar al pie de la letra.
NOTA : Hay algo mal con la captura de estos datos de sar es una respuesta completamente válida para el n. ° 1, si es el caso, siempre debe regresar.
sar -P ALL
salida estándar .sar -P ALL 1 1
y luego usa awk para dividir el número de CPU y luego el usuario, el sistema, la espera de E / S y los porcentajes de inactividad. Agregaré más información a su respuesta.sar -P ALL
directamente, en lugar de la salida de este script? Es un script no estándar y nadie puede decirte lo que hace sin verlo.Respuestas:
El resultado que ha proporcionado tiene un aspecto diferente del estándar
sar -P ALL
o elsar -u
resultado. No estoy seguro si lo formateó a mano, o si lo está ejecutando a través de otra herramienta, pero creo que hay suficiente información para resolver esto.Aquí está la información importante, obtenida de la página del manual para
sar
Como está ejecutando en un clúster, parece bastante seguro asumir que está utilizando máquinas SMP.
Tenga en cuenta que en los ejemplos 2 y 3, solo 12 de los 24 núcleos informan estadísticas. Si asume que estos núcleos están deshabilitados, como se menciona en la página del manual, entonces las estadísticas tienen sentido.
Actualicemos sus datos de la siguiente manera, para indicar un núcleo deshabilitado con
-
Luego podemos usar lo siguiente para calcular los promedios (este es un resumen rápido que escribí, estoy seguro de que podría escribirse algo mejor).
Tenga en cuenta que el número de núcleos en los ejemplos 2 y 3 es 12, y los promedios coinciden con lo que ve en su salida de ejemplo.
Parece que en algún momento entre su primer y segundo caso, la mitad de los núcleos de su CPU se han deshabilitado.
Un resumen rápido de sus preguntas:
U
en la línea promedio es diferente alU
de esa página de manual. LoU
mencionado en la página del manual debería aparecer debajo de la columna de ID del procesador.sar
resultado estándar y no se proporciona suficiente información para determinar a qué se refiere elU
oall
en la línea promedio. Sin embargo, el primer número parece ser el% inactivo en núcleos activos.fuente
U
yall
provienen de sar como líneas. Los separé en mi respuesta, ya que son fundamentalmente diferentes a los valores de la CPU, por lo que entiendo.