Come può esistere una media di carico di 0,00?


12

Capisco che il bilanciamento del carico è un modo per misurare l'impegno della CPU. Tuttavia, non capisco come 0.00possa esistere una media di carico . Il kernel non funziona sempre? Non prende parte del carico della CPU?


6
Si noti che nella maggior parte dei casi ciò che si vede come 0,00 è in realtà 0,0001 o giù di

1
Ai vecchi tempi era la lunghezza media della coda di esecuzione. In altre parole, quanti processi erano pronti per l'esecuzione (e non in attesa di I / O ecc.). Se non ce n'è nessuno è 0.00. In questi giorni questo è nella mia esperienza possibile solo se non si esegue un desktop grafico ma solo un server senza GUI.
Thorbjørn Ravn Andersen,

Solo per completezza, penso che sia stato uno dei BSD che per un po 'ha avuto un bug del kernel in cui il thread inattivo del kernel è stato conteggiato nella media del carico, causando una media del carico di 1,00 quando il sistema non ha fatto nulla. Ciò è stato risolto abbastanza rapidamente.
un CVn

Risposte:


16

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.


1
La media del carico di 0,6 per 5 minuti potrebbe anche significare che non ha fatto nulla per 4 minuti e mezzo - e poi negli ultimi 30 secondi ci sono stati un numero significativo di processi in attesa del tempo della CPU ... Non è un'indicazione di quanto lavoro il La CPU ha funzionato, ma quanti processi sono stati in attesa di usarla.
UKMonkey,

@UKMonkey: perfettamente vero ... Le medie sono medie e la stessa media può essere ottenuta in molti modi. Modificata la risposta per spiegare che una media moderata non significa che anche i picchi siano ragionevoli.
AlexP

13

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.


Sono stato sorpreso di vedere che a volte i thread "in attesa su I / O" sono inclusi nella media del carico serverfault.com/a/524818/27813 sembra ...
rogerdpack

@rodgerpack Sì, Di processi di stato sono sempre inclusi nella media del carico in Linux. Sì, è confuso. Sì, dovremmo esaminare principalmente altre metriche oltre a caricare avg.
Kubanczyk,

2

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

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.