GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:numero di processori in /proc/cpuinfo?

Mentre stavo imparando a conoscere il carico della CPU, sono venuto a sapere che dipende dal numero di core. Se ho 2 core, il caricamento 2 darà il 100% di utilizzo della CPU.

Quindi ho provato a scoprire i core. (So già che il sistema ha 2 core, 4 thread quindi 2 core virtuali Controlla qui sul processore). Quindi ho eseguito cat /proc/cpuinfo
Che mi ha dato

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 69
model name  : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping    : 1
microcode   : 0x17
cpu MHz     : 774.000
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips    : 3591.40
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 69
model name  : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping    : 1
microcode   : 0x17
cpu MHz     : 1600.000
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2
apicid      : 1
initial apicid  : 1
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips    : 3591.40
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 2
vendor_id   : GenuineIntel
cpu family  : 6
model       : 69
model name  : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping    : 1
microcode   : 0x17
cpu MHz     : 800.000
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 1
cpu cores   : 2
apicid      : 2
initial apicid  : 2
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips    : 3591.40
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 3
vendor_id   : GenuineIntel
cpu family  : 6
model       : 69
model name  : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping    : 1
microcode   : 0x17
cpu MHz     : 774.000
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 1
cpu cores   : 2
apicid      : 3
initial apicid  : 3
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips    : 3591.40
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

Ora sono totalmente confuso. Mostra 4 processori, con 2 core di CPU.
Qualcuno può spiegare questo output?

Correlati:Linux – netfilter/iptables:perché non usare la tabella grezza?

Una volta che il mio carico della CPU era 3.70, è questo carico massimo? Ancora a quel tempo la CPU era al <50%.

E il turbo boost? Tutti i core sono potenziati con il turbo o solo fisici?

Qualche metodo in Ubuntu per ottenere la frequenza corrente della CPU per vedere se il processore è in turbo boost o no?

Il carico era a 3,70 circa il 100%. Ma l'utilizzo della CPU non era del 100% a causa del tempo di risposta IO. Ciò non significa che il dispositivo IO sarà alla massima velocità, ma il dispositivo io sarà occupato al 100%, il che a volte influisce sulle applicazioni che utilizzano IO, ad esempio:la musica potrebbe interrompersi.

Risposta accettata:

Le parole "CPU", "processore" e "core" sono usate in modi alquanto confusi. Si riferiscono all'architettura del processore. Un core è la più piccola unità indipendente che implementa un processore generico; un processore è un insieme di core (su alcuni sistemi ARM, un processore è un insieme di cluster che a loro volta sono assemblaggi di core). Un chip può contenere uno o più processori (i chip x86 contengono un solo processore, in questo senso della parola processore ).

Hyperthreading significa che alcune parti di un core sono duplicate. Un core con hyperthreading è talvolta presentato come un assemblaggio di due "core virtuali" - il che significa non che ogni core è virtuale, ma che il plurale è virtuale perché questi non sono in realtà nuclei separati e a volte dovranno aspettare mentre l'altro core è facendo uso di una parte condivisa.

Per quanto riguarda il software, c'è un solo concetto che è utile quasi ovunque:la nozione di thread paralleli di esecuzione. Quindi nella maggior parte dei manuali software, i termini CPU e responsabile del trattamento sono usati per indicare qualsiasi pezzo di hardware che esegue il codice del programma. In termini hardware, questo significa un core o un core virtuale con hyperthreading.

Quindi top ti mostra 4 CPU, perché puoi avere 4 thread in esecuzione contemporaneamente. /proc/cpuinfo ha 4 voci, una per ogni CPU (in questo senso). Il processor numeri (che sono il numero della cpuNUMBER voci in /sys/devices/system/cpu ) corrispondono a questi 4 thread.

/proc/cpuinfo è uno dei pochi posti in cui ottieni informazioni su quale hardware implementa questi thread di esecuzione:

physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2

significa che cpu0 è uno dei 4 thread all'interno del componente fisico (processore) numero 0, e questo è nel core 0 tra 2 in questo processore.


Linux
  1. Esplorazione del filesystem Linux /proc

  2. Come ottengo il percorso di un processo in Unix/Linux

  3. linux /proc/loadavg

  4. Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

  5. Come verificare che AES-NI sia supportato dalla mia CPU?

Linux – Collegamento di /proc/mnt a /proc/mounts?

Linux:come verificare se un dispositivo a blocchi è di sola lettura da /sys o /proc?

Una guida al file system '/proc' in Linux

/proc/cpuinfo e /proc/meminfo in Linux

Spiegazione del file /proc/cpuinfo

Comprendere i file /proc/mounts, /etc/mtab e /proc/partitions