Sto cercando di capire alcuni dati che sono stati estratti da SAR. Ho tre domande principali su questo. Alla fine, vorrei determinare quante CPU erano inattive ad ogni intervallo di campionamento attraverso un cluster di server.
- Molte CPU non vengono visualizzate in ogni voce. È previsto e cosa significa esattamente? È legato al n. 2?
- Ci sono linee non utilizzate (CPU = U). La documentazione dice "U indica la capacità non utilizzata a livello di sistema". Non riesco a trovare una definizione precisa di "capacità inutilizzata a livello di sistema" o qualsiasi definizione, davvero. Non sono sicuro di come interpretare una riga che dice qualcosa del tipo "la capacità non utilizzata era inattiva al 70%".
- Infine, non sono sicuro di come viene calcolata la riga
-
oall
. Penserei che sia la media di tutte le CPU ma quando faccio i calcoli su tutte le CPU, ottengo una risposta molto diversa da quella che c'è su quella linea. Qualcuno può dirmi esattamente cosa succede in quel calcolo? Osservando da vicino questa domanda correlata sul SAR , sembra che lasystem-wide
percentuale di inattività sia la somma del prodotto della percentuale di inattività di ogni CPU e il valore "fisico". Sfortunatamente, non hophysc
o% entc (supponendo che ce ne sia uno) quindi non posso verificarlo con i miei dati. Se è corretto, significa che ho bisogno deiphysc
valori per capire veramente la percentuale di inattività?
Ecco alcuni esempi di ciò che sto vedendo. Questi sono tutti dello stesso giorno.
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
Questi dati sono prodotti da uno script che viene eseguito: sar -P ALL 1 1
esegue quindi un comando awk. Non sono bravo con Awk ma queste sono chiaramente le parti importanti:
Filtro: /System|AIX|^$|%/ {next}
parse: {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)}
Questo sembra corretto in base a quel poco che capisco di awk e ciò che vedo dagli esempi dell'output.
Se suppongo che i valori mancanti siano tutti zero per il caso 2, la media è 21 che sembra in qualche modo coerente con il caso 1. Tuttavia, se prendo tale ipotesi per il caso 3, ottengo il 24% che è completamente in contrasto con l'85% valore percentuale fornito da sar per il minimo inattività della CPU.
Ecco un grafico delle acquisizioni di un'intera giornata (ogni 30 secondi):
Quando il tempo di inattività "a livello di sistema" è molto ridotto, la correlazione tra lo stato di inattività medio della CPU e lo stato di inattività "a livello di sistema" è quasi perfetta. Ma con l'aumentare del tempo di inattività 'a livello di sistema', la correlazione diventa molto più debole. Lavorando sul presupposto che si tratti di macchine deterministiche, ciò mi dice che i dati che ho non danno il quadro completo. Ma quanto me ne importa?
Non capisco perfettamente perché alcune CPU non vengano segnalate in ogni punto, ma quelle mancanti non sono distribuite uniformemente come visto negli esempi sopra. Anche leggendo questo redbook , ritengo che questi debbano essere CPU logiche e che senza i physc
numeri, penso che non ci sia molto da fare con questi valori. Ho provato a usare il U
valore in varie equazioni ma non ho trovato nulla di sensato. Non è nemmeno chiaro per me che la percentuale di inattività complessiva può essere presa al valore nominale.
NOTA : c'è qualcosa di sbagliato nell'acquisizione di questi dati da sar è una risposta completamente valida per il n. 1, se è il caso dovrebbe sempre tornare.
sar -P ALL 1 1
e quindi utilizza awk per suddividere il numero della CPU e quindi le percentuali di utente, sistema, IO-wait e inattività. Aggiungerò ulteriori informazioni alla tua risposta.
sar -P ALL
direttamente, anziché l'output di questo script? È uno script non standard e nessuno può dirti cosa fa senza vederlo.
sar -P ALL
output standard .