нумерация ядер процессоров

Вопросы программного кода и архитектуры Linux

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

нумерация ядер процессоров

Непрочитанное сообщение Olej » 07 фев 2022, 19:15

Как (в каком порядке) происходит нумерация ядер процессоров? ... особенно актуально для процессоров с гипертредингом ... а также для нескольких физических процессоров (в серверах).

Зачем? ... Если пишут, что Linux, по крайней мере, системой загружаются в первую очередь физические ядра.
Но во многих высоканагруженных многопоточных приложениях возможно вручную выбрать загружаемые ядра, чтобы не перегрузить всю систему ... или по теплу (см. перегрев...).

И как интерпретировать вывод некоторых диагностических программ, например:

Код: Выделить всё

olej@ESPRIMO:~$ sensors coretemp-*
coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +78.0°C  (high = +80.0°C, crit = +100.0°C)
Core 0:        +75.0°C  (high = +80.0°C, crit = +100.0°C)
Core 1:        +78.0°C  (high = +80.0°C, crit = +100.0°C)
Core 2:        +77.0°C  (high = +80.0°C, crit = +100.0°C)
Core 3:        +74.0°C  (high = +80.0°C, crit = +100.0°C)
Какие из этих 4-х принадлежат к 2-м физическим ядрам, и кто к каким?
И как выбирать и как указывать афинити маску в тех командах (и возможно программных API) там где это требуется?
И эта (видимая, например, в командах sensors, psensor или lscpu -e) виртуальная нумерация процессоров она: сохраняется неизменной от одной программы-утилиты к другой?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: нумерация ядер процессоров

Непрочитанное сообщение Olej » 07 фев 2022, 19:33

Olej писал(а):
07 фев 2022, 19:15
Зачем? ...
Забегая вперёд: совершенно не праздный вопрос - Нумерация гипертрэдинговых ядер...
13.12.18
Господа любители и пользователи процессоров intel c включенным hypertreading, скиньте сюда вывод lscpu -e. Просто возникла мысль, что нумерация «виртуальных» ядер может отличаться для процессоров intel и AMD.
Понятно, у интел по-кругу, а у АМД через один. Интересно, это баг или фича, это в ядре нумерация происходит или на аппаратном уровне?
Может дело в том, что у AMD строго говоря нет гипертрединга, то что его аналогом называют, все же устроено не так, как в Intel.
Не все AMD одинаковы, оказывается.
Интересно? :lol: :-o : премного болтливая, но совсем не такая безграмотная (в среднем ;-) ) компания с ЛОР, к концу 2018 года что-то совсем невнятное мычат по этому вопросу, и никакой ясности в ответах нет!

P.S. Из всех этих разговоров можно, по крайней мере извлечь предположения:
- нумерация виртуальных процессоров относительно числа и нумерации ядер различаются для Intel и AMD :-o
- между разными моделями AMD логика нумерации тоже меняется; :cry:
- относительно нескольких физических процессоров (в серверах) вопрос вообще не затронут...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: нумерация ядер процессоров

Непрочитанное сообщение Olej » 07 фев 2022, 20:13

Olej писал(а):
07 фев 2022, 19:15
Как (в каком порядке) происходит нумерация ядер процессоров?
Olej писал(а):
07 фев 2022, 19:33
- нумерация виртуальных процессоров относительно числа и нумерации ядер различаются для Intel и AMD
Ничего на сегодня не могу сказать вообще про AMD процессоры, к сожалению - у меня их сейчас нет под рукой.
Начинаю обзор своих Intel процессоров, начиная от самых простых (в толковании) к самым сложным:

Код: Выделить всё

olej@nvme:~$ inxi -Cxxx
CPU:       Topology: Dual Core model: Intel Celeron G3930 bits: 64 type: MCP arch: Kaby Lake rev: 9 L2 cache: 2048 KiB 
           flags: lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 11599 
           Speed: 2900 MHz min/max: 800/2900 MHz Core speeds (MHz): 1: 2900 2: 2900 

Код: Выделить всё

