GNU/Linux >> Znalost Linux >  >> Linux

Linux – počet procesorů v /proc/cpuinfo?

Když jsem se učil o zatížení procesoru, zjistil jsem, že to závisí na počtu jader. Pokud mám 2 jádra, pak zatížení 2 poskytne 100% využití procesoru.

Zkusil jsem tedy zjistit jádra. (Už vím, že systém má 2 jádra, 4 vlákna, takže 2 virtuální jádra Podívejte se sem na procesor). Tak jsem spustil cat /proc/cpuinfo
Což mi dalo

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:

Teď jsem úplně zmatený. Ukazuje 4 procesory se 2 jádry CPU.
Může někdo vysvětlit tento výstup?

Související:Linux – netfilter/iptables:proč nepoužít nezpracovanou tabulku?

Jakmile bylo zatížení mého procesoru 3,70, je toto maximální zatížení? Ještě v té době byl CPU na <50 %.

A co turbo boost? Jsou všechna jádra turbo booster nebo pouze fyzická?

Nějaká metoda v Ubuntu, jak získat aktuální frekvenci procesoru, abyste zjistili, zda je procesor na turbo boost nebo ne?

Zatížení bylo na 3,70 asi 100 %. Ale využití CPU nebylo 100% kvůli době odezvy IO. To neznamená, že IO zařízení bude mít maximální rychlost, ale IO zařízení bude 100% zaneprázdněné, což někdy ovlivní aplikace využívající IO, např.:hudba se může přerušit.

Přijatá odpověď:

Slova „CPU“, „procesor“ a „jádro“ se používají poněkud matoucím způsobem. Odkazují na architekturu procesoru. Jádro je nejmenší nezávislá jednotka, která implementuje univerzální procesor; procesor je sestava jader (na některých systémech ARM je procesor sestava klastrů, které samy jsou sestavami jader). Čip může obsahovat jeden nebo více procesorů (čipy x86 obsahují jeden procesor, v tomto smyslu slova procesor ).

Hyperthreading znamená, že některé části jádra jsou duplikovány. Jádro s hyperthreadingem je někdy prezentováno jako sestavení dvou „virtuálních jader“ – což neznamená, že každé jádro je virtuální, ale že množné číslo je virtuální, protože se ve skutečnosti nejedná o samostatná jádra a někdy budou muset počkat, dokud nebude druhé jádro pomocí sdílené části.

Pokud jde o software, existuje pouze jeden koncept, který je užitečný téměř všude:pojem paralelních vláken provádění. Takže ve většině softwarových příruček jsou termíny CPU a procesor se používají k označení jakéhokoli jednoho hardwaru, který provádí programový kód. Z hlediska hardwaru to znamená jedno jádro nebo jedno virtuální jádro s hyperthreadingem.

Tedy top zobrazí 4 CPU, protože můžete mít 4 vlákna spuštěná současně. /proc/cpuinfo má 4 položky, jednu pro každý CPU (v tomto smyslu). processor čísla (což jsou čísla cpuNUMBER záznamy v /sys/devices/system/cpu ) odpovídají těmto 4 vláknům.

/proc/cpuinfo je jedním z mála míst, kde získáte informace o tom, jaký hardware implementuje tato vlákna provádění:

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

znamená, že cpu0 je jedním ze 4 vláken uvnitř fyzické komponenty (procesoru) číslo 0, a to je v jádru 0 mezi 2 v tomto procesoru.


Linux
  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Linux – propojení /proc/mnt s /proc/mounts?

  3. /proc/[pid]/pagemaps a /proc/[pid]/maps | linux

  1. Jak získat počet CPU/jádr v Linuxu z příkazového řádku?

  2. Kdy mám použít /dev/shm/ a kdy /tmp/?

  3. Jak zkontrolovat, zda je AES-NI podporován mým CPU?

  1. Prozkoumání souborového systému Linux /proc

  2. Linux – Co znamenají příznaky v /proc/cpuinfo?

  3. Počet procesorů v /proc/cpuinfo