Hyper-V e Hyper-threading: ativado ou desativado?

23

Com as novas CPUs Xeon suportando Hyper-threading, qual é a sabedoria atual em relação ao uso (ou não) em uma máquina host Hyper-V?

Eu estava originalmente com a impressão de que ativá-lo em um ambiente de host virtual poderia ser prejudicial, pois as CPUs 'extras' não eram núcleos verdadeiros. No entanto, eu também li comentários (não confirmados) ao longo das linhas da MS fazendo algum trabalho duro para que o Hyper-V funcione bem em um ambiente Hyper-threading.

Alguém tem alguma informação ou experiência sólida a esse respeito? Felicidades!

CapBBeard
fonte

Respostas:

5

O antigo problema com o Hyper-Threading no Virtual Server 2005, sem ser excessivamente técnico, é que o cache da CPU estava sendo envenenado, ou seja, estava armazenando quase nada em cache porque os contextos do que estava acontecendo em cada thread não eram relacionados - fazendo com que eles competissem pelo cache no chip.

Os chips mais novos têm caches maiores e mais inteligentes, portanto isso é menos problemático.

É ideal ativar ou desativar? Isso realmente depende da carga de trabalho. Se os dois threads estiverem executando a mesma VM e a mesma tarefa, quase certamente seria uma grande vantagem. Se eles estivessem fazendo coisas não relacionadas com muitas E / S de RAM aleatórias (várias VMs diferentes, por exemplo), faria com que apenas metade do cache do chip estivesse disponível para cada uma - o que, em teoria, poderia ser mais lento - na realidade, raramente é mais.

Se você possui chips de geração mais antiga, pode querer verificar o tamanho do cache de chips: Na virtualização, quanto maior o cache, melhor. A RAM realmente é MUITO mais lenta que as CPUs - mas não é PRÓXIMA tão ruim quanto as unidades de disco.

NOTA: O que você está lendo que diz "desligar" foi encontrado com relação aos chips que eram de núcleo único com o Hyper-Threading - Por exemplo, essa foi a resposta oficial no dia (2005/2006?) - http: //www.VirtualServerFAQ .com / tiki-index.php? page = VirtualServerHostDualCore

Steve Radich http://www.VirtualServerFAQ.com

Steve Radich-BitShop.com
fonte
21

De acordo com o Windows IT Pro, você deseja deixá-lo ativado:

R. O novo processador Intel Core i7 de quatro núcleos permite o hyperthreading, que divide cada núcleo do processador em dois núcleos virtuais para (potencialmente) melhorar o desempenho.

A preocupação com o Hyper-V e o hyper-threading é que você atribua vários núcleos de processador a cada máquina virtual (VM). Imagine que você atribua um processador a cada duas VMs convidadas no console de gerenciamento do Hyper-V, pensando que cada uma usará um núcleo separado. E se o hypervisor atribuir cada uma das VMs ao mesmo núcleo físico, cada uma recebendo um núcleo virtual? Você poderia obter um desempenho ruim e três núcleos físicos não fazendo muito, onde gostaria que cada VM tivesse seu próprio núcleo físico.

Felizmente, este não é o caso. A Microsoft fez muito trabalho em torno do Hyper-Threading e Hyper-V. Essencialmente, embora o Hyper-Threading às vezes ajude o desempenho, ele nunca prejudicará o desempenho, portanto, o Hyper-Threading deve estar ativado.

Sean Earp
fonte
Hmm obrigado pela resposta. Isso pode ser o que eu li originalmente. Eles dizem para deixá-lo ligado, mas parece bem vazio; Não estou particularmente convencido. Talvez seja só eu.
CapBBeard 29/07/2009
6

Os programas que conhecem o hyperthreading são capazes de distinguir entre um núcleo físico e um núcleo lógico (virtual) e alocar recursos de acordo.

O hyperthreading diminui o custo da alternância de contexto, permitindo que os estados de dois processos sejam armazenados a qualquer momento, em vez de apenas um estado por vez. A troca de contexto é normalmente considerada muito cara, porque você precisa carregar todo o estado de um processo na CPU. Isso significa que, se você tiver um processo intensivo de CPU em execução, a CPU com hyperthread pode frequentemente alternar entre esse processo e outros, sem causar muito impacto no desempenho.

A vantagem de executar servidores virtuais é que você pode criar um grande conjunto de recursos que pode ser alocado para diferentes servidores em tempo real, conforme necessário. Isso inclui realocar núcleos da CPU e equilibrar a carga entre todos os núcleos disponíveis. Se o hipervisor não souber a diferença entre um núcleo físico e um núcleo lógico, então você está certo - alguns núcleos físicos podem ficar ociosos enquanto outros ficam vinculados a 100% de utilização da CPU, enquanto os dois núcleos lógicos competem pela CPU Tempo. No entanto, se o hipervisor puder distinguir a diferença entre os núcleos físicos e lógicos, tentará equilibrar a carga da CPU entre as CPUs físicas antes de alocar vários processos para dois núcleos lógicos que pertencem ao mesmo núcleo físico.

roubar
fonte
2

Não estudei o problema em detalhes, mas a Microsoft não recomenda o uso de hyperthreading no Exchange 2010 devido a problemas de "planejamento e monitoramento de capacidade". Você pode testar suas próprias cargas de trabalho antes de escolher uma configuração ou outra.

duffbeer703
fonte
-2

Hyperthreading: Uau, processadores gratuitos!

Desligue isso. Embora as implementações modernas do SMT (simultâneo multithreading), também conhecidas como hyperthreading, possam melhorar absolutamente o rendimento da CPU para a maioria dos aplicativos, os benefícios do Exchange 2013 não superam os impactos negativos. Acontece que pode haver um impacto significativo na utilização da memória nos servidores Exchange quando o hyperthreading é ativado devido à maneira como o coletor de lixo do servidor .NET aloca pilhas. O coletor de lixo do servidor examina o número total de processadores lógicos quando um aplicativo é iniciado e aloca um heap por processador lógico. Isso significa que o uso de memória na inicialização de um de nossos serviços usando o coletor de lixo do servidor será quase o dobro com o hyperthreading ativado vs. quando estiver desativado. Esse aumento significativo na memória, juntamente com uma análise do aumento real da taxa de transferência da CPU para cargas de trabalho do Exchange 2013 em testes internos de laboratório, nos levou a uma recomendação de práticas recomendadas de que o hyperthreading deve ser desabilitado para todos os servidores Exchange 2013. Os benefícios não superam o impacto negativo.

Copiado de: http://blogs.technet.com/b/exchange/archive/2013/05/06/ask-the-perf-guy-sizing-exchange-2013-deployments.aspx

user226342
fonte
3
Estou confuso; por que você está mencionando troca? a questão é sobre o impacto no hipervisor. E, na verdade, o parágrafo abaixo do copiado continua dizendo que o hyperthreading não afeta um servidor de troca virtualizado, se eu estiver lendo direito.
24415 Andy