desabilita o hyperthreading em um computador Dell com vários núcleos

1

Eu tenho um desktop Dell executando o Windows 7 Professional. Eu acho que o processador é um Intel Core i7-2600

Recentemente, um especialista em computadores especializado em clusters Linux estava olhando para meu PC de mesa e comentou que minha máquina tinha 8 threads. Ele disse que isso significa que a máquina tem 4 núcleos: 2 threads por núcleo. Eu não sabia que a máquina tinha mais de um núcleo.

Agora que sei que a máquina aparentemente tem quatro núcleos, espero poder executar talvez três modelos simultaneamente, um modelo em cada um dos três núcleos.

Alguém sugeriu que eu "desligasse o hyperthreading" para que eu "pudesse usar todo o núcleo por modelo". Caso contrário, ele escreveu "funciona a meia velocidade".

Eu rodei muitos modelos usando o Program R e o cavalheiro do computador que estava me ajudando apontou que um dos meus arquivos de script R mostrava uma mensagem dizendo que ele estava usando 7 de 8 threads. Então, dado que o arquivo R estava usando 2 threads por núcleo com três dos núcleos, talvez desligar o hyperthreading não aumentasse a velocidade de computação no meu caso?

Se desligar o hyperthreading aumentaria a velocidade de computação dos scripts R, como eu poderia fazer isso?

Eu procurei na internet um pouco e encontrei uma discussão sobre o assunto neste fórum:

link

Um comentário no fórum que me preocupa é a afirmação de que:

"O maior problema para aqueles que querem desligar o HT, é que muitos fabricantes de computadores (HP, Dell) não permitem que as pessoas que compram seus computadores a opção BIOS desligue o HT. E já que o Windows parece na configuração de HT no BIOS para determinar se deve lidar com HT, é um caso de estar preso em marcha lenta e sem capacidade de mudar para cima. "

Como meu computador é um Dell, talvez eu não consiga desativar o hyper-threading.

Eu também encontrei este post no Superusuário:

Desative o Hyperthreading no registro do Windows 7

Uma resposta parecia particularmente útil, mas complexa, lidando com hexadecimais, e o computador em questão era um HP. Eu não sei se isso é importante.

Parece haver alguns outros posts aqui sobre hyperthreads, mas o imediatamente acima se aproxima da minha situação daqueles que li.

Desculpe se esta questão é uma duplicata. Se eu precisar fornecer informações adicionais ou esclarecer minhas preocupações, terei prazer em fazê-lo.

    
por Mark Miller 15.11.2012 / 00:14

1 resposta

3

Por que não há opção no BIOS?

Suponho que o motivo pelo qual a Dell e os amigos muitas vezes não adicionam uma opção para desativar isso é porque raramente é uma boa ideia. Em média, o seu computador ficará mais lento (ou, de um ponto de vista diferente, tornará os computadores dos concorrentes relativamente mais rápidos).

Tendo dito isso, vamos dar uma olhada em alguns exemplos imaginários:

O que o HT faz?

1 core, sem hyper-threading

  • 1 processo de ligação da CPU está sendo executado e pode ser executado e a velocidade máxima. Vamos chamar essa velocidade 1 ou 100%
  • 2 processos ligados à CPU em execução. A CPU terá que alternar entre os dois. A velocidade efetiva em ambos os processos é aproximadamente reduzida à metade. (A soma de ambas as velocidades ainda é igual ao primeiro exemplo).
  • 3 processos ligados à CPU em execução. A CPU terá que alternar entre os três. A velocidade efetiva em ambos os processos é de aproximadamente um terço. (A soma de ambas as velocidades ainda é a mesma (3 x 0,33 = 1).

2 núcleos, sem hyper-threading

  • 1 processo de ligação da CPU * 0 está em execução e pode ser executado e a velocidade máxima para esse núcleo. (velocidade 100%) (o outro núcleo está inativo).
  • 2 processos ligados à CPU em execução. Ambos podem funcionar na velocidade máxima para o seu núcleo. (velocidade de 200%)
  • 3 processos ligados à CPU em execução. Normalmente, você obtém 3 tarefas rodando a uma eficiência de 2/3. (A soma das velocidades ainda é '2'. Aproximadamente 2 porque você perde um pouco devido a sobrecarga extra e falta de cache). (velocidade de 200%, ou talvez 190%)

Agora, núcleos com hyper-threading. Estes atuam como dois núcleos, mas não dois núcleos completos. O que a Intel define como hyper-threading mudou um pouco ao longo do tempo, mas geralmente se resume a isso. Uma CPU busca dados da memória e calcula. Se não precisar do barramento de memória, uma segunda parte da CPU pode fazer um trabalho limitado. Como nem todo hardware é duplicado, você não obtém dois núcleos completos. No entanto, com hardware extra limitado (10%?) Você ganha em média 30% de velocidade. * 1

1 núcleo, com  - 1 processo de limite de CPU está sendo executado e pode ser executado e velocidade máxima. (100%)  - 2 processos ligados à CPU em execução. A CPU terá que alternar entre os dois. No entanto, tem algum hardware extra. A velocidade líquida será cerca de 30% mais rápida (digamos velocidade de 133% para um único núcleo)

Etc.

Tanto para a introdução ao HT.

Estes% fictícios são reais?

Não. Primeiro de tudo você vai perder eficiência devido a sobrecarga. (10 tarefas em uma CPU não serão executadas mais lentamente do que apenas uma tarefa sem comutadores de contexto e com todo o cache para seus dados).

Em segundo lugar, ignorei totalmente o aumento do turbo, pois isso complicaria a explicação.

O que meu amigo possivelmente quis dizer?

Vamos dar uma olhada no seu processador de 8 núcleos de 8 núcleos assim:
Core 1, CPU 1 (real)
Core 1, CPU 2 (com HT)
Core 2, CPU 3 (real)
Core 2, CPU 4 (com HT)
Core 3, CPU 5 (real)
Core 3, CPU 6 (com HT)
Core 4, CPU 7 (real)
Núcleo 4, CPU 8 (com HT)

Se eu executar duas tarefas, não quero as duas na CPU1 e na CPU2 (já que elas compartilham um núcleo real) e o resultado líquido está próximo da metade da velocidade possível. Isso pode ser o que seu amigo quis dizer.

Embora seja verdade, acho que você não precisa se preocupar. O agendador de janelas é inteligente o suficiente para alocar processos primeiro para as CPUs 1,3,5,7 e só então para 2,4,6,8.


* 0 Um processo de limite da CPU é um processo que é limitado pela CPU. Se um processo está esperando por diskIO e a CPU está ociosa, você obtém resultados totalmente diferentes.

* 1 Por favor, pegue esses números com um grão de sal. Eles não são precisos. Eles variam por geração de CPU e até por modelo de CPU. Eles irão variar por programa. E o que a Intel chama de hyper-threading mudou desde as primeiras gerações de CPU. No entanto, eles dão uma ideia aproximada.

    
por 15.11.2012 / 00:47