Как я знаю, какие процессоры являются физическими ядрами?

Можно взглянуть на rlocate, переопределение располагаются, который всегда актуален. Другой интересный проект является recoll, который также поддерживает оперативную индексацию и позволяет, Вы (как гончая) дополнительно делаете полнотекстовые поиски. Наконец я должен упомянуть doodle, который также поддерживает оперативную индексацию. Для doodle существуют некоторые хорошие frontends как зубатка.

Обратите внимание, что можно также заставить (r) определить местоположение результатов, активируемых по щелчку при помощи, например, urxvt как эмулятор терминала и путем записи чего-то как

URxvt.perl-ext: default,matcher URxvt.urlLauncher: /usr/bin/gnome-open     
URxvt.matcher.button: 1 URxvt.matcher.pattern.1: /.*

(и выполнение xrdb -load ~/.Xdefaults впоследствии)

15
07.12.2012, 21:50
5 ответов

Можно знать о каждом ядре процессора путем исследования каждой cpuinfo записи:

processor       : 0
[...]
physical id     : 0
siblings        : 8
core id         : 0
cpu cores       : 4
apicid          : 0

processor       : 1
[...]
physical id     : 0
siblings        : 8
core id         : 1
cpu cores       : 4
apicid          : 2 

processor       : 2
[...]
physical id     : 0
siblings        : 8
core id         : 2
cpu cores       : 4
apicid          : 4 

processor       : 3
[...]
physical id     : 0
siblings        : 8
core id         : 3
cpu cores       : 4
apicid          : 6

processor       : 4
[...]
physical id     : 0
siblings        : 8
core id         : 0
cpu cores       : 4
apicid          : 1

[and so on]

physical id показывает идентификатор процессора. Если у Вас не будет многопроцессорной установки (имеющий два отдельных, физических процессора в машине), это всегда будет 0.

siblings покажите количество процессора, подключенного к тому же физическому процессору.

core id покажите идентификатор текущего ядра, к в общей сложности cpu cores. Можно использовать эту информацию для корреляции, какой виртуальный процессор входит в одноядерное.

apicidoriginal apicid) покажите количество (виртуального) процессора, как дано BIOS.

Обратите внимание, что там 8 одноуровневых элементов и 4 ядра, таким образом, существует 2 виртуальных процессора на ядро. Нет никакого различия между "виртуальным" или "реальным" в гиперпоточности. Но с помощью этой информации можно связаться, какие процессоры от того же ядра.

16
27.01.2020, 19:49

Если Вы видите'ht'флаг в /proc/cpuinfo затем Вам включили гиперпоточность, и каждое реальное ядро разделяется на несколько потоков, нет никакого понятия реального потока и виртуального потока: оба являются эффективно виртуальными.

То, что можно хотеть исследовать, сравнивает ядра и сокеты, используйте'physical id'идентификатор топологии для собирания в группу ядер.

3
27.01.2020, 19:49

. / SYS / SYS файловая система содержит приятный обзор этой информации. Вот пример из коробки квадроциклы SMP с гипермидром:

# grep . /sys/devices/system/cpu/cpu{,1}?/topology/thread_siblings | tr : \\t | sed 's,^,    ,'
/sys/devices/system/cpu/cpu0/topology/thread_siblings   00000000,00000101
/sys/devices/system/cpu/cpu1/topology/thread_siblings   00000000,00000202
/sys/devices/system/cpu/cpu2/topology/thread_siblings   00000000,00000404
/sys/devices/system/cpu/cpu3/topology/thread_siblings   00000000,00000808
/sys/devices/system/cpu/cpu4/topology/thread_siblings   00000000,00001010
/sys/devices/system/cpu/cpu5/topology/thread_siblings   00000000,00002020
/sys/devices/system/cpu/cpu6/topology/thread_siblings   00000000,00004040
/sys/devices/system/cpu/cpu7/topology/thread_siblings   00000000,00008080
/sys/devices/system/cpu/cpu8/topology/thread_siblings   00000000,00000101
/sys/devices/system/cpu/cpu9/topology/thread_siblings   00000000,00000202
/sys/devices/system/cpu/cpu10/topology/thread_siblings  00000000,00000404
/sys/devices/system/cpu/cpu11/topology/thread_siblings  00000000,00000808
/sys/devices/system/cpu/cpu12/topology/thread_siblings  00000000,00001010
/sys/devices/system/cpu/cpu13/topology/thread_siblings  00000000,00002020
/sys/devices/system/cpu/cpu14/topology/thread_siblings  00000000,00004040
/sys/devices/system/cpu/cpu15/topology/thread_siblings  00000000,00008080

