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 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.
sar -P ALL
saída padrão .