Страницы

Поиск по вопросам

понедельник, 16 декабря 2019 г.

Как в программе узнать, есть ли в CPU Hyper-threading ?

#cpu #linux


Подозреваю, что это можно взять из /proc/cpuinfo, возможно из:
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc rep_good pni ssse3 lahf_lm

или из другого места (?), навскидку ничего больше из /proc/cpuinfo не подходит.
На первый взгляд флаг ht говорит о Hyper-threading. Но, это I5-2500, а в его описании
сказано, что 4 core без Hyper-Threading. Поэтому ht это скорее всего Hyper-Transport.
Здесь сказано, что Hyper-Threading это HTT/HT (видимо иногда метят по разному ?).
Собственно интересен также AMD аналог (не знаю как называется).
Никто не знает, что и где точно смотреть в Linux?    


Ответы

Ответ 1



Чтобы установить поддержку Hyper-Threading, нужно проверить CPUID (genuine Intel CPU) и значение бита № 28 регистра EDX (установлен в 1). По ссылке можно скачать утилиту CPUCount, которая как-то работает с Hyper-Threading.

Ответ 2



флаг ht действительно говорит о наличии у процессора возможности HyperThreading. есть поле cpu cores - оно говорит о числе реальных ядер, есть поле siblings - оно говорит о числе виртуальных ядер. По их соотношению можно узнать о наличии HyperThreading и о числе потоков на одно физическое ядро.

Комментариев нет:

Отправить комментарий