Anzahl der Prozessoren in / proc / cpuinfo

25

Während ich etwas über die CPU-Auslastung lernte, wurde mir klar, dass dies von der Anzahl der Kerne abhängt. Wenn ich 2 Kerne habe, ergibt Load 2 eine 100% ige CPU-Auslastung.

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 lief ich, cat /proc/cpuinfo 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?

Sobald meine CPU-Auslastung 3,70 betrug, ist dies die maximale Auslastung? Noch zu diesem Zeitpunkt lag die CPU bei <50%.

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

Gibt es eine Methode in Ubuntu, um die aktuelle CPU-Frequenz zu ermitteln, um festzustellen, ob der Prozessor auf Turbo-Boost geschaltet ist oder nicht?

Die Auslastung betrug bis 3,70 ca. 100%. Die CPU-Auslastung war jedoch aufgrund der IO-Antwortzeit nicht 100%. Dies bedeutet nicht, dass das E / A-Gerät die maximale Geschwindigkeit erreicht, das E / A-Gerät jedoch zu 100% ausgelastet ist. Dies wirkt sich unter Umständen auf Anwendungen aus, die E / A verwenden.

Madhurendra Sachan
quelle
2
Hyper-Threading ist, warum Sie 4 anstelle von 2 sehen.
Derobert
1
Sowohl in der Dokumentation als auch in cpuinfo wird angegeben, dass Sie zwei CPU-Kerne haben. Die Prozessoren 0 und 1 befinden sich auf Kern 0, während sich die Prozessoren 2 und 3 auf Kern 1 befinden (siehe Zeile core id). Das physical idgibt dir den Chip (nehme ich an). Hier ist es 0 für alle Prozessoren, so dass Sie nur einen Chip haben.
Lgeorget
Also, was ist Prozessorlast zu 100% ... 2 oder 4?
Madhurendra Sachan
Was ist Prozessor hier?
Madhurendra Sachan
Bitte beachten Sie, dass Intels Definition von Thread ("Ein Thread oder Thread der Ausführung, ist ein Softwarebegriff für die grundlegend geordnete Folge von Anweisungen, die von einem einzelnen CPU-Kern durchlaufen oder verarbeitet werden können") den Eindruck erwecken kann, dass es sich um zwei Kerne handelt und 4 Threads, wie in den Spezifikationen angegeben, laufen 2x4 = 8 Threads. Tatsächlich haben Sie insgesamt 4 Threads und 2 Kerne sehen aus wie 4. Die Definition der Intel® Hyper-Threading-Technologie ist klarer: Sie liefert " zwei Verarbeitungsthreads pro physischem Kern " und erklärt es besser, dass Ihr System 4 Prozessoren / Geschwister sieht 2 CPU-Kerne montiert einen Chip
XavierStuvw

Antworten:

34

Die Wörter "CPU", "Prozessor" und "Kern" werden auf etwas verwirrende Weise verwendet. Sie beziehen sich auf die Prozessorarchitektur. Ein Core ist die kleinste unabhängige Einheit, die einen Universalprozessor implementiert. Ein Prozessor ist eine Zusammenstellung von Kernen (bei einigen ARM-Systemen ist ein Prozessor eine Zusammenstellung von Clustern, die selbst Zusammenstellungen von Kernen sind). Ein Chip kann einen oder mehrere Prozessoren enthalten (x86-Chips enthalten in diesem Sinne einen einzelnen Prozessor ).

Hyperthreading bedeutet, dass einige Teile eines Kerns dupliziert werden. Ein Kern mit Hyperthreading wird manchmal als Zusammenstellung von zwei „virtuellen Kernen“ dargestellt. Dies bedeutet nicht, dass jeder Kern virtuell ist, sondern dass der Plural virtuell ist, da es sich nicht wirklich um separate Kerne handelt und sie manchmal warten müssen, während sich der andere Kern befindet Verwenden eines gemeinsam genutzten Teils.

In Bezug auf Software gibt es nur ein Konzept, das fast überall nützlich ist: den Begriff der parallelen Ausführungsthreads. In den meisten Softwarehandbüchern werden die Begriffe " CPU" und " Prozessor" für alle Hardwarekomponenten verwendet, die Programmcode ausführen. In Bezug auf die Hardware bedeutet dies einen Kern oder einen virtuellen Kern mit Hyperthreading.

Somit topwerden Ihnen 4 CPUs angezeigt, da Sie 4 Threads gleichzeitig ausführen können. /proc/cpuinfohat 4 Einträge, einen für jede CPU (in diesem Sinne). Die processorZahlen (die die Anzahl der Einträge in sind ) entsprechen diesen 4 Threads.cpuNUMBER/sys/devices/system/cpu

/proc/cpuinfo Dies ist eine der wenigen Stellen, an denen Sie Informationen darüber erhalten, welche Hardware diese Ausführungsthreads implementiert:

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

cpu0Dies bedeutet, dass einer von 4 Threads in der physischen Komponente (Prozessor) Nummer 0 ist und dass sich dieser in Core 0 unter 2 in diesem Prozessor befindet.

