Entendendo a saída do sar no AIX

11

Estou tentando entender alguns dados que foram extraídos do SAR. Eu tenho três perguntas principais sobre isso. Por fim, gostaria de determinar quantas CPUs estavam ociosas em cada intervalo de amostragem em um cluster de servidores.

  1. Muitas das CPUs não estão aparecendo em todas as entradas. Isso é esperado e o que exatamente isso significa? Está relacionado ao # 2?
  2. Existem linhas não utilizadas (CPU = U). A documentação diz "U indica a capacidade não utilizada em todo o sistema". Não consigo encontrar uma definição precisa de "capacidade não utilizada em todo o sistema" ou qualquer definição, realmente. Não sei ao certo como interpretar uma linha que diz algo como "a capacidade não utilizada estava ociosa em 70%".
  3. Por fim, não tenho certeza de como a linha -ou allé calculada. Eu acho que é a média de todas as CPUs, mas quando eu faço as contas em todas as CPUs, recebo uma resposta muito diferente da que está nessa linha. Alguém pode me dizer exatamente o que entra nesse cálculo? Observando atentamente essa questão relacionada a SAR , parece que a system-wideporcentagem inativa é a soma do produto da porcentagem inativa de cada CPU e o valor 'physc'. Infelizmente, não tenho o physc% ou entc% (supondo que exista um), portanto não posso verificar isso com meus próprios dados. Se estiver correto, isso significa que eu preciso dos physcvalores para realmente entender a porcentagem de inatividade?

Aqui estão alguns exemplos do que estou vendo. Estes são todos do mesmo dia.

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

Esses dados são produzidos por um script que é executado: sar -P ALL 1 1Em seguida, ele executa um comando awk. Eu não sou bom com awk, mas estas são claramente as partes importantes:

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

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

Isso parece correto com base no pouco que eu entendo do awk e no que vejo nos exemplos da saída.

Se eu presumir que os valores ausentes são zero no caso 2, a média é 21, o que parece um pouco consistente com o caso 1. No entanto, se eu fizer essa suposição no caso 3, recebo 24%, o que está totalmente em desacordo com os 85% valor percentual fornecido pelo sar para a CPU total ociosa.

Aqui está um gráfico das capturas de um dia inteiro (a cada 30 segundos):

insira a descrição da imagem aqui

Quando há muito pouco tempo ocioso 'em todo o sistema', a correlação entre o tempo ocioso médio da CPU e o ocioso 'em todo o sistema' é quase perfeita. Porém, à medida que o tempo ocioso "em todo o sistema" aumenta, a correlação se torna muito mais fraca. Trabalhando no pressuposto de que são máquinas determinísticas, isso me diz que os dados que tenho não estão dando uma visão completa. Mas quanto eu me importo?

Eu não entendo completamente por que algumas CPUs não estão sendo relatadas em cada ponto, mas as que estão faltando não são distribuídas igualmente, como visto nos exemplos acima. Também, ao ler este redbook , entendo que essas devem ser CPUs lógicas e que, sem os physcnúmeros, acho que não há muito o que fazer com esses valores. Tentei usar o Uvalor em várias equações, mas não encontrei nada sensato. Não está claro para mim que a porcentagem total de ociosidade possa ser tomada pelo valor nominal.

NOTA : Há algo errado com a captura desses dados do sar. É uma resposta completamente válida para o número 1, se for o caso, ele sempre deve retornar.

JimmyJames
fonte
Qual comando você está executando para obter essa saída? Não se parece com a sar -P ALLsaída padrão .
Suíço
@ Swiss Isso vem de um script que eu não escrevi. Ele chama sar -P ALL 1 1e depois usa o awk para dividir o número da CPU e, em seguida, o usuário, sistema, espera de E / S e porcentagens de inatividade. Adicionarei mais informações à sua resposta.
JimmyJames
@Swiss Editei o exemplo para refletir melhor a aparência da saída do script.
precisa saber é o seguinte
você poderia fornecer a saída sar -P ALLdiretamente, em vez da saída desse script? É um script não padrão e ninguém pode lhe dizer o que faz sem vê-lo.
Swiss
@ Swiss infelizmente não posso. Eu posso ver o script e sua saída. Há algo faltando na descrição do que faz que eu possa esclarecer?
precisa saber é o seguinte

Respostas:

4

A saída que você forneceu parece diferente da padrão sar -P ALLou da sar -usaída. Não sei se você o formatou manualmente ou se está executando através de outra ferramenta, mas acho que há informações suficientes para descobrir isso.

Aqui está a informação importante, obtida na página de manual para sar

Nota: Nas máquinas SMP, um processador que não possui nenhuma atividade (0,00 para cada campo) é um processador desativado (offline).

Como você está executando em um cluster, parece bastante seguro supor que você esteja usando máquinas SMP.

Observe que nos exemplos 2 e 3, apenas 12 dos 24 núcleos estão relatando estatísticas. Se você presumir que esses núcleos estão desativados, conforme mencionado na página de manual, as estatísticas farão sentido.

Vamos atualizar seus dados da seguinte forma, para indicar um núcleo desativado com -

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

Em seguida, podemos usar o seguinte para calcular as médias (este é um guia rápido que escrevi, tenho certeza de que algo melhor poderia ser escrito.)

$ 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

Observe que o número de núcleos nos exemplos 2 e 3 é 12 e as médias correspondem ao que você vê na saída de exemplo.

Parece que em algum momento entre o primeiro e o segundo caso, metade dos núcleos da CPU foram desativados.

Um resumo rápido de suas perguntas:

  1. Dados ausentes provavelmente significam que o núcleo do processador está desativado.
  2. A Ulinha média é diferente da Upágina de manual. O Umencionado na página de manual deve aparecer na coluna ID do processador.
  3. A saída que você forneceu é diferente da sarsaída padrão e não há informações suficientes para determinar a que se refere a linha média Uou alla linha média. O primeiro número parece ser o% ocioso nos núcleos ativos.
suíço
fonte
"Observe que o número de núcleos nos exemplos 2 e 3 é 12 e as médias correspondem ao que você vê na saída de exemplo." Desculpe, posso não ter sido claro, calculei a média a partir dos números. Isso não vem do sar. Os valores Ue allsão provenientes de sar como linhas. Eu os expliquei na minha resposta, uma vez que eles são coisas fundamentalmente diferentes dos valores da CPU, pelo que entendi.
precisa saber é o seguinte
Se os núcleos estão desativados, por que o tempo ocioso 'em todo o sistema' é muito menor no caso 2 do que no caso 3? Estou lutando para entender como eles podem ter quase o mesmo tempo ocioso médio nos mesmos 12 cpus e, no entanto, o tempo ocioso em todo o sistema é completamente divergente.
JimmyJames
Vejo que, quando as máquinas estão sob carga constante, vejo a saída de todos os processadores. Isso sugeriria que você estivesse certo de que eles estavam desativados. Estou apenas lutando com a maneira como o sistema está ocioso se relaciona com o modo ocioso dos cpus não desativados.
precisa saber é o seguinte
Atualizei minha pergunta com algumas alterações para esclarecer o problema. Portanto, analisando o caso 2, se 12 cpus estiverem desativados e a porcentagem de inatividade do sistema for baseada em todos os 24, a% inativa não poderá ficar abaixo de 50%. Então, como eu tenho 15%, o que significa que o sys% ocioso deve estar ignorando as CPUs desativadas, certo?
precisa saber é o seguinte