Sistema 1: Caderno
Detecte a CPU instalada:
$ cat /proc/cpuinfo | grep "model name" | head -1
model name : Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
- não. dos Núcleos 2
- não. de Tópicos 4
Detectar núcleos e threads:
$ sudo dmidecode -t processor | grep -E '(Core Count|Thread Count)'
Core Count: 2
Thread Count: 4
Conclusão: A contagem de núcleos e a contagem de threadsencaixacom a ficha técnica.
Sistema 2: PC de mesa
Detecte a CPU instalada:
$ cat /proc/cpuinfo | grep "model name" | head -1
model name : Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
- não. dos Núcleos 4
- não. de Tópicos 8
Detectar núcleos e threads:
$ sudo dmidecode -t processor | grep -E '(Core Count|Thread Count)'
Core Count: 4
Thread Count: 2
Conclusão: A contagem de núcleos e a contagem de threadsnãoajuste com a folha de dados.
Questões
- Como ler as planilhas de dados da Intel e a saída de
dmidecode
? - Quantos núcleos eu tenho?
- Quantos threads cada núcleo tem?
- Quantos threads todo o sistema tem?
[Editar] Atualização 1
Desktop PC
$ lscpu | grep -i -E "^CPU\(s\):|core|socket"
CPU(s): 8
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
Lendo de baixo para cima:
- Eu tenho 1 soquete com 4 cors, cada um com 2 threads => 8 threads no total (CPUs)
Conclusão: A contagem de núcleos e a contagem de threadsencaixacom a ficha técnica.
Caderno
$lscpu | grep -i -E "^CPU\(s\):|core|socket"
CPU(s): 4
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
Lendo de baixo para cima:
- Tenho 1 soquete com 2 cors, cada um com 2 threads => 4 threads no total (CPUs)
Conclusão: A contagem de núcleos e a contagem de threadsencaixacom a ficha técnica.
[EDITAR] Atualização 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
Responder1
- Consulte sempre a ficha técnica
- Eu tinha o mesmo CPU (a versão K, às vezes faço overclock do CPU nas horas vagas) e você tem 4 núcleos e 8 threads, 100% garantido.
- Normalmente, cada núcleo possui 2 threads.
- Eu não conhecia dmidecode antes de hoje :/
Isso é o que escrevi como comentário em sua pergunta. Também compartilhei um link com você e estou feliz que você tenha resolvido o problema com as instruções daquela página.
Este é o link: http://fibrevillage.com/sysadmin/155-how-to-tell-if-cpu-hyperthreading-enabled-on-linux
Eu li que
Nota: em máquinas antigas, o dmidecode pode não fornecer informações detalhadas da CPU, como contagem de núcleos, contagem de threads, etc.
mas o 4770 não é tão antigo, ainda é um ótimo CPU.
De qualquer forma, existem outras soluções e fico feliz que uma delas tenha funcionado para você!
No específico: lscpu | grep -i -E "^CPU\(s\):|core|socket"
Não recebo nenhum crédito por isso, é claro! Acredito que seja melhor apenas escrever a resposta e fechá-la, se você acredita que resolveu!
Responder2
Em primeiro lugar, HTT habilitado significa que existem dois threads por núcleo.
Agora, em relação à dmidecode
saída, algo está acontecendo, pois lista 4 núcleos e 2 threads de saída conforme você citou inicialmente.
Sua dmidecode
produção completa, entretanto, sugere algo quepoderiafaz sentido.
Core Count: 4
Core Enabled: 1
Thread Count: 2
Agora, por que diz que apenas 1 núcleo está habilitado? Vejo duas opções principais:
- apenas um núcleo está habilitado (a causa mais óbvia).
Talvez verifique se todos os núcleos estão realmente habilitados (configuração UEFI/BIOS Setup), mas os resultados de outras ferramentas sugerem que os núcleos estão habilitados. - algo está errado nos dados DMI do seu sistema
A dmidecode
saída é, como o nome da ferramenta sugere, baseada na leitura dos dados DMI do sistema e na decodificação deles. Portanto, é bem provável que dados defeituosos não sejam causados pela dmidecode
ferramenta em si, mas pelas tabelas DMI/SMBIOS do seu sistema contendo valores incorretos.
Quanto à folha de dados, ela pode ser confiável em relação às capacidades do chip em si, mas isso pode responder a uma pergunta um pouco diferente daquela disponível em seu ambiente (já que existem opções de configuração que podem ativar/desativar algumas das funcionalidades).