Gerenciar tipos de agendador de hipervisor Hyper-V

Aplica-se a: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server versão 1803, Windows Server versão 1709, Windows 10

Este artigo descreve novos modos de lógica de agendamento de processador virtual introduzidos no Windows Server 2016. Esses modos ou tipos de agendador determinam como o hipervisor do Hyper-V aloca e gerencia o trabalho entre processadores virtuais convidados. Um administrador de host do Hyper-V pode:

  • Selecione os tipos de agendador de hipervisor mais adequados para as máquinas virtuais (VMs) convidadas.
  • Configure VMs para aproveitar a lógica de agendamento.

Pré-requisitos

Você deve instalar as atualizações a seguir para usar os recursos do agendador de hipervisor descritos posteriormente neste artigo. Essas atualizações incluem alterações para dar suporte à nova opção BCD hypervisorschedulertype, que é necessária para a configuração do host.

Versão Liberação Atualização necessária Artigo do KB
Windows Server 2016 1607 2018.07 C KB4338822
Windows Server 2016 1703 2018.07 C KB4338827
Windows Server 2016 1709 2018.07 C KB4338817
Windows Server 2019 1804 Não Não

Tela de fundo

Antes de discutir a lógica e os controles por trás do agendamento do processador virtual Hyper-V, é importante entender determinados conceitos, como o multithreading simultâneo e como o Hyper-V virtualiza os processadores.

Entender o SMT

O multithreading simultâneo (SMT) é uma técnica em designs de processador modernos que permite que threads de execução independentes e separados compartilhem recursos do processador. O SMT geralmente oferece um aumento de desempenho modesto para a maioria das cargas de trabalho. Ele paraleliza os cálculos quando possível, aumentando a taxa de transferência de instrução. No entanto, também há momentos em que não há nenhuma melhoria perceptível no desempenho ou até mesmo uma pequena perda quando os threads competem entre si por recursos de processador compartilhados.

Para usar o SMT com o Windows Server, você deve ter um processador compatível. Por exemplo, um processador com tecnologia Intel Hyper-Threading ou SMT (Advanced Micro Devices) Multithreading (AMD).

Para fins deste artigo, as descrições do SMT e como ele é usado pelo Hyper-V se aplicam igualmente aos sistemas Intel e AMD.

Entender como o Hyper-V virtualiza processadores

Antes de considerar os tipos de agendador de hipervisor, você deve entender a arquitetura do Hyper-V. Você pode encontrar um resumo mais detalhado de como essa arquitetura funciona na visão geral da tecnologia Hyper-V, mas por enquanto, você deve ter os seguintes conceitos em mente:

  • O Hyper-V cria e gerencia partições de VM, alocando e compartilhando recursos de computação entre elas, sob controle do hipervisor. As partições fornecem limites de isolamento fortes entre todas as VMs convidadas e entre as VMs convidadas e a partição raiz.

  • A partição raiz é em si uma partição de VM, embora tenha propriedades exclusivas e privilégios maiores do que as VMs convidadas. A partição raiz:

    • Fornece os serviços de gerenciamento que controlam todas as VMs convidadas.
    • Fornece suporte a dispositivos virtuais para convidados.
    • Gerencia toda a entrada e saída do dispositivo para VMs convidadas.

    É recomendável não executar nenhuma carga de trabalho de aplicativo na partição raiz.

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

  • Por padrão, os LPs que hospedam a execução de VPs da partição raiz também podem executar VPs convidados.

  • O hipervisor pode agendar o VP convidado para ser executado em qualquer processador lógico disponível. Embora o agendador do hipervisor tente considerar a localidade do cache temporal, a topologia de acesso à memória não uniforme (NUMA) e muitos outros fatores ao agendar um VP convidado, em última análise, o VP pode ser agendado em qualquer LP de host.

Tipos de agendador do hipervisor

