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

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

Модератор: Olej

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

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

Непрочитанное сообщение Olej » 08 фев 2022, 01:57

Olej писал(а):
07 фев 2022, 23:55
И это действительно так:
Т.е. если мне нужно назначить ... скажем 12 (назовите любую цифру) процессоров для а). максимальной производительности при б). минимальном перегреве, то я должен, по идее, выбрать на этом компьютере первые 12 номеров:

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

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
Проверил это, как на тесте, на майнинге крипто Monero Monero / XMR...
Если до этого, при выборе (того что я думал оптимально) производительность (H/s) была:

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

[2022-02-08 00:35:23.618]  miner    speed 10s/60s/15m 4606.2 4702.2 4789.6 H/s max 4971.7 H/s
то теперь при таком выборе:

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

[2022-02-08 00:55:02.778]  miner    speed 10s/60s/15m 5472.3 5448.9 n/a H/s max 5570.3 H/s
Ничего особенного, но добавка 12-18% к производительности на ровном месте :!: :-D

P.S. Правда, нагрев при этом ... и вой кулеров :cry: - не уменьшился, а увеличился на 3°C (63°C -> 66°C)

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

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

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

Olej писал(а):
07 фев 2022, 19:15
И эта (видимая, например, в командах sensors, psensor или lscpu -e) виртуальная нумерация процессоров она: сохраняется неизменной от одной программы-утилиты к другой?
Olej писал(а):
07 фев 2022, 23:55
P.S. И вообще там для каждого виртуального процессора (/sys/devices/system/cpu/cpu*) содержится список всех виртуальных процессоров, расположенных с ним совместно в одном чипе процессора:
Смотрим попроцессорную загрузку для случая выше:

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

olej@R420:/sys/devices/system/cpu$ mpstat -P ALL
Linux 5.4.0-97-generic (R420) 	08.02.2022 	_x86_64_	(40 CPU)

00:49:15     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
00:49:15     all   42,36    0,00    0,26    0,03    0,00    0,00    0,00    0,00    0,00   57,34
00:49:15       0   99,17    0,00    0,07    0,00    0,00    0,00    0,00    0,00    0,00    0,76
00:49:15       1   99,18    0,00    0,06    0,00    0,00    0,00    0,00    0,00    0,00    0,76
00:49:15       2    4,64    0,01    0,43    0,03    0,00    0,01    0,00    0,00    0,00   94,89
00:49:15       3    5,34    0,00    0,52    0,07    0,00    0,00    0,00    0,00    0,00   94,07
00:49:15       4   99,17    0,00    0,06    0,00    0,00    0,00    0,00    0,00    0,00    0,77
00:49:15       5   99,17    0,00    0,06    0,00    0,00    0,00    0,00    0,00    0,00    0,77
00:49:15       6    4,64    0,01    0,42    0,03    0,00    0,00    0,00    0,00    0,00   94,90
00:49:15       7    5,24    0,00    0,50    0,08    0,00    0,00    0,00    0,00    0,00   94,18
00:49:15       8   99,17    0,00    0,07    0,00    0,00    0,00    0,00    0,00    0,00    0,77
00:49:15       9   99,17    0,00    0,06    0,00    0,00    0,00    0,00    0,00    0,00    0,77
00:49:15      10    4,62    0,01    0,42    0,03    0,00    0,00    0,00    0,00    0,00   94,92
00:49:15      11    5,19    0,00    0,48    0,08    0,00    0,00    0,00    0,00    0,00   94,25
00:49:15      12   98,47    0,00    0,07    0,00    0,00    0,00    0,00    0,00    0,00    1,46
00:49:15      13   98,47    0,00    0,06    0,00    0,00    0,00    0,00    0,00    0,00    1,47
00:49:15      14    3,95    0,01    0,43    0,02    0,00    0,00    0,00    0,00    0,00   95,59
00:49:15      15    4,49    0,00    0,48    0,07    0,00    0,00    0,00    0,00    0,00   94,95
00:49:15      16   98,43    0,00    0,07    0,00    0,00    0,03    0,00    0,00    0,00    1,47
00:49:15      17   98,46    0,00    0,06    0,00    0,00    0,00    0,00    0,00    0,00    1,47
00:49:15      18    3,94    0,01    0,42    0,03    0,00    0,00    0,00    0,00    0,00   95,60
00:49:15      19    4,47    0,00    0,47    0,07    0,00    0,00    0,00    0,00    0,00   94,99
00:49:15      20   98,44    0,00    0,07    0,00    0,00    0,00    0,00    0,00    0,00    1,49
00:49:15      21   98,45    0,00    0,06    0,00    0,00    0,00    0,00    0,00    0,00    1,49
00:49:15      22    3,75    0,01    0,43    0,02    0,00    0,00    0,00    0,00    0,00   95,79
00:49:15      23    4,39    0,00    0,47    0,07    0,00    0,00    0,00    0,00    0,00   95,07
00:49:15      24   52,51    0,00    0,10    0,01    0,00    0,00    0,00    0,00    0,00   47,39
00:49:15      25   52,51    0,00    0,09    0,00    0,00    0,00    0,00    0,00    0,00   47,40
00:49:15      26    3,69    0,00    0,42    0,03    0,00    0,00    0,00    0,00    0,00   95,86
00:49:15      27    4,49    0,00    0,47    0,07    0,00    0,00    0,00    0,00    0,00   94,97
00:49:15      28   52,47    0,00    0,10    0,01    0,00    0,00    0,00    0,00    0,00   47,42
00:49:15      29   52,47    0,00    0,08    0,00    0,00    0,00    0,00    0,00    0,00   47,45
00:49:15      30    3,56    0,00    0,42    0,03    0,00    0,00    0,00    0,00    0,00   95,98
00:49:15      31    4,46    0,00    0,46    0,07    0,00    0,00    0,00    0,00    0,00   95,00
00:49:15      32   52,51    0,00    0,10    0,00    0,00    0,00    0,00    0,00    0,00   47,38
00:49:15      33   52,50    0,00    0,08    0,00    0,00    0,00    0,00    0,00    0,00   47,42
00:49:15      34    3,58    0,01    0,42    0,04    0,00    0,00    0,00    0,00    0,00   95,96
00:49:15      35    4,48    0,00    0,47    0,08    0,00    0,00    0,00    0,00    0,00   94,97
00:49:15      36   52,52    0,00    0,10    0,00    0,00    0,00    0,00    0,00    0,00   47,38
00:49:15      37   52,54    0,00    0,09    0,00    0,00    0,00    0,00    0,00    0,00   47,36
00:49:15      38    3,59    0,00    0,42    0,03    0,00    0,00    0,00    0,00    0,00   95,95
00:49:15      39    4,64    0,00    0,52    0,08    0,00    0,00    0,00    0,00    0,00   94,75
И видим что нумерация процессоров (виртуальных) радикально отличается от того порядка, в которых они представлены в lscpu:

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

