Comprendre la sortie de Sar sur AIX

11

J'essaie de comprendre certaines données qui ont été extraites du SAR. J'ai trois questions principales à ce sujet. En fin de compte, je voudrais déterminer le nombre de processeurs inactifs à chaque intervalle d'échantillonnage sur un cluster de serveurs.

  1. De nombreux processeurs n'apparaissent pas dans chaque entrée. Est-ce prévu et qu'est-ce que cela signifie exactement? Est-ce lié à # 2?
  2. Il y a des lignes inutilisées (CPU = U). La documentation indique que "U indique la capacité inutilisée à l'échelle du système". Je ne peux pas vraiment trouver une définition précise de la "capacité inutilisée à l'échelle du système" ou une quelconque définition. Je ne sais pas comment interpréter une ligne qui dit quelque chose comme «la capacité inutilisée était à 70% inactive».
  3. Enfin, je ne sais pas comment la ligne -ou allest calculée. Je pense que c'est la moyenne de tous les processeurs mais quand je fais le calcul sur tous les processeurs, j'obtiens une réponse très différente de celle qui est sur cette ligne. Quelqu'un peut-il me dire exactement ce qui entre dans ce calcul? En examinant de près cette question relative au SAR, il semble que le system-widepourcentage d'inactivité est la somme du produit du pourcentage d'inactivité de chaque CPU et de la valeur «physc». Malheureusement, je n'ai pas le physcou entc% (en supposant qu'il y en ait un) donc je ne peux pas le vérifier avec mes propres données. Si c'est correct, cela signifie-t-il que j'ai besoin des physcvaleurs pour vraiment comprendre le pourcentage d'inactivité?

Voici quelques exemples de ce que je vois. Ce sont tous du même jour.

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

Ces données sont produites par un script qui s'exécute: sar -P ALL 1 1Il exécute ensuite une commande awk. Je ne suis pas bon avec awk mais ce sont clairement les parties importantes:

Filtre: /System|AIX|^$|%/ {next}

Analyser: {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)}

Cela semble correct en fonction du peu que je comprends de awk et de ce que je vois à partir d'exemples de sortie.

Si je suppose que les valeurs manquantes sont toutes nulles pour le cas 2, la moyenne est de 21, ce qui semble quelque peu cohérent avec le cas 1. Cependant, si je fais cette hypothèse pour le cas 3, j'obtiens 24%, ce qui est complètement en contradiction avec les 85% valeur en pourcentage donnée par sar pour le temps mort total du processeur.

Voici un graphique des captures d'une journée complète (toutes les 30 secondes):

entrez la description de l'image ici

Lorsqu'il y a très peu de temps d'inactivité «à l'échelle du système», la corrélation entre l'inactivité moyenne du processeur et l'inactivité «à l'échelle du système» est presque parfaite. Mais à mesure que le temps d'inactivité «à l'échelle du système» augmente, la corrélation devient beaucoup plus faible. Travailler sur l'hypothèse que ce sont des machines déterministes, cela me dit que les données dont je dispose ne donnent pas une image complète. Mais combien je m'en soucie?

Je ne comprends pas bien pourquoi certains processeurs ne sont pas signalés à chaque point, mais ceux qui manquent ne sont pas distribués de manière uniforme, comme le montrent les exemples ci-dessus. En lisant également ce livre rouge , je suppose que ce doivent être des processeurs logiques et que sans les physcchiffres, je pense que je ne peux pas faire grand-chose avec ces valeurs. J'ai essayé d'utiliser la Uvaleur dans diverses équations mais je n'ai rien trouvé de sensé. Il n'est même pas clair pour moi que le pourcentage de ralenti global peut être pris à sa valeur nominale.

NOTE : Il y a quelque chose qui ne va pas avec la capture de ces données de sar est une réponse tout à fait valide pour # 1, si c'est le cas, elle devrait toujours revenir.

