Vorrei sapere se l'output di un Linux basato su Red Hat potrebbe essere interpretato diversamente da un Linux basato su Debian.
Per rendere la domanda ancora più specifica, ciò che cerco dopo è capire come viene interpretata la "media dei carichi" dalla prima riga del top
comando su un sistema Red-Hat e come verificarla con il codice ro della documentazione ufficiale.
[Esistono molti modi per affrontare questo argomento, tutte risposte accettabili alla domanda]
Un approccio potenziale sarebbe quello di trovare dove queste informazioni sono ufficialmente documentate.
Un altro, sarebbe quello di trovare la versione del codice che top
è costruita nella distribuzione specifica e la versione su cui sto lavorando.
L'output del comando che sto ricevendo è:
top - 13:08:34 up 1:19, 2 users, load average: 0.02, 0.00, 0.00
Tasks: 183 total, 1 running, 182 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 96.8%id, 2.7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3922520k total, 788956k used, 3133564k free, 120720k buffers
Swap: 2097148k total, 0k used, 2097148k free, 344216k cached
In questo caso come posso interpretare il valore medio del carico ?
Sono riuscito a individuare che il carico medio è all'ultimo minuto, da una fonte di documentazione e che dovrebbe essere interpretato dopo essere stato moltiplicato per 100, da un'altra fonte di documentazione.
Quindi, la domanda è:
è caricato allo 0,02% o al 2%?
Fonti e versioni della documentazione:
1) Il primo è protagonista di
TOP(1) Linux User’s Manual TOP(1)
NAME
top - display Linux tasks
Fonte: man top
nella mia distribuzione RedHat
Ubuntu ha anche la versione con "task" che non spiega la media del carico in:
http://manpages.ubuntu.com/manpages/precise/man1/top.1.html
2) Il secondo inizia con
TOP(1) User Commands TOP(1)
NAME top
top - display Linux processes
Fonte:
http://man7.org/linux/man-pages/man1/top.1.htm
3) Questo inizia con:
TOP(1)
NAME
top - display and update information about the top cpu processes
Fonte: http://www.unixtop.org/man.shtml
Il primo , può essere visto da man top
dentro RHEL
o dentro online ubuntu documentation
e non ha alcuna spiegazione per il formato di output (né sulla media del carico a cui sono interessato) .
Il secondo , contiene una breve spiegazione, sottolineando che la media del carico ha a che fare con l'ultimo minuto, ma nulla sull'interpretazione del suo valore!
Cito direttamente dalla seconda fonte:
2a. Medie UPTIME e LOAD
Questa parte è costituita da una singola riga contenente:
nome del programma o della finestra, a seconda della modalità di visualizzazione
ora corrente e durata dall'ultimo avvio
numero totale di utenti
che caricano il sistema in media negli ultimi 1, 5 e 15 minuti
Quindi, se questa spiegazione è effettivamente corretta, è sufficiente capire che la media del carico è di circa 1 minuto.
Ma non spiega il formato del numero.
Nella terza spiegazione, si dice che:
Quando si specificano i numeri per le medie di carico, è necessario moltiplicarli per 100.
Questa spiegazione suggerisce che 0,02 significa 2% e non 0,02%. Ma è corretto? Inoltre, è corretto per tutte le distribuzioni di Linux e implementazioni potenzialmente diverse di top
?
Per trovare la risposta a questa domanda, ho cercato di esaminare il codice cercandolo online. Ma ho trovato, almeno, due diverse versioni di top
relative a RHEL là fuori! il builtin-top.c
e il refactored top.c
. Entrambi protetti da copyright di Red-Hat come dice l'avviso all'inizio del codice e quindi sembra logico che RHEL utilizzi uno di questi.
http://lxr.free-electrons.com/source/tools/perf/builtin-top.c
http://lxr.free-electrons.com/source/tools/perf/util/top.c
Quindi, prima di approfondire quel codice, volevo un'opinione su dove concentrarsi per formare una comprensione accurata di come viene interpretato il carico della CPU?
Dalle informazioni fornite nelle risposte seguenti, oltre ad alcune ricerche personali, ho scoperto che:
1 - Quello top
che sto usando è contenuto nel pacchetto procps-3.2.8. Che può essere verificato utilizzando top -v
.
2 - Nella versione procps-3.2.8
che ho scaricato dal sito ufficiale sembra che lo strumento uptime
ottenga direttamente le sue informazioni dal procfs
file /proc/loadavg
(non utilizzando la funzione linux getloadavg()
).
3 - Ora anche per il top
comando non utilizza la funzione getloadavg()
. Sono riuscito a verificare che top
effettivamente le stesse cose diuptime
strumento per mostrare le medie di carico. In realtà chiama la uptime
funzione dello strumento, che ottiene le sue informazioni dal procfs
file /proc/loadavg
.
Quindi, tutto punta al /proc/loadavg
file! Quindi, per formare un'accurata comprensione del load average
prodotto top
, si deve leggere il codice del kernel per vedere come loadavg
viene scritto il file .
C'è anche un eccellente articolo sottolineato in una delle risposte che fornisce una spiegazione dei termini di un profano dei tre valori di loadavg
.
Quindi, nonostante il fatto che tutte le risposte siano state ugualmente utili e utili, segnerò quella che indicava l'articolo
http://www.linuxjournal.com//article/9001 come "la" risposta alla mia domanda. Grazie a tutti per il vostro contributo!
Inoltre dalla domanda Comprensione di top e load medium , ho trovato un link al codice sorgente del kernel che punta al punto in cui loadavg
viene calcolato. Come sembra che ci sia un grande commento che spiega il modo in cui funziona, anche questa parte del codice è dentro C
!
Il link al codice è http://lxr.free-electrons.com/source/kernel/sched/loadavg.c
Ancora una volta non sto cercando di impegnarmi in alcuna forma di plagio, sto solo aggiungendo questo per completezza. Quindi, sto ripetendo che il collegamento al codice del kernel è stato trovato da una delle risposte in Comprensione di top e caricamento della media ...
top -v
)