olej@R420:/sys/devices/system/cpu$ 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

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

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

Непрочитанное сообщение Olej » 08 фев 2022, 02:10

Olej писал(а):
08 фев 2022, 02:07
И видим что нумерация процессоров (виртуальных) радикально отличается от того порядка, в которых они представлены в :
И отличается от той нумерации которая (по температуре соответствующей загрузке 61-64°C vs 51-58°C) используется в sensors:

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

olej@R420:/sys/devices/system/cpu$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +64.0°C  (high = +81.0°C, crit = +91.0°C)
Core 0:        +62.0°C  (high = +81.0°C, crit = +91.0°C)
Core 1:        +62.0°C  (high = +81.0°C, crit = +91.0°C)
Core 2:        +64.0°C  (high = +81.0°C, crit = +91.0°C)
Core 3:        +62.0°C  (high = +81.0°C, crit = +91.0°C)
Core 4:        +61.0°C  (high = +81.0°C, crit = +91.0°C)
Core 8:        +57.0°C  (high = +81.0°C, crit = +91.0°C)
Core 9:        +56.0°C  (high = +81.0°C, crit = +91.0°C)
Core 10:       +56.0°C  (high = +81.0°C, crit = +91.0°C)
Core 11:       +50.0°C  (high = +81.0°C, crit = +91.0°C)
Core 12:       +55.0°C  (high = +81.0°C, crit = +91.0°C)

coretemp-isa-0001
Adapter: ISA adapter
Package id 1:  +64.0°C  (high = +81.0°C, crit = +91.0°C)
Core 0:        +61.0°C  (high = +81.0°C, crit = +91.0°C)
Core 1:        +61.0°C  (high = +81.0°C, crit = +91.0°C)
Core 2:        +64.0°C  (high = +81.0°C, crit = +91.0°C)
Core 3:        +62.0°C  (high = +81.0°C, crit = +91.0°C)
Core 4:        +61.0°C  (high = +81.0°C, crit = +91.0°C)
Core 8:        +58.0°C  (high = +81.0°C, crit = +91.0°C)
Core 9:        +53.0°C  (high = +81.0°C, crit = +91.0°C)
Core 10:       +56.0°C  (high = +81.0°C, crit = +91.0°C)
Core 11:       +54.0°C  (high = +81.0°C, crit = +91.0°C)
Core 12:       +51.0°C  (high = +81.0°C, crit = +91.0°C)
А по системному монитору Mint 20.3 (думаю что и для любого Linux) картина 12 ядер выглядит примерно так:
Снимок экрана от 2022-02-08 02-04-13.png
Снимок экрана от 2022-02-08 02-04-13.png (240.94 КБ) 313 просмотров
И это как-раз соответствует тому, что мы заключили из "lscpu -e" :!:

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

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

