Количество процессоров в / proc / cpuinfo

26

Когда я изучал загрузку процессора, я понял, что это зависит от количества ядер. Если у меня 2 ядра, то загрузка 2 даст 100% загрузку процессора.

Таким образом , я попытался выяснить , сердечники. (Я уже знаю , что система имеет 2 ядра, 4 потока , так 2 виртуальных ядра Проверьте здесь о процессоре ) .so я побежал cat /proc/cpuinfo Который дал мне

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:

Теперь я в полном замешательстве. Это показывает 4 процессора, с 2 ядрами процессора. Кто-нибудь может объяснить этот вывод?

Когда загрузка процессора составила 3,70, это максимальная загрузка? Все еще в то время процессор был на уровне <50%.

А как насчет турбо-наддува? Все ядра с турбонаддувом или только физические?

Любой метод в Ubuntu, чтобы получить текущую частоту процессора, чтобы увидеть, если процессор на Turbo Boost или нет?

Нагрузка была до 3.70 около 100%. Но загрузка процессора не была 100% из-за времени отклика ввода-вывода. Это не означает, что устройство ввода-вывода будет работать на максимальной скорости, но устройство ввода-вывода будет загружено на 100%, что иногда влияет на приложения, использующие ввод-вывод: музыка может сломаться.

Мадхурендра Сашан
источник
2
Гиперпоточность - вот почему вы видите 4 вместо 2.
Дероберт
1
Как документация, так и cpuinfo сообщают, что у вас есть два ядра процессора. Процессоры 0 и 1 находятся на ядре 0, тогда как процессоры 2 и 3 - на ядре 1 (посмотрите на строку core id). Это physical idдает вам фишку (я думаю). Здесь это 0 для всех процессоров, поэтому у вас есть только один чип.
lgeorget
ТАК что загрузка процессора до 100% ... 2 или 4?
Мадхурендра Сачан
Что здесь процессор?
Мадхурендра Сачан
Обратите внимание, что определение потока Intel («Поток или поток выполнения - это программный термин для базовой упорядоченной последовательности инструкций, которые могут передаваться или обрабатываться одним ядром ЦП »), может показаться, что с 2 ядрами и 4 потока, как указано в спецификации, работают 2x4 = 8 потоков. На самом деле у вас всего 4 потока, а 2 ядра выглядят как 4. Определение технологии Intel® Hyper-Threading более четкое: она «обеспечивает два потока обработки на физическое ядро » и лучше объясняет, что ваша система видит 4 процессора / сиблинга. из двух процессорных ядер смонтирован один чип
XavierStuvw

Ответы:

35

Слова «процессор», «процессор» и «ядро» используются в некотором замешательстве. Они относятся к архитектуре процессора. Ядро - это наименьшая независимая единица, которая реализует процессор общего назначения; процессор представляет собой совокупность ядер (в некоторых системах ARM процессор представляет собой совокупность кластеров, которые сами являются совокупностями ядер). Микросхема может содержать один или несколько процессоров (микросхемы x86 содержат один процессор, в этом смысле текстового процессора ).

Гиперпоточность означает, что некоторые части ядра дублируются. Ядро с гиперпоточностью иногда представляется как совокупность двух «виртуальных ядер», что означает не то, что каждое ядро ​​является виртуальным, а то, что множественное число является виртуальным, потому что на самом деле это не отдельные ядра, и им иногда придется ждать, пока другое ядро используя общую часть.

Что касается программного обеспечения, есть только одна концепция, которая полезна почти везде: понятие параллельных потоков исполнения. Таким образом, в большинстве руководств по программному обеспечению термины « процессор» и « процессор» используются для обозначения любого отдельного устройства, которое выполняет программный код. В аппаратном плане это означает одно ядро ​​или одно виртуальное ядро ​​с гиперпоточностью.

Таким образом, topпоказывает 4 процессора, потому что вы можете одновременно выполнять 4 потока. /proc/cpuinfoимеет 4 записи, по одной для каждого процессора (в этом смысле). Эти processorцифры (которые число записей в ) соответствуют этим 4 потоков.cpuNUMBER/sys/devices/system/cpu

/proc/cpuinfo это одно из немногих мест, где вы получаете информацию о том, какое оборудование реализует эти потоки выполнения:

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

означает, что cpu0это один из 4 потоков внутри физического компонента (процессора) с номером 0, и это в ядре 0 среди 2 в этом процессоре.

