Понимание Intel HTT
Система 1: ноутбук
Определить установленный процессор:
$ cat /proc/cpuinfo | grep "model name" | head -1
model name : Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
- нет. ядер 2
- нет. темы 4
Определить ядра и темы:
$ sudo dmidecode -t processor | grep -E '(Core Count|Thread Count)'
Core Count: 2
Thread Count: 4
Вывод: количество ядер и количество потоков соответствуют данным таблицы.
Система 2: Настольный ПК
Определить установленный процессор:
$ cat /proc/cpuinfo | grep "model name" | head -1
model name : Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
- нет. ядер 4
- нет. тем 8
Определить ядра и темы:
$ sudo dmidecode -t processor | grep -E '(Core Count|Thread Count)'
Core Count: 4
Thread Count: 2
Вывод: количество ядер и число потоков не соответствуют данным таблицы.
Вопросы
- Как читать таблицы данных Intel и вывод
dmidecode
? - Сколько ядер у меня есть?
- Сколько ниток у каждого ядра?
- Сколько потоков у всей системы?
[Редактировать] Обновление 1
Настольный ПК
$ lscpu | grep -i -E "^CPU\(s\):|core|socket"
CPU(s): 8
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
Чтение снизу вверх:
- У меня есть 1 сокет с 4 ядрами, каждый с 2 потоками => 8 потоков в общей сложности (процессоры)
Вывод: количество ядер и количество потоков соответствуют данным таблицы.
Ноутбук
$lscpu | grep -i -E "^CPU\(s\):|core|socket"
CPU(s): 4
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
Чтение снизу вверх:
- У меня есть 1 сокет с 2 ядрами, каждый с 2 потоками => 4 потока в общей сложности (процессоры)
Вывод: количество ядер и количество потоков соответствуют данным таблицы.
[РЕДАКТИРОВАТЬ] Обновление 2
$ sudo dmidecode -t processor
# dmidecode 2.12
SMBIOS 2.7 present.
Handle 0x0041, DMI type 4, 42 bytes
Processor Information
Socket Designation: SOCKET 0
Type: Central Processor
Family: Core i7
Manufacturer: Intel
ID: C3 06 03 00 FF FB EB BF
Signature: Type 0, Family 6, Model 60, Stepping 3
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
DE (Debugging extension)
PSE (Page size extension)
TSC (Time stamp counter)
MSR (Model specific registers)
PAE (Physical address extension)
MCE (Machine check exception)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
SEP (Fast system call)
MTRR (Memory type range registers)
PGE (Page global enable)
MCA (Machine check architecture)
CMOV (Conditional move instruction supported)
PAT (Page attribute table)
PSE-36 (36-bit page size extension)
CLFSH (CLFLUSH instruction supported)
DS (Debug store)
ACPI (ACPI supported)
MMX (MMX technology supported)
FXSR (FXSAVE and FXSTOR instructions supported)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Multi-threading)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Voltage: 1.1 V
External Clock: 100 MHz
Max Speed: 7000 MHz
Current Speed: 3700 MHz
Status: Populated, Enabled
Upgrade: Other
L1 Cache Handle: 0x0004
L2 Cache Handle: 0x0005
L3 Cache Handle: 0x0006
Serial Number: Not Specified
Asset Tag: Fill By OEM
Part Number: Fill By OEM
Core Count: 4
Core Enabled: 1
Thread Count: 2
Characteristics:
64-bit capable
2 ответа
Прежде всего, включенный HTT означает, что на ядро приходится два потока.
Теперь относительно dmidecode
вывод, что-то не так, как он перечисляет 4 ядра, вывод 2 потоков, как вы изначально процитировали.
Ваш полный dmidecode
однако вывод указывает на то, что может иметь смысл.
Core Count: 4
Core Enabled: 1
Thread Count: 2
Теперь, почему это говорит, что только 1 ядро включено? Я вижу два основных варианта:
- включено только одно ядро (наиболее очевидная причина)
Возможно, убедитесь, что все ядра действительно включены (настройка UEFI/BIOS Setup), но результаты других инструментов показывают, что ядра включены. - что-то не так в данных DMI вашей системы
dmidecode
Вывод, как следует из названия инструмента, основан на чтении данных DMI системы и их декодировании. Следовательно, весьма вероятно, что ошибочные данные не вызваны dmidecode
инструмент, но с помощью таблиц DMI / SMBIOS вашей системы, содержащих неправильные значения.
Что касается таблицы данных, то ей можно доверять в отношении возможностей самого чипа, но это может быть ответом на несколько иной вопрос, чем то, что доступно в вашей среде (поскольку существуют параметры конфигурации, которые могут включать / отключать некоторые функции).
- Всегда обращайтесь к таблице
- У меня был такой же процессор (версия K, иногда я разгонял процессор в свободное время), и у вас было 4 ядра и 8 потоков, 100% гарантировано.
- Обычно каждое ядро имеет 2 потока.
- Я не знал dmidecode до сегодняшнего дня:/
Это то, что я написал вам как комментарий к вашему вопросу. Я также поделился ссылкой с вами, и я рад, что вы решили ее с помощью инструкций на этой странице.
Это ссылка: http://fibrevillage.com/sysadmin/155-how-to-tell-if-cpu-hyperthreading-enabled-on-linux
Я прочитал это
Примечание: на старой машине dmidecode может не дать вам подробную информацию о процессоре, такую как количество ядер, количество потоков и т. Д.
но 4770 не такой уж старый, он все еще отличный процессор.
В любом случае, есть и другие решения, и я рад, что одно из них сработало для вас!
В частности: lscpu | grep -i -E "^CPU\(s\):|core|socket"
Конечно, я не воздаю должное за это! Я считаю, что лучше написать ответ и закрыть его, если вы считаете, что решили!