Непрочитанное сообщение Olej » 08 фев 2022, 02:18

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

1). отображение реальной раскладки виртуальных процессоров Linux от используемых числа процессоров, числа ядер, и триэдинга на ядрах - не нормализовано, не фиксировано, зависит от технологии производителя и отличается от модели к модели.
Olej писал(а):
08 фев 2022, 02:07
И видим что нумерация процессоров (виртуальных) радикально отличается от того порядка, в которых они представлены в lscpu:
Olej писал(а):
08 фев 2022, 02:10
И отличается от той нумерации которая (по температуре соответствующей загрузке 61-64°C vs 51-58°C) используется в sensors:
2). множество утилит диагностики процессоров исходят от разных производителей, и они используют разную нумерацию виртуальных процессоров, какая им удобна...

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

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

Непрочитанное сообщение Olej » 08 фев 2022, 02:28

Olej писал(а):
08 фев 2022, 02:18
2). множество утилит диагностики процессоров исходят от разных производителей, и они используют разную нумерацию виртуальных процессоров, какая им удобна...
Т.е. для показанного выше процессора:

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

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 
Для указания максимальной производительности, нужно указать процессоры (по числу физических ядер) как : 0,2 (или 1,3)

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

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           да
А для процессора:

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

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 
Нужно указывать совершенно наоборот: 0,1,2,3 (или 4,5,6,7) :

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

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

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

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

Непрочитанное сообщение Olej » 08 фев 2022, 11:25

Olej писал(а):
07 фев 2022, 19:33
Интересно? : премного болтливая, но совсем не такая безграмотная (в среднем ) компания с ЛОР, к концу 2018 года что-то совсем невнятное мычат по этому вопросу, и никакой ясности в ответах нет!
Вообще в Linux это не критично, так как шедуллер знает где что, и сначала загружает физические ядраВообще в Linux это не критично, так как шедуллер знает где что, и сначала загружает физические ядра
- а вот по этому поводу есть большие сомнения, скорее это из области просто болтовни ... как завсегда на ЛОР :lol: ... потому что ручной выбор ядер для выполнения в 12 потоков показывает:
Olej писал(а):
08 фев 2022, 01:57
добавка 12-18% к производительности на ровном месте

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

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

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

Olej писал(а):
08 фев 2022, 02:28
Нужно указывать совершенно наоборот: 0,1,2,3 (или 4,5,6,7) :
Очень интересно, в тему...
На этом процессоре:

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

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: 3592 7: 3592 8: 3592 
Что происходит если однотипные нагруженные (100%) вычисления запустить на всех ядрах (я опять же использую в качестве нагрузки майнинг Monero / XMR ... это не совсем правильно, лучше бы использовать стресс-тесты)...

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

olej@ESPRIMO:~$ uptime
 11:57:28 up 1 day, 23:18,  1 user,  load average: 8,41, 7,25, 5,48
И системный монитор показывает 100% загрузки всех ядер:
Снимок экрана от 2022-02-08 11-58-17.png
Снимок экрана от 2022-02-08 11-58-17.png (78 КБ) 305 просмотров
Но ... :-o

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

olej@ESPRIMO:~$ mpstat -P ALL
Linux 5.4.0-97-generic (ESPRIMO) 	08.02.2022 	_x86_64_	(8 CPU)

12:06:30     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
12:06:30     all   43,72    0,00    0,23    0,01    0,00    0,41    0,00    0,00    0,00   55,64
12:06:30       0   99,66    0,00    0,10    0,00    0,00    0,02    0,00    0,00    0,00    0,22
12:06:30       1   66,05    0,00    0,11    0,00    0,00    3,02    0,00    0,00    0,00   30,81
12:06:30       2   99,67    0,00    0,11    0,00    0,00    0,00    0,00    0,00    0,00    0,22
12:06:30       3   68,06    0,00    0,12    0,00    0,00    0,13    0,00    0,00    0,00   31,69
12:06:30       4    3,67    0,00    0,30    0,01    0,00    0,00    0,00    0,00    0,00   96,03
12:06:30       5    3,83    0,00    0,48    0,01    0,00    0,00    0,00    0,00    0,00   95,68
12:06:30       6    3,69    0,00    0,30    0,04    0,00    0,00    0,00    0,00    0,00   95,97
12:06:30       7    4,04    0,00    0,30    0,01    0,00    0,00    0,00    0,00    0,00   95,64
mpstat показывает что происходит: реально работают только 4 ядра (0,1,2,3), остальные 4, гипертриэдинговые на тех же физических ядрах, тупо простаивают, только разогревая температуру процессора.
При этом итоговая диагностика задачи показывает, что увеличение числа распределённых потоков с 4 до 8 только уменьшает продуктивность, и значительно, до того уровня, который наблюдается при 2 работающих потоках!

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

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

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

