3

В конце этого поста находится мой /proc /cpuinfo.

Я знаю, что физический номер процессора равен 2

grep 'physical id' /proc/cpuinfo|sort|uniq|wc -l
2 

Но сколько ядер у каждого процессора?

«Ядра процессора» показывают, что у него 16 ядер.

Но используйте эту команду, она показывает, что всего 8 ядер.

grep 'core id' /proc/cpuinfo    
core id         : 16
core id         : 0
core id         : 17
core id         : 1
core id         : 25
core id         : 9
core id         : 26
core id         : 10

Отображает количество одноуровневых процессоров на одном физическом процессоре для архитектур, использующих гиперпоточность. Это 16 на моей машине. Но есть 4 для физического 0 процессор и 4 для физического 1 процессор. Я действительно запутался.

Кто-нибудь может мне помочь?

Ниже мой /proc /cpuinfo

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 12
model name  : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping    : 2
cpu MHz     : 2400.191
cache size  : 256 KB
physical id : 1
siblings    : 16
core id     : 16
cpu cores   : 16
fpu     : yes
fpu_exception   : yes
cpuid level : 11
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 syscall nx lm pni monitor ds_cpl est tm2 cx16 xtpr
bogomips    : 4803.77
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 12
model name  : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping    : 2
cpu MHz     : 2400.191
cache size  : 256 KB
physical id : 0
siblings    : 16
core id     : 0
cpu cores   : 16
fpu     : yes
fpu_exception   : yes
cpuid level : 11
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 syscall nx lm pni monitor ds_cpl est tm2 cx16 xtpr
bogomips    : 4800.22
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor   : 2
vendor_id   : GenuineIntel
cpu family  : 6
model       : 12
model name  : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping    : 2
cpu MHz     : 2400.191
cache size  : 256 KB
physical id : 1
siblings    : 16
core id     : 17
cpu cores   : 16
fpu     : yes
fpu_exception   : yes
cpuid level : 11
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 syscall nx lm pni monitor ds_cpl est tm2 cx16 xtpr
bogomips    : 4800.13
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor   : 3
vendor_id   : GenuineIntel
cpu family  : 6
model       : 12
model name  : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping    : 2
cpu MHz     : 2400.191
cache size  : 256 KB
physical id : 0
siblings    : 16
core id     : 1
cpu cores   : 16
fpu     : yes
fpu_exception   : yes
cpuid level : 11
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 syscall nx lm pni monitor ds_cpl est tm2 cx16 xtpr
bogomips    : 4800.21
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor   : 4
vendor_id   : GenuineIntel
cpu family  : 6
model       : 12
model name  : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping    : 2
cpu MHz     : 2400.191
cache size  : 256 KB
physical id : 1
siblings    : 16
core id     : 25
cpu cores   : 16
fpu     : yes
fpu_exception   : yes
cpuid level : 11
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 syscall nx lm pni monitor ds_cpl est tm2 cx16 xtpr
bogomips    : 4800.14
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor   : 5
vendor_id   : GenuineIntel
cpu family  : 6
model       : 12
model name  : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping    : 2
cpu MHz     : 2400.191
cache size  : 256 KB
physical id : 0
siblings    : 16
core id     : 9
cpu cores   : 16
fpu     : yes
fpu_exception   : yes
cpuid level : 11
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 syscall nx lm pni monitor ds_cpl est tm2 cx16 xtpr
bogomips    : 4800.19
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor   : 6
vendor_id   : GenuineIntel
cpu family  : 6
model       : 12
model name  : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping    : 2
cpu MHz     : 2400.191
cache size  : 256 KB
physical id : 1
siblings    : 16
core id     : 26
cpu cores   : 16
fpu     : yes
fpu_exception   : yes
cpuid level : 11
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 syscall nx lm pni monitor ds_cpl est tm2 cx16 xtpr
bogomips    : 4800.13
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor   : 7
vendor_id   : GenuineIntel
cpu family  : 6
model       : 12
model name  : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping    : 2
cpu MHz     : 2400.191
cache size  : 256 KB
physical id : 0
siblings    : 16
core id     : 10
cpu cores   : 16
fpu     : yes
fpu_exception   : yes
cpuid level : 11
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 syscall nx lm pni monitor ds_cpl est tm2 cx16 xtpr
bogomips    : 4800.20
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

