Gerenciamento de recursos de CPU do host do Hyper-V

Os controles de recursos de CPU do host do Hyper-V apresentados no 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 partição de gerenciamento ou "raiz" 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 do 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 o hardware para hosts do Hyper-V, consulte Requisitos do sistema Hyper-V do Windows 10.

Tela de fundo

Antes de definir os controles para recursos de CPU do host do 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. Confira os conceitos importantes para este artigo:

  • O Hyper-V cria e gerencia partições de máquina virtual, nas quais 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 nos quais os VPs 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 tenha o cuidado de considerar a localidade do cache temporal, a topologia NUMA e muitos outros fatores ao agendar um VP convidado, o VP pode ser agendado em qualquer LP de host.

A configuração de raiz mínima ou "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. À medida que sistemas com mais de 64 processadores lógicos apareciam 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 gerou complexidades que tornaram proibitivo o suporte a mais de 64 VPs por partição. 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 de "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 de raiz para fornecer suporte suficiente a um grande número de VMs e VPs convidados. Na verdade, geralmente eram adequados muito menos de 64 VPs de raiz, dependendo, é claro, do número e do tamanho das VMs convidadas, das cargas de trabalho específicas que estão sendo executadas etc.

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

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

Com o limite padrão alto de 320 LPs no Hyper-V do Windows Server 2016, a configuração da minroot só será utilizada nos maiores sistemas de servidor. No entanto, essa funcionalidade pode ser configurada para um limite muito menor pelo administrador de host do Hyper-V e, portanto, aproveitada para restringir consideravelmente a quantidade de recursos da 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 do 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.

Habilitar e configurar minroot

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

     bcdedit /set hypervisorrootproc n

Em que 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 da minroot não pode ser alterada dinamicamente no runtime.

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

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

Verificar a configuração da minroot

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

Host's minroot configuration shown in Task Manager

Quando a minroot estiver ativa, o Gerenciador de Tarefas exibirá o número de processadores lógicos alocados para o host no momento, além do número total de processadores lógicos no sistema.