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.
- Muitas das CPUs não estão aparecendo em todas as entradas. Isso é esperado e o que exatamente isso significa? Está relacionado ao # 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%".
- Por fim, não tenho certeza de como a linha
-
ouall
é 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 asystem-wide
porcentagem inativa é a soma do produto da porcentagem inativa de cada CPU e o valor 'physc'. Infelizmente, não tenho ophysc
% 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 dosphysc
valores 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 1
Em 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):
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 physc
números, acho que não há muito o que fazer com esses valores. Tentei usar o U
valor 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.
sar -P ALL
saída padrão .sar -P ALL 1 1
e 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.sar -P ALL
diretamente, 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.Respostas:
A saída que você forneceu parece diferente da padrão
sar -P ALL
ou dasar -u
saí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
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
-
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.)
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:
U
linha média é diferente daU
página de manual. OU
mencionado na página de manual deve aparecer na coluna ID do processador.sar
saída padrão e não há informações suficientes para determinar a que se refere a linha médiaU
ouall
a linha média. O primeiro número parece ser o% ocioso nos núcleos ativos.fonte
U
eall
sã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.