Dar sentido a la salida de sar en AIX

11

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.

  1. Muchas de las CPU no se muestran en cada entrada. ¿Es esto esperado y qué significa eso exactamente? ¿Está relacionado con el n. ° 2?
  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%".
  3. Por último, no estoy seguro de cómo se calcula la línea -o all. 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 el system-wideporcentaje de inactividad es la suma del producto del porcentaje de inactividad de cada CPU y el valor 'físico'. Desafortunadamente, no tengo el physco entc% (suponiendo que haya uno), así que no puedo verificar esto con mis propios datos. Si eso es correcto, ¿significa que necesito los physcvalores 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 1luego 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):

ingrese la descripción de la imagen aquí

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 physcnúmeros, creo que no puedo hacer mucho con estos valores. He tratado de usar el Uvalor 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.

JimmyJames
fuente
¿Qué comando estás ejecutando para obtener esa salida? No se parece a la sar -P ALLsalida estándar .
Suiza
@Swiss Esto viene de un guión que no escribí. Llama sar -P ALL 1 1y 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.
JimmyJames
@Swiss Edité el ejemplo para reflejar mejor cómo se ve el resultado del script.
JimmyJames
¿podría proporcionar la salida de sar -P ALLdirectamente, en lugar de la salida de este script? Es un script no estándar y nadie puede decirte lo que hace sin verlo.
Suiza
@Swiss desafortunadamente no puedo. Puedo ver el script y su salida. ¿Hay algo que falta en la descripción de lo que hace que puedo aclarar?
JimmyJames

Respuestas:

4

El resultado que ha proporcionado tiene un aspecto diferente del estándar sar -P ALLo el sar -uresultado. 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

Nota: En las máquinas SMP, un procesador que no tiene ninguna actividad (0.00 para cada campo) es un procesador deshabilitado (fuera de línea).

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 -

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      9   | -       9   | -
10  | 33      10  | -       10  | -
11  | 64      11  | -       11  | -
12  | 6       12  | 0       12  | 38
13  | 6       13  | -       13  | -
14  | 6       14  | -       14  | -
15  | 6       15  | -       15  | -
16  | 12      16  | 12      16  | 37
17  | 15      17  | -       17  | -
18  | 62      18  | -       18  | -
19  | 69      19  | -       19  | -
20  | 7       20  | 3       20  | 42
21  | 7       21  | -       21  | -
22  | 6       22  | -       22  | -
23  | 7       23  | -       23  | -

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).

$ awk '{idle = $3; output += idle; if (idle >= 0) {cores += 1} } END {printf "Ave idle%%: %f  Cores: %d\n", output / cores, cores }' input_file
Ave idle%: 22.208333  Cores: 24
$ awk '{idle = $6; output += idle; if (idle >= 0) {cores += 1} } END {printf "Ave idle%%: %f  Cores: %d\n", output / cores, cores }' input_file
Ave idle%: 42.000000  Cores: 12
$ awk '{idle = $9; output += idle; if (idle >= 0) {cores += 1} } END {printf "Ave idle%%: %f  Cores: %d\n", output / cores, cores }' input_file
Ave idle%: 48.250000  Cores: 12

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:

  1. La falta de datos probablemente significa que el núcleo del procesador está deshabilitado.
  2. El Uen la línea promedio es diferente al Ude esa página de manual. Lo Umencionado en la página del manual debería aparecer debajo de la columna de ID del procesador.
  3. El resultado que ha proporcionado es diferente del sarresultado estándar y no se proporciona suficiente información para determinar a qué se refiere el Uo allen la línea promedio. Sin embargo, el primer número parece ser el% inactivo en núcleos activos.
suizo
fuente
"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". Lo siento, puede que no haya sido claro, calculé el promedio de los números. Eso no viene de sar. Los valores Uy allprovienen 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.
JimmyJames
Si los núcleos están deshabilitados, ¿por qué el tiempo de inactividad 'en todo el sistema' es mucho menor en el caso 2 que en el caso 3? Me cuesta entender cómo pueden tener casi el mismo tiempo de inactividad promedio en los mismos 12 cpus y, sin embargo, el tiempo de inactividad de todo el sistema puede ser completamente divergente.
JimmyJames
Veo que cuando las máquinas están bajo carga constante, veo salida de cada procesador. Esto me sugeriría que tienes razón en que están deshabilitados. Solo estoy luchando con la forma en que el sistema inactivo en todo el sistema se relaciona con el inactivo de los cpus no deshabilitados.
JimmyJames
Actualicé mi pregunta con algunos cambios para aclarar el problema. Entonces, mirando el caso 2, si 12 cpus están deshabilitados y el porcentaje de inactividad del sistema se basó en los 24, el% de inactividad no podría ir por debajo del 50%. Entonces, dado que tengo un 15%, eso significa que el% inactivo del sistema debe ignorar las CPU deshabilitadas, ¿verdad?
JimmyJames