Número de processadores lógicos por VM?

7

Eu tenho um servidor (quad core) executando o Windows Hyper-V Server 2008 R2 com duas máquinas virtuais convidadas do Windows Server 208 R2 Standard.

Eu notei que a configuração número de processadores lógicos (na página de configurações Processador ) para cada padrão de VM é 1, mas permite que eu escolha qualquer coisa de 1 a 4 "processadores virtuais" (ou "processadores lógicos" equivalentemente, suponho).

Minhas perguntas são: a) Esses "processadores virtuais" / "processadores lógicos" são mapeados diretamente para núcleos em minha CPU quad-core Intel Q6600? b) É aconselhável definir o número como 2 para ambas as VMs convidadas neste caso? Isso deixa potência de CPU suficiente para o host do Hyper-V?

Além do poder de processamento, também estou me perguntando se / como posso reservar uma certa quantidade de RAM para o host do Hyper-V.

    
por Noldorin 09.12.2011 / 23:14

2 respostas

4

É um trade-off. Digamos que você tenha quatro núcleos físicos e duas VMs.

Se você mapear dois núcleos virtuais em cada VM, praticamente cada convidado verá o que espera. Ele verá dois núcleos que espera ter controle total e mais ou menos conseguir isso. (Assumindo que a carga do host não seja alta.) Você não confundirá o planejador do convidado com um caso em que ele atribui uma tarefa a um núcleo esperando que a tarefa seja executada imediatamente e, em vez disso, a tarefa não é executada porque não há núcleo físico acessível. No entanto, se um convidado estiver com falta de CPU e o outro estiver ocioso, dois núcleos estarão girando o dedo.

Por outro lado, se você der a cada convidado quatro núcleos virtuais, cada convidado poderá usar todo o poder de CPU disponível quando o outro convidado e o host não precisarem dele. No entanto, quando há carga de outra fonte, o agendador do convidado não obterá o comportamento esperado e algumas tarefas serão iniciadas imediatamente e outras não serão de maneira que o agendador do convidado não possa facilmente esperar e lidar.

Minha recomendação é geralmente colocar quantos núcleos físicos você tiver em cada VM que possa precisar de muita CPU. A exceção seria se você tiver VMs que são extremamente dependentes da latência. Também reduziria a contagem de núcleos em VMs "menores" ou "menos importantes" que compartilham uma caixa física com VMs mais críticas.

O hypervisor atribui núcleos lógicos a núcleos físicos como parte de sua política de agendamento. Não há mapeamento fixo, a menos que você faça especificamente um. (O que não recomendo, exceto no caso específico em que você deseja reservar um núcleo para uma VM crítica à latência).

    
por 10.12.2011 / 00:29
1

Não, não há mapeamento direto de processador lógico vs processador físico ... per se ... basicamente um novo thread é criado para cada processador lógico com a afinidade definida para um núcleo físico específico ... então cada thread pode consumir 100% dos recursos em cada núcleo. A alocação de 2 máquinas a todos os 4 núcleos (núcleos lógicos 2x4) pode ou não ser uma boa ideia. Se suas aplicações são intensivas em cpu ... ou geram muitos threads em ambas as máquinas ... ambos irão atrasar periodicamente esperando que o outro termine ... atribuir núcleos dedicados por instância significa que haverá tarefas de lançamento com atrasos mínimos em a CPU.

Você não pode realmente dedicar uma quantidade específica de RAM ao host ... além de limitar a quantidade que os convidados podem consumir. Você pode em outras estruturas virtuais ... mas o hyper-v é o novo garoto no bloco sem todos os sinos & assobios dos veteranos.

    
por 09.12.2011 / 23:28