одинаковым содержанием обозначает нити одного и того же ядра. Я

  • CPU0 / CPU8
  • CPU1 / CPU9
  • и т. Д.

Существует аналогичная информация в Core_siblings Pseudo-файл, а также еще более топологию информации.

5
27.01.2020, 19:49

Предыдущий ответ очень интересен.

После некоторого гугления, я нашел некоторые связанные темы:

По последней ссылке, скрипт python не работает, когда у вашего хоста много физических ID. Я попытался модифицировать его с другим условием в конце :

Changing:

if p > 0:

to

if p % 2 == 1:

Но он не работает, как ожидалось, исходя из предыдущего сообщения. Кстати, вы можете сделать что-то более комплексное, чем:

grep . /sys/devices/system/cpu/cpu{,1}?/topology/thread_siblings | tr : \\\t | sed -r 's,^,\s\s\s\s,'

с:

for file in /sys/devices/system/cpu/cpu[0-9]*/topology/thread_siblings_list; do echo -n "$file "; cat $file; done |sort -k2 -n

[...]

Что интересно на многоядерном хосте с включенной гиперпоточностью, так это распределение логических ядер по железу.

Например, на одном из моих компьютеров (48 логических ядер, 2 физических процессора, 24 (12*2) "реальных ядра" (таким образом, также 24 виртуальных ядра)) :