No Windows Server 2016, o hipervisor hyper-V dá suporte a vários modos de lógica do agendador, que determinam como o hipervisor agenda processadores virtuais nos processadores lógicos subjacentes. Esses tipos de agendador são:

O agendador clássico

O agendador clássico tem sido o padrão para todas as versões do hipervisor do Hyper-V do Windows desde sua criação, incluindo o Hyper-V do Windows Server 2016. O agendador clássico fornece um modelo de agendamento de compartilhamento justo, preemptivo e round robin para processadores virtuais convidados.

O tipo de agendador clássico é o mais apropriado para a maioria dos usos tradicionais do Hyper-V, como nuvens privadas, provedores de hospedagem e assim por diante. As características de desempenho do tipo de agendador clássico são melhor otimizadas para dar suporte a uma ampla gama de cenários de virtualização, como:

  • Subscrição excessiva de VPs para LPs.
  • Execução de muitas VMs heterogêneas e cargas de trabalho ao mesmo tempo.
  • Executando VMs de alto desempenho de maior escala.
  • Suporte ao conjunto de recursos completo do Hyper-V sem restrições e outros cenários.

O agendador principal

O agendador principal do hipervisor é uma alternativa à lógica do agendador clássico, introduzida no Windows Server 2016 e no Windows 10 versão 1607. O agendador principal oferece um limite de segurança forte para o isolamento da carga de trabalho de convidado. Ele também reduz a variabilidade de desempenho para cargas de trabalho dentro de VMs em execução em um host de virtualização habilitado para SMT. O agendador principal dá suporte à execução de VMs SMT e não SMT simultaneamente no mesmo host de virtualização habilitado para SMT.

O agendador principal:

  • Usa a topologia SMT do host de virtualização.
  • Opcionalmente, expõe pares SMT a VMs convidadas.
  • Agenda grupos de processadores virtuais convidados da mesma VM para grupos de processadores lógicos SMT.

Esse trabalho ocorre simetricamente. Se os LPs estiverem em grupos de dois, os VPs serão agendados em grupos de dois e um núcleo nunca será compartilhado entre VMs. Quando você agenda o VP para uma VM sem SMT habilitado, esse VP consome todo o núcleo quando ele é executado. O resultado geral do agendador principal é que:

  • Isso cria um limite de segurança forte para o isolamento da carga de trabalho de convidado. Os VPs convidados são restritos a serem executados em pares de núcleos físicos subjacentes, reduzindo a vulnerabilidade a ataques de espionagem de canal lateral.
  • Isso reduz a variabilidade na taxa de transferência.
  • Isso pode reduzir o desempenho. Se apenas um VP de um grupo puder ser executado, apenas um dos fluxos de instrução no núcleo será iniciado enquanto o outro ficar ocioso.
  • O sistema operacional e os aplicativos em execução na VM convidada podem usar o comportamento SMT e as APIs (interfaces de programação) para controlar e distribuir o trabalho entre threads SMT, da mesma forma que fariam com uma máquina física.

A partir do Windows Server 2019, o Hyper-V usa o agendador principal por padrão. Em versões anteriores, como o Windows Server 2016, o agendador era opcional e o agendador clássico é a opção padrão.

Comportamento do agendador principal com SMT do host desabilitado

Em alguns casos, você pode configurar o hipervisor para usar o tipo de agendador principal, mas a funcionalidade SMT está desabilitada ou não está presente no host de virtualização. Nesses casos, o Hyper-V usa o comportamento do agendador clássico independentemente da configuração do tipo de agendador do hipervisor.

O agendador raiz

O agendador raiz chegou com o Windows 10, versão 1803. Quando você habilita o tipo de agendador raiz, o hipervisor fornece o controle de partição raiz do agendamento de trabalho. O agendador NT na instância do sistema operacional da partição raiz gerencia todos os aspectos do trabalho de agendamento para LPs do sistema.

