GNU/Linux >> Linux Esercitazione >  >> Linux

Perché top mostra un numero diverso di core rispetto a cpuinfo?

L'X5560 è un singolo chip . Assomiglia a questo:

grep "physical id" ti sta dicendo che hai UN processore fisico installato.

Se togli il dissipatore di calore dalla parte superiore puoi vedere questo:un singolo dado fisico (a faccia in giù) :

Se potessi rimuovere quel dado e capovolgerlo, sembrerebbe così :

Su quel singolo die fisico ci sono quattro core CPU fisici costruito sul silicio :

grep "cpu cores" ti sta dicendo che il tuo processore ha quattro core fisici incorporati.

Ogni core è un singolo processore con un'unità a virgola mobile, un numero di unità di esecuzione intere, una coppia di stack di registri e qualche altra magia che consente a ciascun singolo core di eseguire efficacemente due flussi di istruzioni indipendenti (thread) alla volta.

top ti sta dicendo che tutti i processori e i core del tuo computer, collettivamente, possono eseguire otto flussi di lavoro indipendenti alla volta:ti sta dicendo che il sistema operativo è in grado di pianificare otto thread simultanei per l'esecuzione in un dato momento.


Che cpu stai usando? Quanti thread sono presenti per core fisico?

cat /proc/cpuinfo mostra il numero di core fisici mentre top mostra il numero totale di thread presenti.

Penso che la tua CPU abbia 4 core fisici e 2 core logici per core fisico. Quindi è top mostrando 8.

Inoltre i contenuti di /proc/cpuinfo è in qualche modo dipendente dall'implementazione. Come nella shell Android con root, il cpuinfo il file non contiene alcun termine cpu cores .

Tuttavia in cpuinfo ogni thread è chiamato processor : X , Dove X è il filo n. Quindi l'ultimo thread no deve essere uguale a top/htop uscita.

Risultato di nproc --all deve anche essere coerente con top/htop


top mostra una "CPU" per CPU logica; su x86, è il prodotto del numero di socket nel sistema, per il numero di core fisici per socket, per il numero di thread per core.

Il cpu cores voce in /proc/cpuinfo , sempre su x86, mostra il numero di core fisici. Per trovare il numero di core logici, come utilizzato in top , dovresti guardare siblings valore invece:

cat /proc/cpuinfo | grep "siblings" | uniq

Questo è descritto in dettaglio nella documentazione del kernel.

lscpu fornisce informazioni sulle CPU installate che sono più facili da capire rispetto a /proc/cpuinfo (o meglio, presenta le stesse informazioni in modo più semplice).


Linux
  1. Perché uniq conta le parole identiche come diverse?

  2. Perché YaST ora mostra le righe come lqqqqqqqqqqqqqqq?

  3. Perché yum updateinfo non mostra tutti gli aggiornamenti?

  4. Perché il comando free e dmidecode mostrano valori diversi per la RAM?

  5. Perché Linux usa una partizione di swap piuttosto che un file?

I 10 motivi principali per utilizzare Linux

Perché il misuratore Htop mostra>90% mentre la tabella è 0,0%?

Perché Ls -l genera una dimensione diversa da Ls -s?

Perché un Lun World Wide ID inizia con il numero 3 in Linux dm-multipath

Perché rand() ripete i numeri molto più spesso su Linux che su Mac?

Perché il mio sistema mostra solo 3,2 GiB di RAM quando ho sicuramente 4,0 GiB