Você verificou as configurações da BIOS, ou seja, se o hyperthreading não estiver ativado na sua BIOS, não estará operacional.
Eu tenho um servidor Dell com dois processadores Intel Xeon E5645, cada cpu tem seis núcleos e cada núcleo é hyperthreaded (ou seja, deve ser equivalente a dois núcleos virtuais). Eu instalei o CentOS 6.2 neste servidor e ele parece detectar apenas 12 núcleos (embora deva haver 24 núcleos virtuais no total).
Quando olho para /proc/cpuinfo
, obtenho para cada cpu:
cpu cores: 6
siblings: 6
O que parece indicar que o número de núcleos é igual ao número de núcleos virtuais ou o hyperthreading não detectado / ativado.
Quando executo o dmidecode
, vejo que o sinalizador HT está ativado e vejo o seguinte, que parece indicar que o BIOS está configurado corretamente para o hyperthreading.
Core Count: 6
Core Enabled: 6
Thread Count: 12
Existe alguma configuração que estou perdendo para fazer o Linux detectar todos os núcleos virtuais?
Você verificou as configurações da BIOS, ou seja, se o hyperthreading não estiver ativado na sua BIOS, não estará operacional.
Na configuração do kernel do Linux, existe uma opção chamada
CONFIG_NR_CPUS
Sua descrição na documentação do kernel:
This allows you to specify the maximum number of CPUs which this kernel will support. The maximum supported value is 512 and the minimum value which makes sense is 2.
Verifique este valor e aumente, se necessário. Claro, você precisa recompilar seu kernel depois.
Tags cpu linux centos hyperthreading