como posso testar se o ubuntu ativou o hyperthreading?

13

Tenho a sensação de que o hyperthreading não está ativado no meu PC. Dei uma olhada /proc/cpuinfoe é descrito que os irmãos têm o mesmo número que os núcleos da CPU. Isso significa que o hyperthreading não está ativado. Como posso ativá-lo?

Entradas de peças de /proc/cpuinfo:

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 23
model name  : Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz
stepping    : 6
cpu MHz     : 2997.000
cache size  : 6144 KB
physical id : 0
siblings    : 2
core id     : 0
cpu cores   : 2
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 10
wp      : yes
grenzfrequence
fonte

Respostas:

15

/ sys / bus / cpu / devices / cpu * / topology / thread_siblings_list mostra o layout de núcleos e hyperthreads. Para facilitar a visualização, recomendo usar o comando lstopo, instale com:

sudo apt-get install hwloc

e corra com:

lstopo

Meu desktop ivybridge possui 4 CPUs; cada um tem um hyperthread, então obtemos um diagrama com os Núcleos P # 0..3 e cada um possui dois PUs (um deles é o hyperthread):

insira a descrição da imagem aqui

Se você deseja apenas uma versão em texto dessa saída, use:

lstopo -
Colin Ian King
fonte
Não sei por que ninguém votou nisso ainda ... Este é um utilitário muito bom.
Huck Bennett #
isso é super legal. você vê o total de cache, núcleos, hyperthreads tudo em imagem 1
Silver Moon
9

Funcione topem um terminal, pressione o número 1no teclado para mostrar a carga por CPU no cabeçalho. Quantos cpus estão descritos lá?

Se eles são o dobro dos núcleos reais no hyperthreading da CPU, está funcionando como deveria.

Bruno Pereira
fonte
7

Para detectar se você está usando hyperthreading (também conhecido como Intel Hyperthreading Technology), pode usar o dmidecode .

Em um terminal:

sudo dmidecode > /tmp/dmidecode.txt
gksudo gedit /tmp/dmidecode.txt

Procure um valor Status preenchido, ativado (mostrado abaixo entre * ... *), ou seja, "Ativado" significa que o hyperthreading está ativo

Physical CPU
Handle 0x000C, DMI type 4, 32 bytes
Processor Information
Socket Designation: Socket 1 CPU 1
Type: Central Processor
Family: Xeon
Manufacturer: GenuineIntel
ID: 43 0F 00 00 01 03 00 00
Signature: Type 0, Family 15, Model 4, Stepping 3
Flags:
FPU (Floating-point unit on-chip)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
Version: Intel Xeon
Voltage: 1.5 V
External Clock: 200 MHz
Max Speed: 4000 MHz
Current Speed: 3800 MHz
Status: *Populated, Enabled*
Upgrade: ZIF Socket
L1 Cache Handle: 0x0004
L2 Cache Handle: 0x0005
L3 Cache Handle: Not Provided

Em uma CPU lógica Hyperthreaded, você verá um valor Status de não preenchido (mostrado abaixo entre * ... *):

Handle 0x000D, DMI type 4, 32 bytes
Processor Information
Socket Designation: Socket 2 CPU 2
Type: Unknown
Family: Unknown
Manufacturer: Not Specified
ID: 00 00 00 00 00 00 00 00
Version: Not Specified
Voltage: 1.5 V
External Clock: 200 MHz
Max Speed: 4000 MHz
Current Speed: 3800 MHz
Status: *Unpopulated*
Upgrade: ZIF Socket
L1 Cache Handle: 0x0006
L2 Cache Handle: 0x0007
L3 Cache Handle: Not Provided

fonte

liberdade de expressão
fonte
O kernel do Linux determina o número de CPUs e irmãos da CPU (usando a enumeração de topologia CPUID) em vez de usar os dados DMI configurados do BIOS. Suspeito que os dados DMI estejam configurados no momento da inicialização a partir dos mesmos dados CPUID que o kernel usa; no entanto, provavelmente é melhor confiar no que o kernel Linux determinou, e não nos dados DMI. Por acaso, na maioria dos casos, o BIOS provavelmente acerta.
Colin Ian rei
A saída do dmicode não muda se o hyperthreading estiver desativado - apenas indica se a CPU suporta hyperthreading. Por exemplo, em um sistema de CPU i7-6600U com hyperthreading desativado dmidecode | grep -i populatambém é impresso Status: Populated, Enabled. Veja também minha resposta .
maxschlepzig
2

no resultado do dmidecode, você pode obter algo como

    Core Count: 6
    Core Enabled: 6
    Thread Count: 12

em servidores com hiper thread definido como ON

ou

    Core Count: 6
    Core Enabled: 6
    Thread Count: 6

naqueles definidos como OFF

user56344
fonte
Isso não funciona. A Thread Countnão muda se hyperthreading está desativado, por exemplo, em um sistema i7-6600U com HyperThreading deficientes dmidecode | grep '\(Core\|Thread\).*:'impressões Core Count: 2 Core Enabled: 2 Thread Count: 4.
maxschlepzig
0

Spoiler: sua CPU não suporta hyperthreading .

Uma alternativa para consultar o banco de dados do fornecedor da CPU é verificar /proc/cpuinfoo htsinalizador:

$ grep -o '\<ht\>' /proc/cpuinfo

Mesmo se o hyperthreading estiver desativado no BIOS, o sinalizador deve ser incluído nessa saída.

Para verificar se o hyperthreading está realmente ativado, você pode consultar outro pseudo arquivo :

$ cat /sys/devices/system/cpu/smt/control

Os valores possíveis são: on|off|forceoff|notsupported|notimplemented

Você pode ativar / desativar o hyperthreading gravando on/ offno pseudo arquivo, por exemplo:

# echo off > /sys/devices/system/cpu/smt/control

Obviamente, isso não funcionará se o catanterior foi impresso forceoff|notsupported|notimplemented.

Normalmente, o hyperthreading é ativado, por padrão. E se estiver desabilitado, geralmente é feito no BIOS. Se estiver desabilitado no BIOS, esse pseudo arquivo provavelmente contém forceoffe você precisará alterar a configuração no BIOS.

maxschlepzig
fonte