Non sicuramente, ma soprattutto 1.00*n_cpu
.
Il carico significa quanto segue: se ci sono più processi su un sistema a CPU singola, sembrano funzionare in parallelo. Ma non è vero. Cosa succede praticamente: il kernel dà 1/100 di secondo a un processo, quindi interrompe il suo funzionamento con un interrupt. E fornisce il prossimo 1/100 di secondo a un altro processo.
Praticamente la domanda "quale processo dovrebbe ottenere il nostro prossimo intervallo di 1/100 di secondo?", Sarà decisa da una complessa euristica. È chiamato come pianificazione delle attività .
Naturalmente, i processi che sono bloccati, ad esempio in attesa dei loro dati, ciò che stanno leggendo dal disco, sono esenti da questa pianificazione delle attività.
Cosa dice il carico: quanti processi stanno attualmente aspettando il loro prossimo 1/100 di secondo intervallo di tempo. Certo, è un valore medio. Questo perché puoi vedere più numeri in a cat /proc/loadavg
.
La situazione in un sistema multi-CPU è un po 'più complessa. Esistono più cpus, i cui intervalli di tempo possono essere assegnati a più processi. Ciò rende la pianificazione delle attività un po 'più complessa, ma non troppo. Ma la situazione è la stessa.
Il kernel è intelligente, cerca di condividere le risorse di sistema per l'efficienza ottimale, ed è vicino a ciò (ci sono cose minori di ottimizzazione, ad esempio è meglio se un processo verrà eseguito il più lungo tempo possibile sullo stesso cpu a causa di considerazioni sulla cache, ma non contano lì). Questo perché se abbiamo caricato 8, ciò significa che in realtà ci sono 8 processi in attesa del prossimo intervallo di tempo. Se abbiamo 8 cpus, possiamo dare questi intervalli di tempo al cpus uno a uno, e quindi il nostro sistema verrà utilizzato in modo ottimale.
Se vedi a top
, puoi vedere che il numero degli attuali processi in esecuzione è sorprendentemente basso: sono i processi contrassegnati da R
lì. Anche su un sistema non proprio hardcore è spesso inferiore a 5. Ciò è in parte dovuto al fatto che anche i processi in attesa dei loro dati dai dischi o dalla rete sono sospesi (contrassegnati con S
in alto). Il carico mostra solo l'utilizzo della cpu.
Ci sono strumenti per misurare anche il carico del disco, quindi dovrebbero essere almeno importanti come il monitoraggio dell'utilizzo della cpu, ma in qualche modo non è così noto qui nel nostro mondo dei sistemi di gestione professionale.
Gli strumenti di Windows spesso dividono il carico con il numero effettivo del cpus. Questo fa sì che alcuni amministratori di sistemi Windows professionisti utilizzino il caricamento del sistema in questo senso diviso per CPU. Non hanno ragione e probabilmente saranno più felici dopo aver spiegato loro questo.
Le CPU multicore sono praticamente più CPU sullo stesso chip di silicio. Non c'è differenza.
Nel caso di CPU hyperthreaded c'è un effetto collaterale interessante: il caricamento di una cpu rallenta le sue coppie hyperthreaded. Ma ciò accade a un livello più profondo di ciò che gestisce la normale pianificazione delle attività, sebbene possa (e dovrebbe) influenzare le decisioni di spostamento del processo dello scheduler.
Ma dal nostro punto di vista attuale - ciò che determina il carico del sistema - non importa.