6 ответов6

8

Согласно спецификациям Intel для процессора, это четырехъядерный процессор (4 отдельных ядра), каждое из которых поддерживает технологию Hyper-Threading, что делает его похожим на окто-ядро.

Учитывая, что это Xeon, у вас вполне может быть двухслойная материнская плата, а это значит, что есть 2 отдельных чипа, каждый из которых имеет 4 ядра, каждый из которых может работать с двумя потоками, так эффективно представленный ОС как 16-ядерный машина.

3

Вот функция, которую я использую для проверки информации о процессоре.

function CORES(){

  local -i SOCKETS=$(grep -w "physical id" /proc/cpuinfo | sort -u | wc -l)
  [ "${SOCKETS}" -eq 0 ] && SOCKETS="1"
  local -i CORES=$(grep -w "core id" /proc/cpuinfo | sort -u | wc -l)
  [ "${CORES}" -eq 0 ] && CORES="1"
  local -r MODEL=$(grep -w "model name" /proc/cpuinfo | sort -u | awk -F:     '{print $2}')
  local -ir THREADS=$(grep -w "processor" /proc/cpuinfo | sort -u | wc -l)
  local -ir TOTAL_CORES=$(echo $((${SOCKETS}*${CORES})))
  local -ir THREADS_PER_CORE=$(echo $((${THREADS}/${TOTAL_CORES})))

  echo -e "ModelName\t: " $MODEL
  echo -e "Sockets\t\t: " $SOCKETS
  echo -e "Cores/Socket\t: " $CORES
  echo -e "Threads/Core\t: " $THREADS_PER_CORE
  echo -e "TotalCores\t: " $TOTAL_CORES
  echo -e "TotalThreads\t: " $THREADS

}

Существует три основных компонента:

  1. Количество физических процессоров ('physical id')
  2. Общее количество ядер на физический процессор ('core id')
  3. Общее количество потоков на ядро на физический процессор ('processor')

« 'model name' только для информационных целей ...

Единственная ошибка в этом случае, если 'physical id' не существует в /proc /cpuinfo, тогда он выдает эту ошибку (которую я до сих пор не нашел, чтобы исправить ...):

$ CORES
-bash: 2/0: division by 0 (error token is "0")
ModelName       :  Intel(R) Xeon(R) CPU X5560 @ 2.80GHz
Sockets         :  0
Cores/Socket    :  0
Threads/Core    :  0
TotalCores      :  0
TotalThreads    :  2

редактировать: исправлено.

Надеюсь, это поможет!

РЕДАКТИРОВАТЬ: Вот пример того, кто имеет 'physical id' настоящее:

ModelName       :  Intel(R) Xeon(R) CPU X3470 @ 2.93GHz
Sockets         :  2
Cores/Socket    :  1
Threads/Core    :  1
TotalCores      :  2
TotalThreads    :  2

И другой

ModelName       :  Intel(R) Xeon(R) CPU E5520 @ 2.27GHz
Sockets         :  2
Cores/Socket    :  2
Threads/Core    :  1
TotalCores      :  4
TotalThreads    :  4

РЕДАКТИРОВАТЬ 2: большой!

ModelName       :  Intel(R) Xeon(R) CPU X5650 @ 2.67GHz
Sockets         :  2
Cores/Socket    :  6
Threads/Core    :  2
TotalCores      :  12
TotalThreads    :  24

РЕДАКТИРОВАТЬ: результаты OP /proc /cpuinfo

$ CORES
ModelName       :  Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
Sockets         :  2
Cores/Socket    :  8
Threads/Core    :  0
TotalCores      :  16
TotalThreads    :  8

Это означает, что у вас где-то отключена Hyper Threading (скорее всего, в BIOS), поэтому у вас 0 потоков на ядро. В этом случае TotalThreads = Cores/Socket. Это означает, что у вас есть 8 ядер на сокет, которые не являются Hyper Threaded.

