Как я могу проверить, что Ubuntu активировал гиперпоточность?

13

У меня такое чувство, что на моем компьютере не активирована гиперпоточность. Я посмотрел /proc/cpuinfoи там описывается, что у братьев и сестер есть то же число, что и у процессорных ядер. Это означает, что гиперпоточность не активирована. Как я могу активировать это?

Часть записи /proc/cpuinfo:

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 23
model name  : Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz
stepping    : 6
cpu MHz     : 2997.000
cache size  : 6144 KB
physical id : 0
siblings    : 2
core id     : 0
cpu cores   : 2
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 10
wp      : yes
grenzfrequence
источник

Ответы:

15

/ sys / bus / cpu / devices / cpu * / topology / thread_siblings_list показывает расположение ядер и гиперпотоков. Для облегчения визуализации я рекомендую использовать команду lstopo, установить с:

sudo apt-get install hwloc

и запустить с:

lstopo

Мой рабочий стол ivybridge имеет 4 процессора; у каждого есть гиперпотока, поэтому мы получаем диаграмму с ядрами P # 0..3, и у каждого есть два PU (один из них является гиперпоточностью):

введите описание изображения здесь

Если вы хотите просто текстовую версию этого вывода, используйте:

lstopo -
Колин Ян Кинг
источник
Не уверен, почему никто еще не проголосовал за это ... Это действительно хорошая утилита.
Гек Беннетт
это супер круто Вы видите общий кэш, ядра, гиперпотоки все в одном изображении
Silver Moon
9

Запустите topв терминале, нажмите число 1на клавиатуре, чтобы показать нагрузку на процессор в заголовке, сколько процессоров там описано?

Если они дублируют реальные ядра в вашем процессоре, то гиперпоточность работает так, как и должна.

Бруно Перейра
источник
7

Чтобы определить, используете ли вы гиперпоточность (также известную как Intel Hyperthreading Technology), вы можете использовать dmidecode .

В терминале:

sudo dmidecode > /tmp/dmidecode.txt
gksudo gedit /tmp/dmidecode.txt

Найдите значение состояния Заполнено, Включено (показано ниже между * ... *), т. Е. «Включено» означает, что гиперпоточность активна

Physical CPU
Handle 0x000C, DMI type 4, 32 bytes
Processor Information
Socket Designation: Socket 1 CPU 1
Type: Central Processor
Family: Xeon
Manufacturer: GenuineIntel
ID: 43 0F 00 00 01 03 00 00
Signature: Type 0, Family 15, Model 4, Stepping 3
Flags:
FPU (Floating-point unit on-chip)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
Version: Intel Xeon
Voltage: 1.5 V
External Clock: 200 MHz
Max Speed: 4000 MHz
Current Speed: 3800 MHz
Status: *Populated, Enabled*
Upgrade: ZIF Socket
L1 Cache Handle: 0x0004
L2 Cache Handle: 0x0005
L3 Cache Handle: Not Provided

В гиперпоточном логическом процессоре вы увидите значение «Состояние не заполнено» (показано ниже между * ... *):

Handle 0x000D, DMI type 4, 32 bytes
Processor Information
Socket Designation: Socket 2 CPU 2
Type: Unknown
Family: Unknown
Manufacturer: Not Specified
ID: 00 00 00 00 00 00 00 00
Version: Not Specified
Voltage: 1.5 V
External Clock: 200 MHz
Max Speed: 4000 MHz
Current Speed: 3800 MHz
Status: *Unpopulated*
Upgrade: ZIF Socket
L1 Cache Handle: 0x0006
L2 Cache Handle: 0x0007
L3 Cache Handle: Not Provided

источник

свобода ископаемых
источник
Ядро Linux определяет количество процессоров и братьев и сестер из CPU (используя перечисление топологии CPUID), а не используя данные DMI, сконфигурированные в BIOS. Я подозреваю, что данные DMI конфигурируются во время загрузки из тех же данных CPUID, которые использует ядро, однако, вероятно, лучше доверять тому, что определено ядром Linux, а не из данных DMI. Как это бывает, в большинстве случаев BIOS, вероятно, делает это правильно.
Колин Ян Кинг
Выходные данные dmicode не изменяются, если гиперпоточность отключена - это просто указывает, поддерживает ли процессор гиперпоточность. Например, на процессорной системе i7-6600U с отключенной гиперпоточностью dmidecode | grep -i populaтакже печатается Status: Populated, Enabled. Смотрите также мой ответ .
maxschlepzig
2

в результате dmidecode вы можете получить что-то вроде

    Core Count: 6
    Core Enabled: 6
    Thread Count: 12

на серверах с гипер-нитью, установленной на ON

или

    Core Count: 6
    Core Enabled: 6
    Thread Count: 6

на тех, которые установлены на OFF

user56344
источник
Это не работает Thread CountНе изменится , если гиперпотоковое отключено, например , в системе i7-6600U с технологией HyperThreading инвалидов dmidecode | grep '\(Core\|Thread\).*:'гравюр Core Count: 2 Core Enabled: 2 Thread Count: 4.
maxschlepzig
0

Спойлер: ваш процессор не поддерживает гиперпоточность .

Альтернатива консультирования базы данных поставщика CPU является проверка /proc/cpuinfoдля htфлага:

$ grep -o '\<ht\>' /proc/cpuinfo

Даже если гиперпоточность отключена в BIOS, флаг должен быть включен в этот вывод.

Чтобы проверить, включена ли на самом деле гиперпоточность, вы можете обратиться к другому псевдо-файлу :

$ cat /sys/devices/system/cpu/smt/control

Возможные значения: on|off|forceoff|notsupported|notimplemented

Вы можете включить / отключить гиперпоточность, записав on/ offв этот псевдофайл, например:

# echo off > /sys/devices/system/cpu/smt/control

Конечно, это не работает, если catранее напечатан один из forceoff|notsupported|notimplemented.

Обычно гиперпоточность включена по умолчанию. И если он отключен, это обычно делается в BIOS. Если он отключен в BIOS, этот псевдо-файл, скорее всего, содержит, forceoffи вам нужно изменить настройки в BIOS.

maxschlepzig
источник