Gilles 'SO - hör auf böse zu sein'
quelle
Schöne Erklärung, dass Sie 3 Fragen hinterlassen haben Once my cpu load was 3.70, Is this maximum load? Still at that time cpu was at <50%., What about turbo boost ? Are all cores are turbo boosted or only physical ?&How to check frequency.
Madhurendra Sachan
@MADTerry Welches Programm hat gemeldet, dass die "CPU-Auslastung 3,70" betrug, in welchen Begriffen genau? Meinen Sie den Lastdurchschnitt? Was meinst du mit "CPU war bei <50%"? In Bezug auf Turbo Boost bin ich damit nicht vertraut, aber ich verstehe nicht, warum sie nicht alle geboostet würden. Alle Kerne sind physisch, sofern Sie nicht in einer virtuellen Maschine ausgeführt werden. Wie ich in meiner Antwort unter „virtuelle Kerne“ erläutere, sind es nicht die virtuellen Kerne, sondern deren Trennung.
Gilles 'SO- hör auf böse zu sein'
durchschnittliche Belastung. uptimeMit CPU meine ich CPU-Nutzung. Ich habe verstanden, warum. Aber wie überprüfe ich die Frequenz oder ob die CPU Turbo Boosted ist?
Madhurendra Sachan
Ich würde auch argumentieren, dass Sie in Bezug auf High-Level-Software eher an Prozessen interessiert sind (siehe top, uptime). Welche Hardwareeinheit sich mit Prozessen befasst, ist letztendlich eine Frage der Low-Level-Software (Kompilierung, Betriebssystem). Der cpuinfo-Bericht fasst die Tatsache zusammen, dass jeder physische Prozessor (einer von mehreren CPUs auf einem Chip) seine Rechenleistung durch technische Meisterleistungen wie Multithreading erweitern kann. Es wird "alles" als Prozessor betrachten, was sich jeweils um einen Prozess kümmern kann. Aus der
Sicht von cpuinfo
13

Beantworten Sie einfach Ihre erste Frage. In der Ausgabe von sehen cat /proc/cpuinfoSie folgende Informationen: -

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

Sie können die Anzahl von siblings is 4und sehen cpu cores is 2. cpu cores2 ist die Gesamtzahl der Kerne im Prozessor, die anhand der in der von Ihnen angegebenen Intel-URL angegebenen Spezifikation überprüft werden kann. Ähnlich siblingsist es mit der Anzahl der Threads, die von Intel HTT bereitgestellt wird.

In ähnlicher Weise können Sie für die physische ID, 0die angibt, dass es nur einen Prozessorchip gibt, und für die Kern-IDs sehen, 0 and 1dass sich 2 Kerne im Prozessor befinden.

Update: Antworten zu den anderen Fragen hinzufügen.

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

Nun, ich sage, alle aktiven Kerne sind turboaufgeladen. Hey Kumpel, du hättest dir die Beispiele unserer geliebten Wikipedia ansehen sollen . Auch mit Berechnungen erklärt.

Any method in ubuntu to get current cpu freq. if processor is on turbo boost or not.

Turbo Boost oder nicht können Sie die Frequenzdetails in der Ausgabe von lscpu. Und für eine verfeinerte Ausgabe:

lscpu | grep Hz
Anfänger
quelle
Kurze und schnelle Antwort, aber können Sie die verbleibenden 3 erklären?
Madhurendra Sachan
@MADTerry danke aber die anderen sind mir nicht klar, werden etwas recherchieren und meine Antwort bearbeiten. Mal sehen, ob jemand anderes vorbeikommt.
Anfänger
1
+1 für lscpuBefehl.
Arda
8

Sie können dies im Terminal versuchen:

sudo lscpu

Auf diese Weise erhalten Sie einen Überblick über die physischen Eigenschaften Ihrer CPU. Was den Turbo-Boost betrifft oder nicht, so ist dies eine reine Hardwaresteuerung als das Betriebssystem selbst. Sofern Intel keine speziellen Treiber für Linux besitzt, mit denen die Prozessorgeschwindigkeit eingestellt werden kann, gibt es keinen soliden Anhaltspunkt für die Überprüfung des Turbo-Boost-Status (es sei denn, es gibt einen Befehlscode für Überprüfen Sie in anderen Foren, ob Hinweise auf Ihre Frage vorliegen.

Das erhalte ich, wenn ich den obigen Befehl eingebe. Mein AMD hat angegeben, dass es sich um einen Quad-Core handelt, aber mein physischer Core, der hier aufgeführt ist, ist nur 2 mit 2 Threads pro Core (das sind bis zu 4 Cores). Ich verwende AMD A10 APU-Prozessor 5750m.

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    2
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             AuthenticAMD
CPU family:            21
Model:                 19
Stepping:              1
CPU MHz:               2500.000
BogoMIPS:              4990.51
Virtualization:        AMD-V
L1d cache:             16K
L1i cache:             64K
L2 cache:              2048K
NUMA node0 CPU(s):     0-3
user220402
quelle
0

Systemlast und CPU% sind zwei verschiedene Methoden, um zu messen, wie die CPU-Leistung verwendet wird.

  • Systemlast: Wie viele Prozesse pro CPU waren im "Bereit" -Zustand - gemittelt über einige Zeit. Bis zu 1 * CPU (in Ihrem Fall bis zu 4) gilt das System als nahezu inaktiv (vergleiche mit einem Supermarkt, in dem durchschnittlich nur ein Kunde an jeder Kasse wartet). Sie werden wahrscheinlich keine Verzögerung bis zu 2 * CPU (in Ihrem Fall 8) bemerken.
  • CPU%: Wie viel Zeit die CPU tatsächlich für die Ausführung eines Prozesses benötigt. Es ist wie aus der Sicht der Kassierer - oder besser gesagt ihres Vorgesetzten - sie möchten, dass sie die ganze Zeit beschäftigt sind.

Beide Maßnahmen sind miteinander verbunden, aber keineswegs identisch.

guntbert
quelle
Ich habe nicht anders gefragt. Ich habe es bereits in Artikeln gelesen. Wie auch immer, Ihre Antwort widerspricht Gilles Antwort.
Madhurendra Sachan
Wo siehst du einen Widerspruch?
guntbert