GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Anzahl der Prozessoren in /proc/cpuinfo?

Während ich mich mit der CPU-Last befasste, wurde mir klar, dass sie von der Anzahl der Kerne abhängt. Wenn ich 2 Kerne habe, ergibt Last 2 eine CPU-Auslastung von 100 %.

Also habe ich versucht, Kerne herauszufinden. (Ich weiß bereits, dass das System 2 Kerne, 4 Threads, also 2 virtuelle Kerne hat. Überprüfen Sie hier den Prozessor). Also habe ich cat /proc/cpuinfo ausgeführt
Was mir gegeben hat

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:

Jetzt bin ich total verwirrt. Es zeigt 4 Prozessoren mit 2 CPU-Kernen.
Kann jemand diese Ausgabe erklären?

Verwandte:Linux – netfilter/iptables:Warum nicht die Rohtabelle verwenden?

Sobald meine CPU-Last 3,70 war, ist das die maximale Last? Damals war die CPU noch bei <50%.

Was ist mit dem Turbo-Boost? Sind alle Kerne turbogeboostet oder nur physisch?

Irgendeine Methode in Ubuntu, um die aktuelle CPU-Frequenz abzurufen, um zu sehen, ob der Prozessor auf Turbo-Boost ist oder nicht?

Belastung war bis 3,70 etwa 100%. Aber die CPU-Auslastung war wegen der IO-Antwortzeit nicht 100 %. Dies bedeutet nicht, dass das IO-Gerät mit maximaler Geschwindigkeit arbeitet, aber das IO-Gerät ist zu 100 % ausgelastet, was manchmal Anwendungen betrifft, die IO verwenden, z. B.:Musik kann unterbrochen werden.

Akzeptierte Antwort:

Die Wörter „CPU“, „Prozessor“ und „Kern“ werden etwas verwirrend verwendet. Sie beziehen sich auf die Prozessorarchitektur. Ein Kern ist die kleinste unabhängige Einheit, die einen Allzweckprozessor implementiert; Ein Prozessor ist eine Ansammlung von Kernen (auf einigen ARM-Systemen ist ein Prozessor eine Ansammlung von Clustern, die selbst Ansammlungen von Kernen sind). Ein Chip kann einen oder mehrere Prozessoren enthalten (x86-Chips enthalten einen einzelnen Prozessor, in diesem Sinne des Wortes Prozessor ).

Hyperthreading bedeutet, dass einige Teile eines Kerns dupliziert werden. Ein Kern mit Hyperthreading wird manchmal als eine Ansammlung von zwei „virtuellen Kernen“ dargestellt – was nicht bedeutet, dass jeder Kern virtuell ist, sondern dass der Plural virtuell ist, da es sich nicht um separate Kerne handelt und sie manchmal warten müssen, während der andere Kern es ist Verwendung eines gemeinsamen Teils.

Was Software betrifft, gibt es nur ein Konzept, das fast überall nützlich ist:die Vorstellung von parallelen Ausführungs-Threads. Daher werden in den meisten Softwarehandbüchern die Begriffe CPU verwendet und Prozessor werden verwendet, um jedes einzelne Stück Hardware zu bezeichnen, das Programmcode ausführt. In Bezug auf die Hardware bedeutet dies einen Kern oder einen virtuellen Kern mit Hyperthreading.

Also top zeigt Ihnen 4 CPUs, da Sie 4 Threads gleichzeitig ausführen können. /proc/cpuinfo hat 4 Einträge, einen für jede CPU (in diesem Sinne). Der processor Nummern (das sind die Nummern der cpuNUMBER Einträge in /sys/devices/system/cpu ) entsprechen diesen 4 Threads.

/proc/cpuinfo ist einer der wenigen Orte, an denen Sie Informationen darüber erhalten, welche Hardware diese Ausführungs-Threads implementiert:

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

bedeutet, dass cpu0 ist einer von 4 Threads innerhalb der physischen Komponente (Prozessor) Nummer 0, und das ist in Kern 0 von 2 in diesem Prozessor.


Linux
  1. Untersuchen des Linux /proc-Dateisystems

  2. Linux – Was bedeuten die Flags in /proc/cpuinfo?

  3. Linux – /proc/mnt mit /proc/mounts verknüpfen?

  4. /proc/[pid]/pagemaps und /proc/[pid]/maps | Linux

  5. Wie erhalte ich die Anzahl der CPUs/Kerne in Linux über die Befehlszeile?

Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

Linux – /proc/pid/fd/x Linknummer?

Eine Anleitung zum Dateisystem „/proc“ unter Linux

/proc/cpuinfo- und /proc/meminfo-Dateien unter Linux

Die Dateien /proc/mounts, /etc/mtab und /proc/partitions verstehen

Anzahl der Prozessoren in /proc/cpuinfo