Prima di immergerci nelle medie del carico di Linux, dobbiamo esplorare i diversi modi in cui viene calcolato il carico e affrontare la misurazione più comune del carico della CPU - una percentuale.
Windows calcola il carico in modo diverso da Linux e poiché Windows è stato storicamente più popolare sul desktop, la definizione di carico di Windows è generalmente compresa dalla maggior parte degli utenti di computer. La maggior parte degli utenti di Windows ha visto il caricamento del sistema nel Task Manager visualizzato come percentuale che va dallo 0% al 100%.
In Windows questo deriva esaminando come "occupato" il Processo inattivo del sistema è e usando l'inverso per rappresentare il carico del sistema. Ad esempio, se il thread inattivo sta eseguendo il 99% delle volte, il caricamento della CPU in Windows sarebbe dell'1%. Questo valore è facile da capire ma fornisce meno dettagli complessivi sul vero stato del sistema.
In Linux, la media del carico è invece rappresentata da un numero decimale a partire da 0.00. Il valore può essere approssimativamente definito come il numero di processi nell'ultimo minuto che ha dovuto attendere il loro turno per l'esecuzione. A differenza di Windows, la media del carico Linux non è una misurazione istantanea. Il carico è dato in tre valori: la media di un minuto, la media di cinque minuti e la media di quindici minuti.
Comprensione della media del carico in Linux
Inizialmente, questo ulteriore livello di dettaglio sembra inutile se si desidera semplicemente conoscere lo stato attuale del carico della CPU nel sistema. Ma poiché vengono fornite le medie di tre periodi di tempo, piuttosto che una misurazione istantanea, è possibile ottenere un'idea più completa del cambio di carico di sistema nel tempo in un singolo sguardo di tre numeri
La visualizzazione della media del carico è semplice. Nella riga di comando, è possibile utilizzare una varietà di comandi. Uso semplicemente il comando "W":
root@virgo [~]# w
21:08:43 su 38 giorni, 4:34, 4 utenti, media di carico: 3.11, 2.75, 2.70
Il resto del comando visualizzerà chi ha effettuato l'accesso e cosa stanno eseguendo, ma per i nostri scopi queste informazioni sono irrilevanti, quindi l'ho tagliata dal display sopra.
In un sistema ideale, nessun processo dovrebbe essere trattenuto da un altro processo (o thread), ma In un singolo sistema di processore, Ciò si verifica quando il carico supera 1.00.
Le parole "Sistema di processore singolo" sono incredibilmente importanti qui. A meno che tu non stia eseguendo un computer antico, la tua macchina ha probabilmente più core CPU. Nella macchina sono, ho 16 core:
root@virgo [~]# nproc
16
In questo caso, una media di carico di 3.11 non è affatto allarmante. Significa semplicemente che poco più di tre processi erano pronti per essere eseguiti e erano presenti core della CPU per gestire la loro esecuzione. Su questo particolare sistema, il carico dovrebbe raggiungere 16 per essere considerato al "100%".
Per tradurre questo in un carico di sistema basato su percentuale, è possibile utilizzare questo comando semplice, se non ottuso:
Cat /Proc /LoadAvg | Cut -c 1-4 | echo "scala = 2; ($ (Questa sequenza di comandi isola la media di 1 minuto tramite taglio e echos, divisa per il numero di core della CPU, tramite BC, un calcolatore della linea di comando, per derivare la percentuale.
Questo valore non è affatto scientifico ma fornisce un'approssimazione approssimativa del carico della CPU in percentuale.
Un minuto per imparare, una vita da padroneggiare
Nella sezione precedente ho messo l'esempio "100%" di un carico di 16.0 su un sistema centrale di 16 CPU tra virgolette perché il calcolo del carico in Linux è un po 'più nebuloso di Windows. L'amministratore di sistema deve tenere presente che:
- Il carico è espresso nei processi di attesa e nei thread
- Non è un valore istantaneo, piuttosto in media e
- La sua interpretazione deve includere il numero di core CPU e
- Può infiammare I/O aspetta come le letture del disco
Per questo motivo, ottenere una maniglia del carico della CPU su un sistema Linux non è del tutto una questione empirica. Anche se lo fosse, il carico della CPU da solo non è una misurazione adeguata dell'utilizzo complessivo delle risorse del sistema. In quanto tale, un amministratore di Linux esperto prenderà in considerazione il carico della CPU in concerto con altri valori come l'I/O Wait e la percentuale di kernel rispetto al tempo di sistema.
I/O Aspetta
I/O wait è più facilmente visto tramite il comando "top":
Nello screenshot sopra ho messo in evidenza il valore di attesa I/O. Questa è una percentuale di tempo in cui la CPU stava aspettando i comandi di input o output per completare. Questo di solito è indicativo di alta attività del disco. Mentre una sola percentuale di attesa elevata potrebbe non degradare significativamente le attività legate alla CPU, ridurrà le prestazioni I/O per altre attività e farà sentire il sistema lento.
Attendere I/O alti senza alcuna causa ovvia potrebbe indicare un problema con un disco. Utilizzare il comando "dmesg" per vedere se si sono verificati errori.
Kernel vs. Tempo di sistema
I valori evidenziati sopra rappresentano il tempo dell'utente e del kernel (sistema). Questa è una ripartizione del consumo complessivo del tempo della CPU da parte degli utenti (i.e. applicazioni, ecc.) e il kernel (i.e. Interazione con i dispositivi di sistema). Il tempo dell'utente più elevato indicherà un maggiore utilizzo della CPU da parte dei programmi in cui un tempo di kernel più elevato indicherà una maggiore elaborazione a livello di sistema.
Un carico abbastanza medio
L'apprendimento della relazione della media del carico e delle prestazioni del sistema effettivo richiede tempo, ma in poco tempo vedrai una correlazione distinta. Armato delle complessità delle metriche delle prestazioni del sistema, sarai in grado di prendere decisioni migliori sugli aggiornamenti hardware e sull'utilizzo delle risorse del programma.