olej@nvme:~$ lscpu
Архитектура:                     x86_64
CPU op-mode(s):                  32-bit, 64-bit
Порядок байт:                    Little Endian
Address sizes:                   39 bits physical, 48 bits virtual
CPU(s):                          2
On-line CPU(s) list:             0,1
Потоков на ядро:                 1
Ядер на сокет:                   2
Сокетов:                         1
NUMA node(s):                    1
ID прроизводителя:               GenuineIntel
Семейство ЦПУ:                   6
Модель:                          158
Имя модели:                      Intel(R) Celeron(R) CPU G3930 @ 2.90GHz
Степпинг:                        9
CPU МГц:                         2900.000
CPU max MHz:                     2900,0000
CPU min MHz:                     800,0000
BogoMIPS:                        5799.77
Виртуализация:                   VT-x
L1d cache:                       64 KiB
L1i cache:                       64 KiB
L2 cache:                        512 KiB
L3 cache:                        2 MiB
NUMA node0 CPU(s):               0,1
Vulnerability Itlb multihit:     KVM: Vulnerable
Vulnerability L1tf:              Mitigation; PTE Inversion
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT disabled
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, IBPB conditional, IBRS_FW, STIBP disabled, RSB filling
Vulnerability Srbds:             Mitigation; Microcode
Vulnerability Tsx async abort:   Not affected
Флаги:                           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 art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cp
                                 uid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm pcid sse4_1 sse4_2 x2api
                                 c movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ssbd 
                                 ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust smep erms invpcid mpx rdseed sma
                                 p clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp md
                                 _clear flush_l1d

Код: Выделить всё

olej@nvme:~$ lscpu -e
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE    MAXMHZ   MINMHZ
  0    0      0    0 0:0:0:0           да 2900,0000 800,0000
  1    0      0    1 1:1:1:0           да 2900,0000 800,0000
Здесь просто - это Celeron без hypertreading.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: нумерация ядер процессоров

Непрочитанное сообщение Olej » 07 фев 2022, 20:23

Olej писал(а):
07 фев 2022, 20:13
Начинаю обзор своих Intel процессоров, начиная от самых простых (в толковании) к самым сложным:
Olej писал(а):
07 фев 2022, 20:13
Здесь просто - это Celeron без hypertreading.

Код: Выделить всё

[olej@xenix ~]$ inxi -Cxxx
CPU:
  Info: quad core model: Intel Xeon E5462 bits: 64 type: MCP
    smt: <unsupported> arch: Core Penryn rev: 6 cache: L1: 256 KiB L2: 12 MiB
  Speed (MHz): avg: 2000 high: 2002 min/max: 2403/2803 cores: 1: 2002 2: 2000 3: 2000 4: 2000 bogomips: 18666
  Flags: ht lm nx pae sse sse2 sse3 sse4_1 ssse3 vmx

Код: Выделить всё

[olej@xenix ~]$ lscpu
Архитектура:             x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         38 bits physical, 48 bits virtual
  Порядок байт:          Little Endian
CPU(s):                  4
  On-line CPU(s) list:   0-3
ID прроизводителя:       GenuineIntel
  Имя модели:            Intel(R) Xeon(R) CPU           E5462  @ 2.80GHz
    Семейство ЦПУ:       6
    Модель:              23
    Thread(s) per core:  1
    Ядер на сокет:       4
    Сокетов:             1
    Степпинг:            6
    CPU max MHz:         2803,0000
    CPU min MHz:         2403,0000
    BogoMIPS:            4666.61
    Флаги:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm pbe syscall nx lm constant_tsc 
                         arch_perfmon pebs bts rep_good nopl cpuid aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 lahf_lm pti tpr_shado
                         w vnmi flexpriority vpid dtherm
Virtualization features: 
  Виртуализация:         VT-x
Caches (sum of all):     
  L1d:                   128 KiB (4 instances)
  L1i:                   128 KiB (4 instances)
  L2:                    12 MiB (2 instances)
NUMA:                    
  NUMA node(s):          1
  NUMA node0 CPU(s):     0-3
Vulnerabilities:         
  Itlb multihit:         KVM: Mitigation: VMX disabled
  L1tf:                  Mitigation; PTE Inversion; VMX EPT disabled
  Mds:                   Vulnerable: Clear CPU buffers attempted, no microcode; SMT disabled
  Meltdown:              Mitigation; PTI
  Spec store bypass:     Vulnerable
  Spectre v1:            Mitigation; usercopy/swapgs barriers and __user pointer sanitization
  Spectre v2:            Mitigation; Full generic retpoline, STIBP disabled, RSB filling
  Srbds:                 Not affected
  Tsx async abort:       Not affected