Жиль "ТАК - перестань быть злым"
источник
Хорошее объяснение, вы оставили 3 вопроса 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.
Мадхурендра Сачан
@MADTerry Какая программа сообщила, что «загрузка процессора составила 3,70», в каких именно точках? Вы имеете в виду среднюю нагрузку? Что вы подразумеваете под «процессор был на уровне <50%»? Что касается Turbo Boost, я не знаком с этим, но я не понимаю, почему они не будут усилены. Все ядра являются физическими, если вы не работаете на виртуальной машине: как я объясняю в своем ответе, в «виртуальных ядрах» виртуальные ядра - это не ядра, а их разделение.
Жиль "ТАК - перестань быть злым"
средняя нагрузка. uptimeЯ имел в виду использование процессора. Я понял почему. Но как проверить частоту или проверить, ускоряется ли процессор?
Мадхурендра Сачан
Я также утверждаю, что с точки зрения программного обеспечения высокого уровня, вы скорее интересуетесь процессами (см. top, uptime). Какая аппаратная единица имеет дело с процессами, в конечном итоге зависит от программного обеспечения низкого уровня (компиляция, операционная система). В отчете cpuinfo описывается тот факт, что каждый физический процессор (один из нескольких процессоров на кристалле) может расширять свои вычислительные мощности с помощью технических достижений, таких как многопоточность. Он будет рассматривать «все», что может заботиться об одном процессе за раз, как процессор. С точки зрения бухгалтерии cpuinfo, возможности устройства ведут к общему количеству «процессоров»
XavierStuvw
13

Просто отвечаю на ваш первый вопрос. В выводе cat /proc/cpuinfoвы можете увидеть следующую информацию: -

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

Вы можете увидеть количество siblings is 4и cpu cores is 2. cpu coresзначение 2 - это общее количество ядер в процессоре, которое можно проверить по спецификации, указанной в URL-адресе Intel, который вы дали. Аналогичным образом siblingsопределяется число потоков, предоставляемых Intel HTT.

Точно так же для физического идентификатора, 0который указывает, что имеется только один чип процессора, а для идентификаторов ядер вы можете видеть, 0 and 1что в процессоре 2 ядра.

Обновление: добавление ответов на другие вопросы.

А как насчет турбо-наддува? Все ядра с турбонаддувом или только физические?

Ну, я скажу, все активные ядра с турбонаддувом. Эй, приятель, ты должен был проверить примеры в нашей любимой Википедии . Объяснил с расчетами тоже.

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

Turbo Boost или нет, вы можете узнать подробности в выходных данных lscpu. И для уточненного вывода: -

lscpu | grep Hz
beginer
источник
Краткий и быстрый ответ, но можете ли вы объяснить оставшиеся 3?
Мадхурендра Сачан
@MADTerry спасибо, но другие мне не ясны, сделают некоторое исследование и отредактируют мой ответ. А пока посмотрим, появится ли кто-то еще.
начинающий
1
+1 за lscpuкоманду.
Арда
8

Вы можете попробовать это в терминале:

sudo lscpu

Это даст вам обзор ваших физических качеств процессора. Что касается Turbo Boost или нет, то это чисто аппаратное управление, а не сама ОС, поэтому, если у Intel нет специальных драйверов для Linux, которые могут настраивать скорость вашего процессора, нет надежного способа проверить состояние Turbo Boost (если нет кода команды для это. Проверьте другие форумы, если есть какие-либо подсказки относительно вашего вопроса).

Что касается меня, это то, что я получаю, когда набираю вышеуказанную команду. Мой AMD сказал, что это четырехъядерный процессор, но мое физическое ядро ​​здесь указано только 2, с 2 потоками на ядро ​​(до 4 ядер). Я использую процессор 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
user220402
источник
0

Системная нагрузка и% процессора - это два разных способа измерения мощности вашего процессора.

  • загрузка системы: сколько процессов на процессор было в состоянии «готово» - усреднено за некоторое время. До 1 * ЦП (в вашем случае до 4) система считается почти бездействующей (сравните с супермаркетом, где в среднем только один клиент ожидает при каждой проверке). Вы, вероятно, не заметите никакого лага до 2 * процессоров (в вашем случае 8).
  • % процессора: сколько времени процессор выполняет фактическую работу, выполняя процесс. Это похоже на точку зрения кассиров - или, скорее, на их руководителя - они хотят, чтобы они были заняты все время.

Обе меры связаны, но ни в коем случае не идентичны.

guntbert
источник
я не спрашивал другого. Я уже читал это в статьях. В любом случае, ваш ответ противоречит ответу Жиля.
Мадхурендра Сачан
Где вы видите противоречие?
Гюнтберт,