O agendador raiz atende aos requisitos exclusivos para dar suporte a uma partição de utilitário e fornecer isolamento de carga de trabalho forte, conforme usado com o WDAG (Windows Defender Application Guard). Neste cenário, deixar as responsabilidades de agendamento para o sistema operacional raiz oferece várias vantagens:

  • Você pode usar controles de recursos de CPU aplicáveis a cenários de contêiner com a partição do utilitário, simplificando o gerenciamento e a implantação.
  • O agendador raiz do sistema operacional pode coletar prontamente métricas sobre o uso da CPU da carga de trabalho dentro do contêiner. Ele pode usar esses dados como entrada para a mesma política de agendamento aplicável a todas as outras cargas de trabalho no sistema.
  • Essas mesmas métricas também ajudam a atribuir o trabalho realizado em um contêiner de aplicativo para o sistema de host. O acompanhamento dessas métricas é mais difícil com cargas de trabalho de VM tradicionais, em que alguns funcionam em nome de todas as VMs em execução na partição raiz.

Uso do agendador raiz em sistemas cliente

A partir do Windows 10 versão 1803, o agendador raiz é usado por padrão somente em sistemas cliente. Isso significa que:

  • Você pode habilitar o hipervisor para dar suporte à segurança baseada em virtualização e ao isolamento da carga de trabalho WDAG.
  • É importante operar corretamente sistemas futuros com arquiteturas principais heterogêneas.

Essa é a única configuração do agendador do hipervisor com suporte para sistemas cliente. Os administradores não devem tentar substituir o tipo de agendador de hipervisor padrão em sistemas clientes do Windows.

Controles de recursos de CPU da máquina virtual e o agendador raiz

Não há suporte para controles de recursos de processador de VM fornecidos pelo Hyper-V quando você habilita o agendador raiz do hipervisor. A lógica do agendador do sistema operacional raiz gerencia os recursos de host globalmente e não está gerenciando os recursos convidados de uma única VM. Os controles de recursos de processador do Hyper-V por VM, como limites, pesos e reservas, somente são aplicáveis quando o hipervisor controla diretamente o agendamento de VP, como com os tipos de agendador clássico e principal.

Uso do agendador raiz em sistemas de servidor

Não recomendamos usar o agendador raiz com o Hyper-V em servidores. Suas características de desempenho ainda não foram totalmente caracterizadas e ajustadas para acomodar a ampla gama de cargas de trabalho típicas de muitas implantações de virtualização de servidor.

Habilitar o SMT em VMs convidadas

Depois que você configurar o hipervisor do host de virtualização para usar o tipo de agendador principal, você também poderá configurar VMs convidadas para usar o SMT. Expor o fato de que os VPs são hiperthreaded para uma VM convidada permite que o agendador no sistema operacional convidado e cargas de trabalho em execução na VM detectem e usem a topologia SMT em seu próprio agendamento de trabalho.

  • No Windows Server 2016, o SMT convidado não está configurado por padrão. Um administrador de host do Hyper-V deve habilitá-lo explicitamente.
  • A partir do Windows Server 2019, novas VMs que você criou no host herdam a topologia SMT do host por padrão. Por exemplo, uma VM versão 9.0 que você cria em um host com dois threads SMT por núcleo também teria dois threads SMT por núcleo.

Você deve usar o PowerShell para habilitar o SMT em uma VM convidada. Não há nenhuma interface do usuário fornecida no Gerenciador do Hyper-V. Para habilitar o SMT em uma VM convidada:

  1. Abra uma janela do PowerShell usando uma conta que seja membro do grupo de administradores do Hyper-V ou equivalente.
  2. Execute Set-VMProcessor -VMName <VMName> -HwThreadCountPerCore <n>, onde <n> é o número de threads SMT por núcleo que a VM convidada vê. <n> = 0 define o valor HwThreadCountPerCore para corresponder à contagem de threads SMT do host por valor principal.

Observação

No Windows Server 2019 e posterior, você pode definir HwThreadCountPerCore = 0 em vez de corresponder à contagem de threads SMT do host.