Код: Выделить всё

[olej@xenix ~]$ lscpu -e
CPU NODE SOCKET CORE L1d:L1i:L2 ONLINE    MAXMHZ    MINMHZ      MHZ
  0    0      0    0 0:0:0          да 2803,0000 2403,0000 2403.000
  1    0      0    1 1:1:0          да 2803,0000 2403,0000 2403.000
  2    0      0    2 2:2:1          да 2803,0000 2403,0000 2403.000
  3    0      0    3 3:3:1          да 2803,0000 2403,0000 2000.084
Это ещё интереснее: старенький серверный Xeon E5462 ещё для 775 сокета ... опять же без hypertreading: 4 ядра, NODE и SOCKET для всех процессоров - 0.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: нумерация ядер процессоров

Непрочитанное сообщение Olej » 07 фев 2022, 20:27

Olej писал(а):
07 фев 2022, 20:13
Здесь просто - это Celeron без hypertreading.
Ну и ещё:

Код: Выделить всё

olej@OptiPlex:~$ inxi -Cxxx
CPU:       Topology: Dual Core model: Intel Core2 Duo E7500 bits: 64 type: MCP arch: Penryn rev: A L2 cache: 3072 KiB 
           flags: lm nx pae sse sse2 sse3 sse4_1 ssse3 vmx bogomips: 11704 
           Speed: 1596 MHz min/max: 1600/2933 MHz Core speeds (MHz): 1: 1596 2: 1596 

Код: Выделить всё

olej@OptiPlex:~$ lscpu
Архитектура:                     x86_64
CPU op-mode(s):                  32-bit, 64-bit
Порядок байт:                    Little Endian
Address sizes:                   36 bits physical, 48 bits virtual
CPU(s):                          2
On-line CPU(s) list:             0,1
Потоков на ядро:                 1
Ядер на сокет:                   2
Сокетов:                         1
NUMA node(s):                    1
ID прроизводителя:               GenuineIntel
Семейство ЦПУ:                   6
Модель:                          23
Имя модели:                      Intel(R) Core(TM)2 Duo CPU     E7500  @ 2.93GHz
Степпинг:                        10
CPU МГц:                         1596.060
CPU max MHz:                     2933,0000
CPU min MHz:                     1600,0000
BogoMIPS:                        5852.10
Виртуализация:                   VT-x
L1d cache:                       64 KiB
L1i cache:                       64 KiB
L2 cache:                        3 MiB
NUMA node0 CPU(s):               0,1
Vulnerability Itlb multihit:     KVM: Mitigation: Split huge pages
Vulnerability L1tf:              Mitigation; PTE Inversion; VMX EPT disabled
Vulnerability Mds:               Vulnerable: Clear CPU buffers attempted, no microcode; SMT disabled
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, STIBP disabled, RSB filling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Not affected
Флаги:                           fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm pbe syscall nx lm const
                                 ant_tsc arch_perfmon pebs bts rep_good nopl cpuid aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lah
                                 f_lm pti tpr_shadow vnmi flexpriority dtherm

Код: Выделить всё

olej@OptiPlex:~$ lscpu -e
CPU NODE SOCKET CORE L1d:L1i:L2 ONLINE    MAXMHZ    MINMHZ
  0    0      0    0 0:0:0          да 2933,0000 1600,0000
  1    0      0    1 1:1:0          да 2933,0000 1600,0000
Тоже без hypertreading. Общий принцип понятен...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: нумерация ядер процессоров

Непрочитанное сообщение Olej » 07 фев 2022, 21:15

Olej писал(а):
07 фев 2022, 20:27
Тоже без hypertreading.
Теперь hypertreading:

Код: Выделить всё

olej@nvidia:~$ inxi -Cxxx
CPU:       Topology: Dual Core model: Intel Core i5 660 bits: 64 type: MT MCP arch: Nehalem rev: 5 L2 cache: 4096 KiB 
           flags: lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 26600 
           Speed: 3325 MHz min/max: N/A Core speeds (MHz): 1: 3325 2: 3325 3: 3325 4: 3325 

Код: Выделить всё