JimmyJames
la source
Quelle commande exécutez-vous pour obtenir cette sortie? Cela ne ressemble pas à la sar -P ALLsortie standard .
Swiss
@Swiss Cela vient d'un script que je n'ai pas écrit. Il appelle sar -P ALL 1 1puis utilise awk pour décomposer le nombre de processeurs, puis les pourcentages utilisateur, système, attente d'E / S et inactif. J'ajouterai plus d'informations à votre réponse.
JimmyJames
@Swiss J'ai édité l'exemple pour mieux refléter à quoi ressemble la sortie du script.
JimmyJames
pourriez-vous fournir la sortie de sar -P ALLdirectement, plutôt que la sortie de ce script? C'est un script non standard et personne ne peut vous dire ce qu'il fait sans le voir.
Swiss
@Swiss malheureusement je ne peux pas. Je peux voir le script et sa sortie. Y a-t-il quelque chose qui manque dans la description de ce qu'elle fait que je peux clarifier?
JimmyJames

Réponses:

4

La sortie que vous avez fourni est différent de la norme sar -P ALLou la sar -usortie. Je ne sais pas si vous l'avez formaté à la main ou si vous l'exécutez via un autre outil, mais je pense qu'il y a suffisamment d'informations pour le comprendre.

Voici les informations importantes, obtenues à partir de la page de manuel de sar

Remarque: Sur les machines SMP, un processeur qui n'a aucune activité (0,00 pour chaque champ) est un processeur désactivé (hors ligne).

Étant donné que vous exécutez dans un cluster, il semble assez sûr de supposer que vous utilisez des machines SMP.

Notez que dans les exemples 2 et 3, seulement 12 des 24 cœurs signalent des statistiques. Si vous supposez que ces cœurs sont désactivés, comme mentionné dans la page de manuel, les statistiques ont du sens.

Mettons à jour vos données comme suit, pour indiquer un noyau désactivé avec -

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

Ensuite, nous pouvons utiliser ce qui suit pour calculer les moyennes (ceci est un résumé rapide que j'ai écrit, je suis sûr que quelque chose de mieux pourrait être écrit.)

$ 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

Notez que le nombre de cœurs dans les exemples 2 et 3 est de 12 et que les moyennes correspondent à ce que vous voyez dans votre exemple de sortie.

Il semble qu'à un moment donné entre votre premier et votre deuxième cas, la moitié de vos cœurs de processeur ont été désactivés.

Un bref résumé de vos questions:

  1. Des données manquantes signifient probablement que le cœur du processeur est désactivé.
  2. La Uligne moyenne est différente de la Upage de manuel. Les éléments Umentionnés dans la page de manuel doivent apparaître dans la colonne ID du processeur.
  3. La sortie que vous avez fournie est différente de la sarsortie standard et il n'y a pas suffisamment d'informations fournies pour déterminer à quoi se réfère la ligne Uou allsur la ligne moyenne. Le premier nombre semble être le% inactif sur les cœurs actifs.
Suisse
la source
"Notez que le nombre de cœurs dans les exemples 2 et 3 est de 12 et que les moyennes correspondent à ce que vous voyez dans votre exemple de sortie." Désolé, je n'ai peut-être pas été clair, j'ai calculé la moyenne à partir des chiffres. Ça ne vient pas de Sar. Les valeurs Uet allproviennent de sar sous forme de lignes. Je les ai éclatés dans ma réponse, car ils diffèrent fondamentalement des choses par rapport aux valeurs du processeur, d'après ce que je comprends.
JimmyJames
Si les cœurs sont désactivés, pourquoi le temps d'inactivité «à l'échelle du système» est-il beaucoup moins long dans le cas 2 que dans le cas 3? J'ai du mal à comprendre comment ils peuvent avoir presque le même temps d'inactivité moyen sur les mêmes 12 processeurs et pourtant le temps d'inactivité à l'échelle du système peut être complètement divergent.
JimmyJames
Je vois que lorsque les machines sont sous charge constante, je vois la sortie de chaque processeur. Cela me suggérerait que vous avez raison de dire que ceux-ci sont désactivés. Je suis juste en train de me battre avec la façon dont l'inactivité du système est liée à l'inactivité des processeurs non désactivés.
JimmyJames
J'ai mis à jour ma question avec quelques changements pour clarifier le problème. Donc, en regardant le cas 2, si 12 processeurs sont désactivés et que le pourcentage sys-idle est basé sur les 24, le% inactif ne peut pas descendre en dessous de 50%. Donc, étant donné que j'ai 15%, cela signifie que le sys idle% doit ignorer les processeurs désactivés, non?
JimmyJames