for file in /sys/devices/system/cpu/cpu[0-9]*/topology/thread_siblings_list; do echo -n "$file "; cat $file; done |sort -k2 -n

 /sys/devices/system/cpu/cpu0/topology/thread_siblings_list 0,24
 /sys/devices/system/cpu/cpu24/topology/thread_siblings_list 0,24
 /sys/devices/system/cpu/cpu1/topology/thread_siblings_list 1,25
 /sys/devices/system/cpu/cpu25/topology/thread_siblings_list 1,25
 /sys/devices/system/cpu/cpu26/topology/thread_siblings_list 2,26
 /sys/devices/system/cpu/cpu2/topology/thread_siblings_list 2,26
 /sys/devices/system/cpu/cpu27/topology/thread_siblings_list 3,27
 /sys/devices/system/cpu/cpu3/topology/thread_siblings_list 3,27
 /sys/devices/system/cpu/cpu28/topology/thread_siblings_list 4,28
 /sys/devices/system/cpu/cpu4/topology/thread_siblings_list 4,28
 /sys/devices/system/cpu/cpu29/topology/thread_siblings_list 5,29
 /sys/devices/system/cpu/cpu5/topology/thread_siblings_list 5,29
 /sys/devices/system/cpu/cpu30/topology/thread_siblings_list 6,30
 /sys/devices/system/cpu/cpu6/topology/thread_siblings_list 6,30
 /sys/devices/system/cpu/cpu31/topology/thread_siblings_list 7,31
 /sys/devices/system/cpu/cpu7/topology/thread_siblings_list 7,31
 /sys/devices/system/cpu/cpu32/topology/thread_siblings_list 8,32
 /sys/devices/system/cpu/cpu8/topology/thread_siblings_list 8,32
 /sys/devices/system/cpu/cpu33/topology/thread_siblings_list 9,33
 /sys/devices/system/cpu/cpu9/topology/thread_siblings_list 9,33
 /sys/devices/system/cpu/cpu10/topology/thread_siblings_list 10,34
 /sys/devices/system/cpu/cpu34/topology/thread_siblings_list 10,34
 /sys/devices/system/cpu/cpu11/topology/thread_siblings_list 11,35
 /sys/devices/system/cpu/cpu35/topology/thread_siblings_list 11,35
 /sys/devices/system/cpu/cpu12/topology/thread_siblings_list 12,36
 /sys/devices/system/cpu/cpu36/topology/thread_siblings_list 12,36
 /sys/devices/system/cpu/cpu13/topology/thread_siblings_list 13,37
 /sys/devices/system/cpu/cpu37/topology/thread_siblings_list 13,37
 /sys/devices/system/cpu/cpu14/topology/thread_siblings_list 14,38
 /sys/devices/system/cpu/cpu38/topology/thread_siblings_list 14,38
 /sys/devices/system/cpu/cpu15/topology/thread_siblings_list 15,39
 /sys/devices/system/cpu/cpu39/topology/thread_siblings_list 15,39
 /sys/devices/system/cpu/cpu16/topology/thread_siblings_list 16,40
 /sys/devices/system/cpu/cpu40/topology/thread_siblings_list 16,40
 /sys/devices/system/cpu/cpu17/topology/thread_siblings_list 17,41
 /sys/devices/system/cpu/cpu41/topology/thread_siblings_list 17,41
 /sys/devices/system/cpu/cpu18/topology/thread_siblings_list 18,42
 /sys/devices/system/cpu/cpu42/topology/thread_siblings_list 18,42
 /sys/devices/system/cpu/cpu19/topology/thread_siblings_list 19,43
 /sys/devices/system/cpu/cpu43/topology/thread_siblings_list 19,43
 /sys/devices/system/cpu/cpu20/topology/thread_siblings_list 20,44
 /sys/devices/system/cpu/cpu44/topology/thread_siblings_list 20,44
 /sys/devices/system/cpu/cpu21/topology/thread_siblings_list 21,45
 /sys/devices/system/cpu/cpu45/topology/thread_siblings_list 21,45
 /sys/devices/system/cpu/cpu22/topology/thread_siblings_list 22,46
 /sys/devices/system/cpu/cpu46/topology/thread_siblings_list 22,46
 /sys/devices/system/cpu/cpu23/topology/thread_siblings_list 23,47
 /sys/devices/system/cpu/cpu47/topology/thread_siblings_list 23,47

Это означает, что cpu0 и cpu24 имеют один и тот же физический аппаратный "адрес". То же самое для cpu1 и cpu25...

Итак, в принципе, если я хочу отключить гиперпоточность в моей ОС linux, я должен поставить '0' в cpu{24..47}/online с

for fake_cpu in {24..47}; do echo 0 > /sys/devices/system/cpu/cpu$fake_cpu/online;done

Вы заметите, как интересно моя система нумерует ядра.

1
27.01.2020, 19:49

вы также можете использовать lscpu:

# lscpu --all --extended
CPU NODE SOCKET CORE L1d:L1i:L2:L3:L4 ONLINE MAXMHZ    MINMHZ
0   0    0      0    0:0:0:0:0        yes    3200.0000 800.0000
1   0    0      1    1:1:1:0:0        yes    3200.0000 800.0000
2   0    0      2    2:2:2:0:0        yes    3200.0000 800.0000
3   0    0      3    3:3:3:0:0        yes    3200.0000 800.0000
4   0    0      0    0:0:0:0:0        yes    3200.0000 800.0000
5   0    0      1    1:1:1:0:0        yes    3200.0000 800.0000
6   0    0      2    2:2:2:0:0        yes    3200.0000 800.0000
7   0    0      3    3:3:3:0:0        yes    3200.0000 800.0000

здесь логические ядра 0 и 4 идут на ядро ​​0

8
27.01.2020, 19:49

Теги

Похожие вопросы