Liczba procesorów w / proc / cpuinfo


26

Kiedy uczyłem się o obciążeniu procesora, dowiedziałem się, że zależy to od liczby rdzeni. Jeśli mam 2 rdzenie, obciążenie 2 da 100% wykorzystania procesora.

Więc próbowałem znaleźć rdzenie. (Już wiem, że system ma 2 rdzenie, 4 wątki, więc 2 rdzenie wirtualne Sprawdź tutaj o procesorze ). Więc uruchomiłem cat /proc/cpuinfo Który dał mi

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:

Teraz jestem całkowicie zdezorientowany. Pokazuje 4 procesory z 2 rdzeniami procesora. Czy ktoś może wyjaśnić ten wynik?

Kiedy moje obciążenie procesora wyniosło 3,70, czy to maksymalne obciążenie? W tym czasie procesor wynosił <50%.

Co z doładowaniem turbo? Czy wszystkie rdzenie są wzmocnione turbo, czy tylko fizycznie?

Jakakolwiek metoda w Ubuntu, aby uzyskać bieżącą częstotliwość procesora, aby sprawdzić, czy procesor jest w trybie Turbo Boost, czy nie?

Obciążenie wynosiło 3,70 około 100%. Ale użycie procesora nie było w 100% ze względu na czas reakcji We / Wy. Nie oznacza to, że urządzenie IO będzie działać z maksymalną prędkością, ale urządzenie io będzie w 100% zajęte, co czasami wpływa na aplikacje korzystające z IO np .: muzyka może się zepsuć.



1
Zarówno dokumentacja, jak i cpuinfo informują, że masz dwa rdzenie procesora. Procesory 0 i 1 są na rdzeniu 0, podczas gdy procesory 2 i 3 są na rdzeniu 1 (spójrz na linię core id). To physical iddaje ci chip (tak myślę). Tutaj wynosi 0 dla wszystkich procesorów, więc masz tylko jeden układ.
lgeorget

Więc co to jest obciążenie procesora do 100% ... 2 lub 4?
Madhurendra Sachan

Co to jest tutaj procesor?
Madhurendra Sachan

Należy pamiętać, że definicja wątku Intela („Wątek lub wątek wykonania jest terminem programowym na podstawową uporządkowaną sekwencję instrukcji, które mogą być przekazywane lub przetwarzane przez pojedynczy rdzeń procesora ”), może sprawić wrażenie, że z 2 rdzeniami i 4 wątki, jak podano w specyfikacji, 2x4 = 8 wątków jest uruchomionych. W rzeczywistości masz 4 wątki, a 2 rdzenie wyglądają jak 4. Definicja technologii Intel® Hyper-Threading jest jaśniejsza: „dostarcza dwa wątki przetwarzania na rdzeń fizyczny ” i wyjaśnia, że ​​system lepiej widzi 4 procesory / rodzeństwo z 2 rdzeni procesora zamontowanych jeden układ
XavierStuvw

Odpowiedzi:


35

Słowa „CPU”, „procesor” i „rdzeń” są używane w nieco mylący sposób. Odnoszą się do architektury procesora. Rdzeń jest najmniejszą niezależną jednostką, która implementuje procesor ogólnego przeznaczenia; procesor to zbiór rdzeni (w niektórych systemach ARM procesor to zbiór klastrów, które same są zespołami rdzeni). Układ może zawierać jeden lub więcej procesorów (układy x86 zawierają pojedynczy procesor, w tym sensie edytora tekstu ).

Hyperthreading oznacza, że ​​niektóre części rdzenia są zduplikowane. Rdzeń z hiperwątkiem jest czasem przedstawiany jako zestaw dwóch „wirtualnych rdzeni” - co oznacza, że ​​nie każdy wirtualny jest wirtualny, ale że liczba mnoga jest wirtualna, ponieważ tak naprawdę nie są to osobne rdzenie i czasami będą musiały poczekać, aż drugi rdzeń będzie korzystanie z części wspólnej.

Jeśli chodzi o oprogramowanie, istnieje tylko jedna koncepcja, która jest przydatna prawie wszędzie: pojęcie równoległych wątków wykonania. W większości podręczników oprogramowania terminy CPU i procesor oznaczają dowolny element sprzętu, który wykonuje kod programu. Pod względem sprzętowym oznacza to jeden rdzeń lub jeden wirtualny rdzeń z hiperwątkiem.

W ten sposób toppokazuje 4 procesory, ponieważ można jednocześnie wykonywać 4 wątki. /proc/cpuinfoma 4 wpisy, po jednym dla każdego procesora (w tym sensie). Te processorliczby (które liczba wpisów w ) odpowiadają te 4 nici.cpuNUMBER/sys/devices/system/cpu

/proc/cpuinfo jest jednym z niewielu miejsc, w których można uzyskać informacje o tym, jaki sprzęt implementuje te wątki wykonania:

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

oznacza, że cpu0jest to jeden z 4 wątków w składniku fizycznym (procesorze) numer 0, i który znajduje się w rdzeniu 0 wśród 2 w tym procesorze.


Ładne wyjaśnienie, że pozostawiłeś 3 pytania 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 ?iHow to check frequency.
Madhurendra Sachan

