Capisco che il bilanciamento del carico è un modo per misurare l'impegno della CPU. Tuttavia, non capisco come 0.00
possa esistere una media di carico . Il kernel non funziona sempre? Non prende parte del carico della CPU?
Capisco che il bilanciamento del carico è un modo per misurare l'impegno della CPU. Tuttavia, non capisco come 0.00
possa esistere una media di carico . Il kernel non funziona sempre? Non prende parte del carico della CPU?
Risposte:
La media del carico per un periodo di tempo è il numero medio di processi che erano in competizione per la CPU in quel periodo di tempo. Il "kernel" non funziona se non c'è nulla da fare; più specificamente, se non c'è nulla da fare, la CPU viene assegnata a un thread "inattivo" speciale che non viene conteggiato (e che può fare cose come mettere la CPU è uno stato in cui attende un interrupt).
Quindi, ad esempio, una media di carico di 0,6 su 5 minuti di solito significa che durante quei 5 minuti la CPU è stata utilizzata per un totale di 3 minuti da alcuni processi (o dal kernel) e per un totale di 2 minuti era inattivo. Ma, come osserva @UKMonkey, potrebbe significare che dopo 4 minuti e mezzo senza fare nulla, 6 processi hanno gareggiato per la CPU negli ultimi 30 secondi ...
La CPU è inattiva se non è presente alcun processo che voglia utilizzarla per eseguire il codice, poiché tutti i processi sono in attesa del completamento di un'operazione di input o output o sono in attesa di essere svegliati in un determinato momento futuro.
I collegamenti di @ Panther forniscono discussioni più approfondite sulle medie di carico.
Una media di carico è una misura del sovraccarico di un core della CPU in termini di numero di processi che vogliono usarlo contemporaneamente.
Quanto segue presuppone una CPU single core (single thread):
0.0
La CPU non sta facendo nulla. Se un processo dovesse iniziare a utilizzare la CPU, sarebbe l'unico a utilizzarlo.
Una CPU inattiva non significa che non ci siano processi in esecuzione. Ad esempio, i servizi in background e il kernel sono ancora in esecuzione e occupano ancora memoria. Semplicemente non usano alcuna CPU, perché non stanno facendo nulla.
1.0
La CPU è al massimo utilizzo, ma non vi è contesa tra i processi per l'utilizzo della CPU. Cioè, è in esecuzione solo un singolo processo, quindi è in grado di rivendicare il 100% del tempo della CPU per se stesso. In alternativa, sono in esecuzione più processi ma nessuno rivendica il 100% di CPU e il loro utilizzo combinato della CPU aggiunge fino al 100%. Funzionano tutti più velocemente di quanto funzionerebbero anche se avessero la CPU per sé.
Maggiore di 1,0
La CPU è al massimo utilizzo e ci sono più processi che vogliono usarla contemporaneamente, quindi sono effettivamente in esecuzione più lentamente di quanto sarebbero altrimenti in grado di funzionare su una CPU inattiva. Ad esempio, una media di carico di 3.0 indica che i processi sono in esecuzione a un terzo della velocità che desiderano eseguire. Una media di carico di 50,0 indica che i processi sono in esecuzione a 1/50 della velocità che desiderano eseguire, a causa di tutti gli altri processi in esecuzione. Cioè, cifre superiori a 1.0 indicano che la CPU disponibile viene estesa tra un numero sempre maggiore di processi.
Avere una CPU multi core non cambia il significato delle cifre, ma può cambiare la loro interpretazione. Ad esempio, se si dispone di una CPU a 4 core, un carico di 1,0 equivale comunque a un processo che utilizza la CPU al 100% su un core, ma ci sono altri tre core. Quindi su una CPU a 4 core, il punto di massima efficienza è 4.0, non 1.0 - e il punto in cui tutto funziona a efficienza 1/3 è 12,0, non 3,0. Per aggiungere alla complessità, un singolo processo può avere più di un thread ciascuno rivendicando la propria CPU. Quindi un singolo processo può utilizzare il 100% di tutti e 4 i core se è multi-thread.
Nota importante
L'utilizzo della CPU è solo una risorsa che può limitare le prestazioni di un processo. L'I / O è un altro e non viene preso in considerazione nel carico della CPU. Un processo che utilizza una determinata quantità di CPU non sarà necessariamente in grado di utilizzare di più su una macchina più leggera poiché potrebbe colpire altri colli di bottiglia.
Qual è la migliore media di carico
Dipende davvero da cosa stai facendo e se preferisci la reattività o se la CPU lavora il più duramente possibile.
Per qualcosa che deve essere eseguito il più possibile, la media del carico dovrebbe essere pari o leggermente superiore al numero di core. Qualcosa di molto più grande di questo indica che potresti fare di più, più rapidamente, se separassi le attività tra più computer / server.
Per qualcosa che deve essere il più reattivo possibile (reagire rapidamente), la media del carico dovrebbe essere un margine confortevole inferiore al numero di core, come metà o un terzo, che consente alcune variazioni intermittenti prima che si verifichino rallentamenti.
Per un guest di virtualizzazione (ad es. KVM), minore è la media del carico, meglio è, perché stai effettivamente condividendo la CPU con altri guest sullo stesso host.
D
i processi di stato sono sempre inclusi nella media del carico in Linux. Sì, è confuso. Sì, dovremmo esaminare principalmente altre metriche oltre a caricare avg.
Una media di carico di 0,00 significa sostanzialmente che il sistema è inattivo e che non vi sono ritardi, stress o colli di bottiglia nella CPU nel tempo misurato.
Non significa che la tua CPU è inattiva, significa solo che se un processo richiede tempo CPU, non c'è attesa.
È difficile dire altro da quel poco che hai pubblicato in quanto può dipendere da come hai misurato il tuo carico (sistema, per utente?) E in quale momento.
Per alcuni dettagli e letture interessanti vedi
https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/
http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages
http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html