Olej писал(а):
07 фев 2022, 19:33
Интересно? : премного болтливая, но совсем не такая безграмотная (в среднем ) компания с ЛОР, к концу 2018 года что-то совсем невнятное мычат по этому вопросу, и никакой ясности в ответах нет!
Важно! Из обсуждений может сложиться ложное представление что в оборудовании существуют некие различающиеся «физические» и некие «логические» ядра, которые, и те и другие Linux воспринимает как доступные ему (виртуальные) процессоры. Это не так! Есть только симметричные пары ядер (за счёт гипертрэдинга), принадлежащие к одному аппаратному «физическому» ядру.
Вот (снова) процессор Intel Xeon E3-1240 v3 - 4 физических ядра / 8 логических ядер:

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

olej@ESPRIMO:~/2022$ 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: 3592 7: 3592 
           8: 3592 

Это же хорошо можно видеть на диагностике сенсоров температурного нагрева процессоров:

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

olej@ESPRIMO:~/2022$ sensors coretemp-isa-*
coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +80.0°C  (high = +80.0°C, crit = +100.0°C)
Core 0:        +78.0°C  (high = +80.0°C, crit = +100.0°C)
Core 1:        +80.0°C  (high = +80.0°C, crit = +100.0°C)
Core 2:        +79.0°C  (high = +80.0°C, crit = +100.0°C)
Core 3:        +75.0°C  (high = +80.0°C, crit = +100.0°C)
И вот как, по нумерации процессоров Linux, эти 8 логических процессоров (колонка CPU) парами (за счёт гипертрэдинга) раскладываются по 4-м физическим ядрам (колонка CORE):

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

olej@ESPRIMO:~/2022$ 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

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

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

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

Вообще то, сам производитель Intel пишет (и это определённо оценка максимум максиморум :-? ), что производительность за счёт гипертрэдинга может возрастать до 15-30% ... многие экспериментаторы утверждают, что это не более 20%.
Несколько побольше производительности по сравнению с одиночным ядром может возникать, по-видимому, если (и когда) программные потоки (процессы) на этих логических ядрах выполняют разнородные виды вычислений (задействуя разные аппаратные блоки процессора).
Есть публикации, говорящие что смысл гипертрэдинга проявляется, главным образом, в сетевых серверах массового обслуживания.

Но! На некоторых задачах задействование всех логичексих ядер на физических не повышает, а снижает общую суммарную производительность! Это можно предполагать как проявление конкуренции ядер за другими ресурсами, в частности за кеш-памятью разных уровней L1, L2, L3 и др. ...

Это отчётливо видно на задачах майнинга криптовалюты Monero / XMR ... я специально повторю здесь цифры (эксперимент!) H/s от числа CPU:

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

10  CPU - 4666 H/s - 58.9%
12  CPU - 5564 H/s - 70.2%
16  CPU - 7174 H/s - 90.5%
20  CPU - 7920 H/s - 100%
40  CPU - 5754 H/s - 72.7%
Пик производительности отчётливо совпадает с числом CPU равным числу физических ядер сервера!

В связи с этим, один из стоящих способов гарантироваться от неожиданностей связанных с гипертрэдингом - это отключить его вообще его вообще, что зачастую допускается в BOIS системной платы.

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

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

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

Olej писал(а):
20 фев 2022, 13:46
И вот как, по нумерации процессоров Linux, эти 8 логических процессоров (колонка CPU) парами (за счёт гипертрэдинга) раскладываются по 4-м физическим ядрам (колонка CORE):
Следующим вопросом будет: как, отобрав нужные нам CPU по номерам, указать программному коду (бинарным утилитам системы, или в своём исходном программном коде) какие CPU использовать?

А для этого существует афинити маска процесса. А как её использовать у нас давно существует в форуме обсуждение редкие полезные команды и команда taskset:

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

olej@ESPRIMO:~/2022$ taskset --help
Usage: taskset [options] [mask | cpu-list] [pid|cmd [args...]]

Show or change the CPU affinity of a process.

Options:
 -a, --all-tasks         operate on all the tasks (threads) for a given pid
 -p, --pid               operate on existing given pid
 -c, --cpu-list          display and specify cpus in list format
 -h, --help              показать эту справку
 -V, --version           показать версию

The default behavior is to run a new command:
    taskset 03 sshd -b 1024
You can retrieve the mask of an existing task:
    taskset -p 700
Or set it:
    taskset -p 03 700
List format uses a comma-separated list instead of a mask:
    taskset -pc 0,3,7-11 700
Ranges in list format can take a stride argument:
    e.g. 0-31:2 is equivalent to mask 0x55555555

Для более детальной информации смотрите taskset(1).

Ответить

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

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

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