A captura de tela a seguir mostra as informações do sistema obtidas do sistema operacional convidado em execução em uma VM. Há dois processadores virtuais e SMT habilitados. O sistema operacional convidado está detectando dois processadores lógicos que pertencem ao mesmo núcleo.

Screenshot that shows msinfo32 in a guest VM with SMT enabled.

Configurar o tipo de agendador de hipervisor no Hyper-V do Windows Server 2016

O Hyper-V do Windows Server 2016 usa o modelo de agendador do hipervisor clássico por padrão. Opcionalmente, você pode configurar o hipervisor para usar o agendador principal. O agendador principal aumenta a segurança restringindo os VPs convidados a serem executados em pares SMT físicos correspondentes. Essa configuração dá suporte ao uso de VMs com agendamento SMT para seus VPs convidados.

Observação

Recomendamos que todos os clientes que executam o Hyper-V do Windows Server 2016 selecionem o agendador principal para garantir que seus hosts de virtualização estejam protegidos de forma ideal contra VMs convidadas potencialmente mal-intencionadas.

O Hyper-V do Windows Server 2019 usa como padrão o agendador principal

Para garantir que os hosts Hyper-V sejam implantados na configuração de segurança ideal, o Hyper-V do Windows Server 2019 agora usa o modelo de agendador de hipervisor principal por padrão. Opcionalmente, o administrador do host pode configurar o host para usar o agendador clássico herdado. Antes de substituir as configurações padrão, os administradores devem ler, entender e considerar cuidadosamente os impactos que cada tipo de agendador tem sobre a segurança e o desempenho dos hosts de virtualização. Para obter mais informações, confira Sobre a seleção de tipo de agendador de hipervisor Hyper-V.

Selecione o tipo de agendador de hipervisor no Windows Server

A configuração do agendador do hipervisor é controlada por meio da entrada BCD hypervisorschedulertype.

Para selecionar um tipo de agendador:

  1. Abra um prompt de comando com privilégios de administrador.
  2. Insira bcdedit /set hypervisorschedulertype type, onde type é uma dessas opções:
  • Classic
  • Core
  • Root

Você deve reinicializar o sistema para que as alterações que fez no tipo de agendador do hipervisor entrem em vigor.

Observação

O agendador raiz do hipervisor não tem suporte no Hyper-V do Windows Server no momento. Os administradores do Hyper-V não devem tentar configurar o agendador raiz para uso com cenários de virtualização de servidor.

Determinar o tipo de agendador atual

Você pode determinar qual tipo de agendador de hipervisor o Hyper-V está usando examinando o log do sistema do Visualizador de Eventos. Você pode ver a ID de evento de inicialização do hipervisor 2 mais recente, que relata o tipo de agendador de hipervisor configurado na inicialização do hipervisor. Você pode obter os eventos de inicialização do hipervisor no Visualizador de Eventos do Windows ou no PowerShell.

A ID 2 de evento de inicialização do hipervisor 2 indica o tipo de agendador do hipervisor, em que:

  • 1 = Agendador clássico, SMT desabilitado
  • 2 = Agendador clássico
  • 3 = Agendador principal
  • 4 = Agendador raiz

A screenshot of the hypervisor launch event ID 2 properties window. The user has selected the General tab, showing that the hypervisor scheduler type is 0x2.

A screenshot of the Event Viewer window. The user has selected Hyper-V Hypervisor launch event ID 2 from the list of events, highlighting it in dark blue.

Consultar o evento de inicialização do tipo do agendador do hipervisor Hyper-V usando o PowerShell

Para consultar o ID 2 do evento do processo de trabalho do Hyper-V usando o PowerShell, execute os comandos a seguir em um prompt do PowerShell:

Get-WinEvent -FilterHashTable @{ProviderName="Microsoft-Windows-Hyper-V-Hypervisor"; ID=2} -MaxEvents 1

A screenshot of a query for hypervisor launch event ID 2. The results say hypervisor scheduler type is 0x2.