@MADTerry Który program zgłosił, że „obciążenie procesora wynosiło 3,70”, pod jakimi dokładnie warunkami? Czy masz na myśli średnią obciążenie? Co rozumiesz przez „procesor miał <50%”? Jeśli chodzi o Turbo Boost, nie jestem tego zaznajomiony, ale nie rozumiem, dlaczego nie wszystkie zostałyby wzmocnione. Wszystkie rdzenie fizyczne, chyba że pracujesz na maszynie wirtualnej: jak wyjaśniam w mojej odpowiedzi, w „wirtualnych rdzeniach”, to nie rdzenie są wirtualne, to ich rozdzielenie.
Gilles „SO- przestań być zły”

średnie obciążenie. uptime.by procesorem miałem na myśli użycie procesora. rozumiałem dlaczego. Ale jak sprawdzić częstotliwość lub sprawdzić, czy procesor jest wzmocniony turbo?
Madhurendra Sachan

Chciałbym również twierdzą, że w zakresie oprogramowania na wysokim poziomie, to są raczej zainteresowany procesów (patrz top, uptime). To, która jednostka sprzętowa zajmuje się procesami, zależy ostatecznie od oprogramowania niskiego poziomu (kompilacja, system operacyjny). Raport cpuinfo uwydatnia fakt, że każdy procesor fizyczny (jeden z kilku procesorów na matrycy) może rozszerzyć swoje moce obliczeniowe dzięki wyczynom technicznym, takim jak wielowątkowość. Będzie traktował „wszystko”, co może zająć się jednym procesem naraz, jako procesor. W oczach cpuinfo możliwości urządzenia prowadzą do całkowitej liczby „procesorów”
XavierStuvw

13

Odpowiadając tylko na twoje pierwsze pytanie. W wyniku cat /proc/cpuinfomożna zobaczyć następujące informacje:

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

Możesz zobaczyć liczbę siblings is 4i cpu cores is 2. cpu coreswartość 2 oznacza całkowitą liczbę rdzeni w procesorze, którą można sprawdzić na podstawie specyfikacji podanej przez podany adres URL wywiadu. Podobnie siblingsjest określony przez liczbę wątków dostarczanych przez HTT firmy Intel.

Podobnie, dla identyfikatora fizycznego, 0który wskazuje, że jest tylko jeden układ procesora, a dla identyfikatorów rdzenia widać, 0 and 1że są to 2 rdzenie w procesorze.

Aktualizacja: dodawanie odpowiedzi na pozostałe pytania.

Co z doładowaniem turbo? Czy wszystkie rdzenie są wzmocnione turbo czy tylko fizycznie?

Cóż, powiem, wszystkie aktywne rdzenie mają turbodoładowanie. Hej kolego, powinieneś sprawdzić przykłady naszej ukochanej Wikipedii . Wyjaśnione również z obliczeniami.

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

Turbo Boost, czy nie możesz szczegóły freq na wyjściu lscpu. I dla wyrafinowanej wydajności: -

lscpu | grep Hz

Krótka i szybka odpowiedź, ale czy potrafisz wyjaśnić pozostałe 3?
Madhurendra Sachan

@MADTerry dzięki, ale inni, których nie jestem pewien, przeprowadzą badania i zredagują moją odpowiedź. Tymczasem pozwala sprawdzić, czy ktoś inny się pojawia.
początkujący

1
+1 za lscpupolecenie.
Arda,

8

Możesz spróbować w terminalu:

sudo lscpu

To da ci przegląd twojej fizycznej cechy procesora. Jeśli chodzi o turbo boost, czy nie, jest to czysto sprzętowa kontrola niż sam system operacyjny, więc jeśli Intel nie ma określonych sterowników dla Linuksa, które mogą dostroić szybkość procesora, nie ma solidnego dowodu, aby sprawdzić stan turbodoładowania (chyba że istnieje kod polecenia sprawdź inne fora, jeśli są jakieś wskazówki dotyczące twojego pytania).

Jeśli chodzi o mnie, to właśnie otrzymuję po wpisaniu powyższego polecenia. Mój AMD powiedział, że jest to czterordzeniowy, ale mój fizyczny rdzeń wymieniony tutaj to tylko 2, z 2 wątkami na rdzeń (daje 4 rdzenie). Używam procesora AMD A10 APU 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

0

Obciążenie systemu i% procesora to dwa różne sposoby pomiaru zużycia mocy procesora.

  • obciążenie systemu: ile procesów na jednostkę centralną było w stanie „gotowym” - uśrednianych przez pewien czas. Do 1 * procesora (w twoim przypadku do 4) system jest uważany za prawie bezczynny (porównaj z supermarketem, w którym średnio przy każdym kasie czeka tylko jeden klient). Prawdopodobnie nie zauważysz żadnego opóźnienia do 2 * procesora (w twoim przypadku 8).
  • % procesora: ile czasu procesor wykonuje rzeczywistą pracę, uruchamiając proces. To jest jak punkt widzenia kasjerów - a raczej ich przełożonego - chcą, żeby byli cały czas zajęci.

Oba środki są powiązane, ale w żaden sposób identyczne.


nie zapytałem innego. Przeczytałem to już w artykułach. W każdym razie twoja odpowiedź jest sprzeczna z odpowiedzią Gillesa.
Madhurendra Sachan

Gdzie widzisz sprzeczność?
guntbert
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.