У меня такое ощущение, что гиперпоточность не активирована на моем компьютере. Я посмотрел в /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
Чтобы обнаружить при использовании гиперпоточности (иначе 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
/ sys / bus / cpu / devices / cpu * / topology / thread_siblings_list показывает расположение ядер и гиперпотоков. Чтобы упростить визуализацию, я рекомендую использовать команду lstopo, установить с:
sudo apt-get install hwloc
и запустить с:
lstopo
Мой рабочий стол ivybridge имеет 4 процессора; у каждого есть гиперпотока, поэтому мы получаем диаграмму с ядрами P # 0..3, и у каждого есть два PU (один из них является гиперпоточностью):
Если вы хотите просто текстовую версию этого вывода, используйте:
lstopo -
в результате использования dmidecode вы можете получить что-то вроде
Core Count: 6
Core Enabled: 6
Thread Count: 12
на серверах с гипер-нитью, установленной на ON
или
Core Count: 6
Core Enabled: 6
Thread Count: 6
на этих установленных выключить
Запустите top
в терминале, нажмите клавишу 1
на клавиатуре, чтобы показать загрузку на процессор в заголовке, сколько процессоров там описано?
Если они вдвое больше реальных ядер в гиперпоточность вашего процессора работает как надо.
Спойлер: Ваш ЦП не поддерживает гиперпоточность.
Альтернатива консалтингу с базой данных поставщика ЦП должна проверить /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.