Hyper Threading e Máquinas Virtuais?

15

Eu já olhei para este tópico: Hyper-V e Hyper-threading: ativado ou desativado? , mas a única resposta é específica do Windows ....

Estou construindo um servidor VM (usando o Proxmox VE, se isso faz diferença) e fiquei pensando sobre como o hiper threading pode afetar as máquinas virtuais ...

Especificamente, se eu maximizar o número de máquinas virtuais, o hyper threading ajudaria ou prejudicaria o desempenho?

Além disso, as maiores máquinas virtuais serão um servidor de terminal com ~ 30 clientes (4 núcleos / 8 GB de RAM) e um servidor de arquivos, se isso ajudar.

Atualização: O servidor é um Dell R410 com 1TB RAID 10, 32 GB de RAM e Dual Intel Xeon E5530 (não tenho certeza do modelo exato, mas era um E55xx com mais de 2 Ghz)

Atualização: a maioria das VMs estará no KVM.

Soviero
fonte
Forneça as especificações do servidor que você planeja usar.
ewwhite
Também curioso. Por que Promox VE versus ESXi?
ewwhite
Provavelmente devido ao limite ESXi de 16GB de RAM na licença livre
Tacticus
3
Eu escolho o Proxmox em vez do ESXi, porque o Proxmox possui alguns recursos extras, como gerenciamento completo a partir de um GUI da Web, clustering, as especificações do servidor não são artificialmente limitadas pelo licenciamento e outras não me lembro bem. Além disso, 2,0 irá incluir autenticação AD que é muito útil para nós, não tenho certeza se ESXi faz ...
Soviero
1
Você já viu o oVirt?
dyasny

Respostas:

12

Em geral, deixo o HyperThreading ON para servidores host VM (VMWare ESXi, KVM, HyperV, etc.). Isso se aplica à Intel Nehalem e às CPUs mais recentes (série 5500 e superior). Threads adicionais disponíveis para agendar várias VMs.

Você também pode reavaliar o tamanho de seus sistemas convidados. Normalmente, é melhor começar pequeno na alocação de CPU com máquinas virtuais. Como você está falando de um servidor de terminal, na verdade eu o moveria para 2 CPUs virtuais em vez de 4 vCPUs. É mais fácil para o hipervisor agendar o tempo de CPU para VMs com contagens de núcleo menores . Porém, a RAM ainda é crítica, portanto, certifique-se de disponibilizar bastante.

Consulte: http://omtconcepts.com/wp/?p=14

ewwhite
fonte
Como exatamente dois threads são mais rápidos que quatro?
Soviero
3
Não é mais rápido ... Mais fácil de agendar. Veja minha edição. A máquina que você mencionou terá 8 núcleos no total (16, com HyperThreading). Tentar encontrar os recursos para agendar um convidado de 4 vCPU é mais difícil do que 2-vCPUs. Você terá mais contenção (e, portanto, menor desempenho). Se você planeja executar outros convidados virtuais neste servidor, faz sentido usar 1 e 2 convidados de vCPU.
ewwhite
3
Seu ponto de vista sobre agendamento se aplica apenas a hipervisores que fazem "agendamento por grupo", onde eles tentam executar alguma aproximação de "todos ou nenhum" dos processadores virtuais ao mesmo tempo. Para hipervisores que fazem isso, adicionar mais processadores virtuais tornará a VM mais difícil de agendar. Entendo que Kevin atualizou sua pergunta para estipular que ele deseja usar o KVM, principalmente. Mas quero ressaltar que o Hyper-V não faz agendamento de gangues. Ele se baseia na paravirtualização do sistema operacional convidado para evitar a necessidade de agendamento de gangues.
Jake Oshins
Eu não sabia disso sobre o Hyper-V, mas isso se aplica a outros hipervisores importantes.
ewwhite
1
A KVM não tem agenda de gangues. Na verdade, apenas VMWare faz isso, e mesmo que eles adicionaram alguns mecanismos para relaxar a insanidade gangue programação em v5
dyasny
4

Isso realmente depende. Se, como você está dizendo, "max out", o que eu suponho significa alocar CPU globalmente (atribuir mais núcleos virtuais de CPU do que você tem disponível, ou exatamente quantos você tiver disponível), então o HT definitivamente deve ser em.

Se você não está alocando de maneira geral, geralmente é melhor testar com suas cargas específicas - às vezes, o HT pode prejudicar o desempenho.

dyasny
fonte
Planejo alocar exatamente quantos núcleos / threads estão disponíveis, mas não pretendo superalocar.
Soviero
Você acha que o sistema operacional host não precisa de tempo de CPU? E se você alocar o número de núcleos-v que possui threads com o HT ativado, na verdade, estará realocando em pelo menos 70-80%, porque mesmo quando o HT aumenta o desempenho, geralmente é de 20 a 30%, no máximo 100%, como se poderia supor a partir da contagem de threads.
26412 dyasny
Ok, então não mais de 12 "núcleos" (75% de 16) alocados?
Soviero 27/02/12
1
Acho que não estava claro o suficiente. Você pode alocar de maneira geral e, dependendo das cargas nas VMs, a CPU pode não se tornar um gargalo. Além disso, você nunca deve atribuir mais CPUs a uma VM do que o absolutamente necessário, porque quanto mais CPUs a VM tiver, mais difícil será agendar, muitos v-cpus podem realmente prejudicar o desempenho. Quanto ao ganho de desempenho de 20% por hyperthreading - isso não é absoluto, o número pode ser um pouco mais alto, mais baixo, zero ou até negativo - dependendo das cargas da VM.
27412 dyasny
Ah ok. Obrigado.
Soviero 27/02
3

Existem muitas variáveis ​​que afetam o desempenho da VM. HT é apenas uma das outras variáveis, mas também depende de como a VM está configurada.

Uma das variáveis ​​que afetam o HT depende do tipo de Hypervisor que está sendo usado.

Se você estiver usando máquinas virtuais leves como VZ, VServer, etc., é óbvio que o HT traria benefícios adequados, pois essas VMs não são realmente muito isoladas e são mais como executar software multithread.

Se você estiver usando máquinas virtuais pesadas como KVM, Xen HVM, etc, é possível que o HT interfira nas coisas, por exemplo, quando uma VM recebe duas CPUs, mas acaba usando uma HT em núcleos diferentes.

Portanto, a melhor coisa a fazer ainda é testar sua configuração para ver o que mais lhe convém.

sybreon
fonte