olej@nvidia:~$ lscpu
Архитектура:                     x86_64
CPU op-mode(s):                  32-bit, 64-bit
Порядок байт:                    Little Endian
Address sizes:                   36 bits physical, 48 bits virtual
CPU(s):                          4
On-line CPU(s) list:             0-3
Потоков на ядро:                 2
Ядер на сокет:                   2
Сокетов:                         1
NUMA node(s):                    1
ID прроизводителя:               GenuineIntel
Семейство ЦПУ:                   6
Модель:                          37
Имя модели:                      Intel(R) Core(TM) i5 CPU         660  @ 3.33GHz
Степпинг:                        5
CPU МГц:                         3325.049
BogoMIPS:                        6650.09
Виртуализация:                   VT-x
L1d cache:                       64 KiB
L1i cache:                       64 KiB
L2 cache:                        512 KiB
L3 cache:                        4 MiB
NUMA node0 CPU(s):               0-3
Vulnerability Itlb multihit:     KVM: Mitigation: Split huge pages
Vulnerability L1tf:              Mitigation; PTE Inversion; VMX conditional cache flushes, SMT vulnerable
Vulnerability Mds:               Vulnerable: Clear CPU buffers attempted, no microcode; SMT vulnerable
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, IBPB conditional, IBRS_FW, STIBP conditional, RSB filling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Not affected
Флаги:                           fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm 
                                 pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf 
                                 pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt aes lahf_lm pt
                                 i ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid dtherm ida arat flush_l1d

Код: Выделить всё

olej@nvidia:~$ lscpu -e
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE
  0    0      0    0 0:0:0:0           да
  1    0      0    0 0:0:0:0           да
  2    0      0    1 1:1:1:0           да
  3    0      0    1 1:1:1:0           да
Тут, как я понимаю, 4 виртуальных процессора (CPU) разбиты по 2-м физическим ядрам (CORE) ... но разобраться кто где - совсем не просто. Помочь в этом может:

Код: Выделить всё

olej@nvidia:/sys/devices/system/cpu$ ls -d /sys/devices/system/cpu/cpu?
/sys/devices/system/cpu/cpu0  /sys/devices/system/cpu/cpu1  /sys/devices/system/cpu/cpu2  /sys/devices/system/cpu/cpu3

olej@nvidia:/sys/devices/system/cpu$ cat /sys/devices/system/cpu/cpu0/topology/core_cpus_list
0-1

olej@nvidia:/sys/devices/system/cpu$ cat /sys/devices/system/cpu/cpu1/topology/core_cpus_list
0-1
Итого, виртуальные процессоры (CPU) разложены по физическим ядрам (CORE) так: 0+1 и 2+3

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: нумерация ядер процессоров

Непрочитанное сообщение Olej » 07 фев 2022, 21:24

Olej писал(а):
07 фев 2022, 21:15
Теперь hypertreading:
Случай сложнее:

Код: Выделить всё

olej@ESPRIMO:~$ inxi -Cxxx
CPU:       Topology: Quad Core model: Intel Xeon E3-1240 v3 bits: 64 type: MT MCP arch: Haswell rev: 3 L2 cache: 8192 KiB 
           flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 54275 
           Speed: 3592 MHz min/max: 800/3800 MHz Core speeds (MHz): 1: 3592 2: 3592 3: 3592 4: 3592 5: 3592 6: 3600 7: 3590 8: 3592 

Код: Выделить всё

olej@ESPRIMO:~$ lscpu
Архитектура:                     x86_64
CPU op-mode(s):                  32-bit, 64-bit
Порядок байт:                    Little Endian
Address sizes:                   39 bits physical, 48 bits virtual
CPU(s):                          8
On-line CPU(s) list:             0-7
Потоков на ядро:                 2
Ядер на сокет:                   4
Сокетов:                         1
NUMA node(s):                    1
ID прроизводителя:               GenuineIntel
Семейство ЦПУ:                   6
Модель:                          60
Имя модели:                      Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz
Степпинг:                        3
CPU МГц:                         3591.744
CPU max MHz:                     3800,0000
CPU min MHz:                     800,0000
BogoMIPS:                        6784.40
Виртуализация:                   VT-x
L1d cache:                       128 KiB
L1i cache:                       128 KiB
L2 cache:                        1 MiB
L3 cache:                        8 MiB
NUMA node0 CPU(s):               0-7
Vulnerability Itlb multihit:     KVM: Mitigation: Split huge pages
Vulnerability L1tf:              Mitigation; PTE Inversion; VMX conditional cache flushes, SMT vulnerable
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT vulnerable
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, IBPB conditional, IBRS_FW, STIBP conditional, RSB filling
Vulnerability Srbds:             Mitigation; Microcode
Vulnerability Tsx async abort:   Not affected
Флаги:                           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 cpuid 
                                 aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x
                                 2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm cpuid_fault epb invpcid_single pti ss
                                 bd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invp
                                 cid xsaveopt dtherm ida arat pln pts md_clear flush_l1d

