Dare un senso all'output di sar su AIX


11

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.

  1. Molte CPU non vengono visualizzate in ogni voce. È previsto e cosa significa esattamente? È legato al n. 2?
  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%".
  3. Infine, non sono sicuro di come viene calcolata la riga -o all. 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 la system-widepercentuale di inattività sia la somma del prodotto della percentuale di inattività di ogni CPU e il valore "fisico". Sfortunatamente, non ho physco% entc (supponendo che ce ne sia uno) quindi non posso verificarlo con i miei dati. Se è corretto, significa che ho bisogno dei physcvalori 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 1esegue 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):

inserisci qui la descrizione dell'immagine

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 physcnumeri, penso che non ci sia molto da fare con questi valori. Ho provato a usare il Uvalore 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.


Quale comando stai eseguendo per ottenere quell'output? Non sembra l' sar -P ALLoutput standard .
Swiss

@Swiss Questo deriva da una sceneggiatura che non ho scritto. Chiama sar -P ALL 1 1e 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.
JimmyJames

@Swiss Ho modificato l'esempio per riflettere maggiormente l'aspetto dell'output dello script.
JimmyJames

potresti fornire l'output di sar -P ALLdirettamente, anziché l'output di questo script? È uno script non standard e nessuno può dirti cosa fa senza vederlo.
Swiss

@Swiss purtroppo non posso. Riesco a vedere lo script e il suo output. C'è qualcosa che manca nella descrizione di ciò che fa che posso chiarire?
JimmyJames

Risposte:


4

L'output fornito è diverso dallo standard sar -P ALLo sar -udall'output. Non sono sicuro se lo hai formattato a mano o se lo stai eseguendo tramite un altro strumento, ma penso che ci siano abbastanza informazioni lì per capirlo.

Ecco l'importante informazione, ottenuta dalla pagina man di sar

Nota: sulle macchine SMP un processore che non ha alcuna attività (0,00 per ogni campo) è un processore disabilitato (offline).

Dal momento che si esegue in un cluster, sembra abbastanza sicuro supporre che si stanno utilizzando macchine SMP.

Si noti che nell'esempio 2 e 3, solo 12 dei 24 core riportano statistiche. Se supponi che questi core siano disabilitati, come menzionato nella pagina man, le statistiche hanno senso.

Aggiorniamo i tuoi dati come segue, per indicare un core disabilitato con -

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

Quindi possiamo usare quanto segue per calcolare le medie (questo è un rapido esempio che ho scritto, sono sicuro che si potrebbe scrivere qualcosa di meglio.)

$ 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

Si noti che il numero di core nell'esempio 2 e 3 è 12 e che le medie corrispondono a quelle visualizzate nell'output di esempio.

Sembra che a un certo punto tra il primo e il secondo caso, metà dei core della CPU siano stati disabilitati.

Un breve riepilogo delle tue domande:

  1. Dati mancanti probabilmente significa che il core del processore è disabilitato.
  2. La Uriga nella media è diversa da quella Unella pagina man. Il Uriferimento a nella pagina man dovrebbe apparire sotto la colonna ID processore.
  3. L'output che hai fornito è diverso sardall'output standard e non ci sono abbastanza informazioni fornite per determinare a cosa si riferisce la Uo allsulla linea media. Tuttavia, il primo numero sembra essere la% inattiva sui core attivi.

"Nota che il numero di core nell'esempio 2 e 3 è 12 e che le medie corrispondono a ciò che vedi nel tuo esempio di output." Scusa, potrei non essere stato chiaro, ho calcolato la media dai numeri. Questo non viene da Sar. I valori Ue allprovengono da sar come linee. Li ho spiegati nella mia risposta poiché sono fondamentalmente cose diverse rispetto ai valori della cpu, da quello che capisco.
JimmyJames

Se i core sono disabilitati, perché il tempo di inattività "a livello di sistema" è molto meno nel caso 2 rispetto al caso 3? Faccio fatica a capire come possano avere quasi lo stesso tempo di inattività medio negli stessi 12 cpus e tuttavia il tempo di inattività a livello di sistema sia completamente divergente.
JimmyJames

Vedo che quando le macchine sono sotto carico costante, vedo l'output di ogni processore. Questo mi suggerirebbe che hai ragione che sono disabilitati. Sto solo lottando con il modo in cui il minimo di sistema si collega al minimo del cpus non disabilitato.
JimmyJames

Ho aggiornato la mia domanda con alcune modifiche per chiarire il problema. Quindi, guardando al caso 2, se 12 cpus sono disabilitati e la percentuale di inattività del sistema era basata su tutti i 24, la% di inattività non poteva scendere al di sotto del 50%. Quindi dato che ho il 15% significa che il% di sistema inattivo deve ignorare le CPU disabilitate, giusto?
JimmyJames
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.