Gerenciamento de recursos da CPU do host Hyper-V

Os controles de recursos de CPU do host Hyper-V introduzidos em Windows Server 2016 ou posterior permitem que os administradores do Hyper-V gerenciem e aloquem melhor os recursos de CPU do servidor host entre a "raiz", ou partição de gerenciamento e as VMs convidadas. Usando esses controles, os administradores podem dedicar um subconjunto dos processadores de um sistema host à partição raiz. Isso pode separar o trabalho feito em um host Hyper-V das cargas de trabalho em execução em máquinas virtuais convidadas executando-as em subconjuntos separados dos processadores do sistema.

Para obter detalhes sobre hardware para hosts Hyper-V, consulte Windows 10 Requisitos do sistema Hyper-V.

Segundo plano

Antes de definir controles para recursos da CPU do host Hyper-V, é útil examinar os conceitos básicos da arquitetura do Hyper-V. Você pode encontrar um resumo geral na seção Arquitetura do Hyper-V . Estes são conceitos importantes para este artigo:

  • O Hyper-V cria e gerencia partições de máquina virtual, em que os recursos de computação são alocados e compartilhados, sob controle do hipervisor. As partições fornecem limites de isolamento fortes entre todas as máquinas virtuais convidadas e entre as VMs convidadas e a partição raiz.

  • A partição raiz é em si uma partição de máquina virtual, embora tenha propriedades exclusivas e privilégios muito maiores do que as máquinas virtuais convidadas. A partição raiz fornece os serviços de gerenciamento que controlam todas as máquinas virtuais convidadas, fornece suporte a dispositivos virtuais para convidados e gerencia toda a E/S do dispositivo para máquinas virtuais convidadas. A Microsoft recomenda fortemente não executar nenhuma carga de trabalho de aplicativo em uma partição de host.

  • Cada VP (processador virtual) da partição raiz é mapeado 1:1 para um LP (processador lógico) subjacente. Um VP de host sempre será executado no mesmo LP subjacente – não há migração dos VPs da partição raiz.

  • Por padrão, os LPs em que os VPs de host são executados também podem executar VPs convidados.

  • Um VP convidado pode ser agendado pelo hipervisor para ser executado em qualquer processador lógico disponível. Embora o agendador de hipervisor tome cuidado para considerar a localidade do cache temporal, a topologia NUMA e muitos outros fatores ao agendar um VP convidado, em última análise, o VP pode ser agendado em qualquer LP de host.

A raiz mínima ou a configuração "Minroot"

As versões iniciais do Hyper-V tinham um limite máximo de arquitetura de 64 VPs por partição. Isso se aplica às partições raiz e de convidado. Como sistemas com mais de 64 processadores lógicos apareceram em servidores high-end, o Hyper-V também evoluiu seus limites de escala de host para dar suporte a esses sistemas maiores, em um ponto que dá suporte a um host com até 320 LPs. No entanto, quebrar o limite de 64 VP por partição na época apresentou vários desafios e introduziu complexidades que tornaram o suporte a mais de 64 VPs por partição proibitivo. Para resolver isso, o Hyper-V limitou o número de VPs dados à partição raiz para 64, mesmo que o computador subjacente tivesse muito mais processadores lógicos disponíveis. O hipervisor continuaria a utilizar todos os LPs disponíveis para executar VPs convidados, mas limitou artificialmente a partição raiz em 64. Essa configuração ficou conhecida como a configuração "raiz mínima" ou "minroot". Testes de desempenho confirmaram que, mesmo em sistemas de grande escala com mais de 64 LPs, a raiz não precisava de mais de 64 VPs raiz para fornecer suporte suficiente a um grande número de VMs convidadas e VPs convidados – na verdade, muito menos de 64 VPs raiz eram frequentemente adequados, dependendo, é claro, do número e tamanho das VMs convidadas, as cargas de trabalho específicas que estão sendo executadas, etc.

Esse conceito de "minroot" continua a ser utilizado hoje. De fato, mesmo que Windows Server 2016 Hyper-V tenha aumentado seu limite máximo de suporte arquitetônico para LPs de host para 512 LPs, a partição raiz ainda será limitada a um máximo de 320 LPs.

Usando Minroot para restringir e isolar recursos de computação de host

Com o limite padrão alto de 320 LPs em Windows Server 2016 Hyper-V, a configuração de minroot só será utilizada nos maiores sistemas de servidor. No entanto, essa funcionalidade pode ser configurada para um limite muito menor pelo administrador do host Hyper-V e, portanto, aproveitada para restringir consideravelmente a quantidade de recursos de CPU do host disponíveis para a partição raiz. O número específico de LPs raiz a serem utilizados deve, naturalmente, ser escolhido com cuidado para dar suporte às demandas máximas das VMs e cargas de trabalho alocadas ao host. No entanto, valores razoáveis para o número de LPs de host podem ser determinados por meio de avaliação cuidadosa e monitoramento de cargas de trabalho de produção e validados em ambientes de não produção antes da implantação ampla.

Habilitando e configurando Minroot

A configuração de minroot é controlada por meio de entradas BCD do hipervisor. Para habilitar minroot, de um prompt cmd com privilégios de administrador:

     bcdedit /set hypervisorrootproc n

Onde n é o número de VPs raiz.

O sistema deve ser reinicializado e o novo número de processadores raiz persistirá durante o tempo de vida da inicialização do sistema operacional. A configuração de minroot não pode ser alterada dinamicamente no runtime.

Se houver vários nós NUMA, cada nó obterá n/NumaNodeCount processadores.

Observe que, com vários nós NUMA, você deve garantir que a topologia da VM seja tal que haja LPs gratuitos suficientes (ou seja, LPs sem VPs raiz) em cada nó NUMA para executar os VPs de nó NUMA da VM correspondente.

Verificando a configuração minroot

Você pode verificar a configuração de minroot do host usando o Gerenciador de Tarefas, conforme mostrado abaixo.

Host's minroot configuration shown in Task Manager

Quando o Minroot estiver ativo, o Gerenciador de Tarefas exibirá o número de processadores lógicos atualmente alocados para o host, além do número total de processadores lógicos no sistema.