Код: Выделить всё

olej@ESPRIMO:~$ lscpu -e
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE    MAXMHZ   MINMHZ
  0    0      0    0 0:0:0:0           да 3800,0000 800,0000
  1    0      0    1 1:1:1:0           да 3800,0000 800,0000
  2    0      0    2 2:2:2:0           да 3800,0000 800,0000
  3    0      0    3 3:3:3:0           да 3800,0000 800,0000
  4    0      0    0 0:0:0:0           да 3800,0000 800,0000
  5    0      0    1 1:1:1:0           да 3800,0000 800,0000
  6    0      0    2 2:2:2:0           да 3800,0000 800,0000
  7    0      0    3 3:3:3:0           да 3800,0000 800,0000
Тут 8 виртуальных процессора (CPU) разбиты по 4-м физическим ядрам (CORE), и принадлежат ядрам эти (CPU) так: 0+4 - 1+5 - 2+6 - 3+7
Убедиться в этом можно так ... как пример, рассмотрев 2 CPU одного ядра:

Код: Выделить всё

olej@ESPRIMO:/sys/devices/system/cpu$ cat /sys/devices/system/cpu/cpu3/topology/core_cpus_list
3,7

olej@ESPRIMO:/sys/devices/system/cpu$ cat /sys/devices/system/cpu/cpu7/topology/core_cpus_list
3,7

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: нумерация ядер процессоров

Непрочитанное сообщение Olej » 07 фев 2022, 21:35

Olej писал(а):
07 фев 2022, 21:24
Убедиться в этом можно так ... как пример, рассмотрев 2 CPU одного ядра:
Olej писал(а):
07 фев 2022, 20:13
- нумерация виртуальных процессоров относительно числа и нумерации ядер различаются для Intel и AMD
Из рассмотрения 2-х последних процессоров следует (?) что логика нумерации CPU различаются не только у Intel AMD, но и между моделями Intel (и, как утверждали недоброжелатели с ЛОР :lol: , и между моделями AMD) :!:
Это большой сюрприз!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: нумерация ядер процессоров

Непрочитанное сообщение Olej » 07 фев 2022, 23:41

Olej писал(а):
07 фев 2022, 21:15
Теперь hypertreading:
А теперь мультипроцессор (1U сервер DELL R420):

Код: Выделить всё

olej@R420:~$ inxi -Cxxx
CPU:       Topology: 2x 10-Core model: Intel Xeon E5-2470 v2 bits: 64 type: MT MCP SMP arch: Ivy Bridge rev: 4 
           L2 cache: 50.0 MiB 
           flags: avx lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 192028 
           Speed: 2800 MHz min/max: 1200/3200 MHz Core speeds (MHz): 1: 2800 2: 2800 3: 2800 4: 2800 5: 2800 6: 2800 7: 2800 
           8: 2800 9: 2800 10: 2800 11: 2801 12: 2800 13: 2800 14: 2800 15: 2800 16: 2800 17: 2801 18: 2800 19: 2800 20: 2801 
           21: 2800 22: 2800 23: 2800 24: 2800 25: 2800 26: 2800 27: 2800 28: 2800 29: 2800 30: 2800 31: 2800 32: 2800 
           33: 2800 34: 2799 35: 2800 36: 2800 37: 2800 38: 2800 39: 2800 40: 2800 

Код: Выделить всё