2

Мне кажется, что /proc/cpuinfo показывает только часть вашей реальной физической конфигурации процессора.

Некоторые поля могут указывать, что ваша система имеет 2 сокета ЦП, каждое из которых имеет 16 физических ядер:

  • physical id изменяется от 0 до 1, поэтому будет 2 сокета процессора
  • siblings заявляют, что у вас есть 16 логических ядер на процессорный сокет
  • cpu cores также 16, что я интерпретирую как количество физических ядер для процессора, указанное в physical id . Что касается этого момента, я бы сказал, что процессор не поддерживает HyperThreading, но ...

Согласно спецификации чипа Intel E5620, каждый чип имеет 4 физических ядра, каждое из которых имеет 2 логических ядра благодаря HyperThreading.

Это приводит меня к выводу, что с точки зрения вашей операционной системы вы имеете только частичный доступ к ресурсам ЦП. Я бы предположил, что вы работаете из виртуальной среды.

Давайте посмотрим ниже мою /proc/cpuinfo на виртуальной машине, размещенной на двухпроцессорном сервере на базе Intel E5430 (2 сокета процессора, 4 физических ядра, без гиперпоточности). Операционная система видит только ядро № 0 от ЦПУ № 0 и ядро № 0 от ЦПУ № 1.

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 23
model name  : Intel(R) Xeon(R) CPU           E5430  @ 2.66GHz
stepping    : 10
cpu MHz     : 2659.998
cache size  : 6144 KB
physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 4
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 mtrr pge mca cmov pat pse36 clflush dts     acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority
bogomips    : 5319.99
clflush size    : 64
cache_alignment : 64
address sizes   : 38 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 23
model name  : Intel(R) Xeon(R) CPU           E5430  @ 2.66GHz
stepping    : 10
cpu MHz     : 2659.998
cache size  : 6144 KB
physical id : 1
siblings    : 4
core id     : 0
cpu cores   : 4
apicid      : 4
initial apicid  : 4
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority
bogomips    : 5319.78
clflush size    : 64
cache_alignment : 64
address sizes   : 38 bits physical, 48 bits virtual
power management:
1

"идентификатор ядра" не обязательно является последовательным. Вот такой вот grep из двойного гнезда с 12 ядрами с резьбой (так 48 "сердечников") G5118. Обратите внимание на отсутствующие идентификаторы ядра:

[qqs43472@cs05r-sc-serv-01 ~]$ cat /proc/cpuinfo  | grep "core id"
core id     : 0
core id     : 1
core id     : 2
core id     : 3
core id     : 4
core id     : 5
core id     : 8
core id     : 9
core id     : 10
core id     : 11
core id     : 12
core id     : 13
core id     : 0
core id     : 1
core id     : 2
core id     : 3
core id     : 4
core id     : 5
core id     : 8
core id     : 9
core id     : 10
core id     : 11
core id     : 12
core id     : 13
core id     : 0
core id     : 1
core id     : 2
core id     : 3
core id     : 4
core id     : 5
core id     : 8
core id     : 9
core id     : 10
core id     : 11
core id     : 12
core id     : 13
core id     : 0
core id     : 1
core id     : 2
core id     : 3
core id     : 4
core id     : 5
core id     : 8
core id     : 9
core id     : 10
core id     : 11
core id     : 12
core id     : 13
1

Вы можете проанализировать /proc /cpuinfo, чтобы он был более полезным:

paste <(cat /proc/cpuinfo | grep "core id") <(cat /proc/cpuinfo | grep "processor") | sed 's/[[:blank:]]/ /g'

На моей машине я вижу: core id : 0 processor : 0 core id : 1 processor : 1 core id : 2 processor : 2 core id : 3 processor : 3 core id : 0 processor : 4 core id : 1 processor : 5 core id : 2 processor : 6 core id : 3 processor : 7

Итак, 4 ядра, каждое с двумя потоками

0

Это Hyperthreading, который позволяет одному ядру более или менее параллельно запускать два потока. Более или менее зависит от того, какие инструкции использует каждый поток.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .