Понимание 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"

Конечно, я не воздаю должное за это! Я считаю, что лучше написать ответ и закрыть его, если вы считаете, что решили!

Другие вопросы по тегам