olej@R420:~$ lscpu
Архитектура:                     x86_64
CPU op-mode(s):                  32-bit, 64-bit
Порядок байт:                    Little Endian
Address sizes:                   46 bits physical, 48 bits virtual
CPU(s):                          40
On-line CPU(s) list:             0-39
Потоков на ядро:                 2
Ядер на сокет:                   10
Сокетов:                         2
NUMA node(s):                    2
ID прроизводителя:               GenuineIntel
Семейство ЦПУ:                   6
Модель:                          62
Имя модели:                      Intel(R) Xeon(R) CPU E5-2470 v2 @ 2.40GHz
Степпинг:                        4
CPU МГц:                         2799.779
CPU max MHz:                     3200,0000
CPU min MHz:                     1200,0000
BogoMIPS:                        4799.60
Виртуализация:                   VT-x
L1d cache:                       640 KiB
L1i cache:                       640 KiB
L2 cache:                        5 MiB
L3 cache:                        50 MiB
NUMA node0 CPU(s):               0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38
NUMA node1 CPU(s):               1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39
Vulnerability Itlb multihit:     KVM: Mitigation: Split huge pages
Vulnerability L1tf:              Mitigation; PTE Inversion; VMX conditional cache flushes, SMT vulnerable
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT vulnerable
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, IBPB conditional, IBRS_FW, STIBP conditional, RSB filling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Not affected
Флаги:                           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 sysc
                                 all nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulq
                                 dq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xs
                                 ave avx f16c rdrand lahf_lm cpuid_fault pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xs
                                 aveopt dtherm ida arat pln pts md_clear flush_l1d

Код: Выделить всё

olej@R420:~$ lscpu -e
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE    MAXMHZ    MINMHZ
  0    0      0    0 0:0:0:0           да 3200,0000 1200,0000
  1    1      1    1 1:1:1:1           да 3200,0000 1200,0000
  2    0      0    2 2:2:2:0           да 3200,0000 1200,0000
  3    1      1    3 3:3:3:1           да 3200,0000 1200,0000
  4    0      0    4 4:4:4:0           да 3200,0000 1200,0000
  5    1      1    5 5:5:5:1           да 3200,0000 1200,0000
  6    0      0    6 6:6:6:0           да 3200,0000 1200,0000
  7    1      1    7 7:7:7:1           да 3200,0000 1200,0000
  8    0      0    8 8:8:8:0           да 3200,0000 1200,0000
  9    1      1    9 9:9:9:1           да 3200,0000 1200,0000
 10    0      0   10 10:10:10:0        да 3200,0000 1200,0000
 11    1      1   11 11:11:11:1        да 3200,0000 1200,0000
 12    0      0   12 12:12:12:0        да 3200,0000 1200,0000
 13    1      1   13 13:13:13:1        да 3200,0000 1200,0000
 14    0      0   14 14:14:14:0        да 3200,0000 1200,0000
 15    1      1   15 15:15:15:1        да 3200,0000 1200,0000
 16    0      0   16 16:16:16:0        да 3200,0000 1200,0000
 17    1      1   17 17:17:17:1        да 3200,0000 1200,0000
 18    0      0   18 18:18:18:0        да 3200,0000 1200,0000
 19    1      1   19 19:19:19:1        да 3200,0000 1200,0000
 20    0      0    0 0:0:0:0           да 3200,0000 1200,0000
 21    1      1    1 1:1:1:1           да 3200,0000 1200,0000
 22    0      0    2 2:2:2:0           да 3200,0000 1200,0000
 23    1      1    3 3:3:3:1           да 3200,0000 1200,0000
 24    0      0    4 4:4:4:0           да 3200,0000 1200,0000
 25    1      1    5 5:5:5:1           да 3200,0000 1200,0000
 26    0      0    6 6:6:6:0           да 3200,0000 1200,0000
 27    1      1    7 7:7:7:1           да 3200,0000 1200,0000
 28    0      0    8 8:8:8:0           да 3200,0000 1200,0000
 29    1      1    9 9:9:9:1           да 3200,0000 1200,0000
 30    0      0   10 10:10:10:0        да 3200,0000 1200,0000
 31    1      1   11 11:11:11:1        да 3200,0000 1200,0000
 32    0      0   12 12:12:12:0        да 3200,0000 1200,0000
 33    1      1   13 13:13:13:1        да 3200,0000 1200,0000
 34    0      0   14 14:14:14:0        да 3200,0000 1200,0000
 35    1      1   15 15:15:15:1        да 3200,0000 1200,0000
 36    0      0   16 16:16:16:0        да 3200,0000 1200,0000
 37    1      1   17 17:17:17:1        да 3200,0000 1200,0000
 38    0      0   18 18:18:18:0        да 3200,0000 1200,0000
 39    1      1   19 19:19:19:1        да 3200,0000 1200,0000
И тут толковать становится уже сложно...
Судя по "Сокетов: 2" - SOCKET - это физический отдельный процессор, 0/1
CORE - номер

Код: Выделить всё

физического
ядра в сквозной нумерации 0...19 ... причём 0 - процессор 0, 1 - процессор 1, 2 - снова процессор 0 и т.д. - всё весьма мудрёно.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: нумерация ядер процессоров

Непрочитанное сообщение Olej » 07 фев 2022, 23:55

Olej писал(а):
07 фев 2022, 23:41
всё весьма мудрёно.
И это действительно так:

Код: Выделить всё

olej@R420:~$ ls -d /sys/devices/system/cpu/cpu*
/sys/devices/system/cpu/cpu0   /sys/devices/system/cpu/cpu17  /sys/devices/system/cpu/cpu25  /sys/devices/system/cpu/cpu33  /sys/devices/system/cpu/cpu6
/sys/devices/system/cpu/cpu1   /sys/devices/system/cpu/cpu18  /sys/devices/system/cpu/cpu26  /sys/devices/system/cpu/cpu34  /sys/devices/system/cpu/cpu7
/sys/devices/system/cpu/cpu10  /sys/devices/system/cpu/cpu19  /sys/devices/system/cpu/cpu27  /sys/devices/system/cpu/cpu35  /sys/devices/system/cpu/cpu8
/sys/devices/system/cpu/cpu11  /sys/devices/system/cpu/cpu2   /sys/devices/system/cpu/cpu28  /sys/devices/system/cpu/cpu36  /sys/devices/system/cpu/cpu9
/sys/devices/system/cpu/cpu12  /sys/devices/system/cpu/cpu20  /sys/devices/system/cpu/cpu29  /sys/devices/system/cpu/cpu37  /sys/devices/system/cpu/cpufreq
/sys/devices/system/cpu/cpu13  /sys/devices/system/cpu/cpu21  /sys/devices/system/cpu/cpu3   /sys/devices/system/cpu/cpu38  /sys/devices/system/cpu/cpuidle
/sys/devices/system/cpu/cpu14  /sys/devices/system/cpu/cpu22  /sys/devices/system/cpu/cpu30  /sys/devices/system/cpu/cpu39
/sys/devices/system/cpu/cpu15  /sys/devices/system/cpu/cpu23  /sys/devices/system/cpu/cpu31  /sys/devices/system/cpu/cpu4
/sys/devices/system/cpu/cpu16  /sys/devices/system/cpu/cpu24  /sys/devices/system/cpu/cpu32  /sys/devices/system/cpu/cpu5

Код: Выделить всё

olej@R420:/sys/devices/system/cpu$ cat /sys/devices/system/cpu/cpu0/topology/core_cpus_list
0,20

olej@R420:/sys/devices/system/cpu$ cat /sys/devices/system/cpu/cpu20/topology/core_cpus_list
0,20
0 и 20 - это виртуальные ядра на одном физическом ядре процессора 0:

Код: Выделить всё

olej@R420:/sys/devices/system/cpu$ cat /sys/devices/system/cpu/cpu0/topology/physical_package_id
0

Код: Выделить всё

olej@R420:/sys/devices/system/cpu$ cat /sys/devices/system/cpu/cpu1/topology/core_cpus_list
1,21

olej@R420:/sys/devices/system/cpu$ cat /sys/devices/system/cpu/cpu21/topology/core_cpus_list
1,21
1 и 21 - это виртуальные ядра на одном физическом ядре процессора 1:

Код: Выделить всё

olej@R420:/sys/devices/system/cpu$ cat /sys/devices/system/cpu/cpu1/topology/physical_package_id
1
P.S. И вообще там для каждого виртуального процессора (/sys/devices/system/cpu/cpu*) содержится список всех виртуальных процессоров, расположенных с ним совместно в одном чипе процессора:

Код: Выделить всё

olej@R420:/sys/devices/system/cpu$ cat /sys/devices/system/cpu/cpu23/topology/package_cpus_list
1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39

Код: Выделить всё

olej@R420:/sys/devices/system/cpu$ cat /sys/devices/system/cpu/cpu24/topology/package_cpus_list
0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38

Ответить

Вернуться в «Linux изнутри»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость