Partilhar via


Gerir tipos de agendador do hipervisor Hyper-V

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

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

Contexto geral

Antes de considerar a lógica e os controlos por trás do agendamento do processador virtual Hyper-V, é importante entender certos conceitos como multithreading simultâneo (SMT) e como os processadores são virtualizados pelo Hyper-V.

Entenda o SMT

SMT é uma técnica no design moderno do processador que fornece uma maneira para threads de execução separados e independentes compartilharem recursos do processador. O SMT geralmente dá um impulso de desempenho modesto às cargas de trabalho. Ele paraleliza cálculos quando possível, aumentando a taxa de transferência de instruções. No entanto, quando os threads competem entre si por recursos de processador compartilhados, às vezes não há nenhuma melhoria percetível no desempenho. Pode até haver uma ligeira diminuição no desempenho.

Para usar o SMT com o Windows Server, você deve ter um processador compatível. Processadores com Tecnologia Intel Hyper-Threading (Tecnologia Intel HT) ou Advanced Micro Devices (AMD) SMT são exemplos de processadores compatíveis.

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

Compreender como Hyper-V virtualiza processadores

Antes de considerar os tipos de agendador de hipervisor, é importante que compreendas a arquitetura do Hyper-V. Para obter um resumo detalhado de como essa arquitetura funciona, consulte Visão geral da tecnologiaHyper-V. Por enquanto, tenha em mente os seguintes conceitos:

  • Hyper-V cria e gerencia partições 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 VM, embora tenha propriedades exclusivas e maiores privilégios do que as VMs convidadas. A partição raiz:

    • Fornece serviços de gerenciamento que controlam todas as VMs convidadas.
    • Fornece suporte a dispositivos virtuais para convidados.
    • Gerencia todas as entradas e saídas de dispositivos para VMs convidadas.

    Recomendamos não executar nenhuma carga de trabalho de aplicativo na partição raiz.

  • Existe um mapeamento um-para-um entre os processadores virtuais da partição raiz e os processadores lógicos subjacentes. Um processador virtual host sempre é executado no mesmo processador lógico subjacente. Não há migração de processadores virtuais de partição raiz.

  • Por padrão, os processadores lógicos que hospedam os processadores virtuais de partição raiz também podem executar processadores virtuais convidados.

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

Tipos de agendador de hipervisor

O hipervisor Hyper-V suporta 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 é o agendador padrão usado em todas as versões do Hyper-V anteriores ao Windows Server 2019. O agendador clássico fornece um modelo de agendamento round-robin preventivo e de compartilhamento justo para processadores virtuais convidados.

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

  • Sobre-subscrição de processadores virtuais em processadores lógicos.
  • Executando muitas VMs e cargas de trabalho heterogêneas ao mesmo tempo.
  • Execução de VMs de alto desempenho em grande escala.
  • Suporte ao conjunto completo de recursos de Hyper-V sem restrições e outros cenários.

O agendador principal

O agendador principal do hipervisor é uma alternativa à lógica clássica do agendador. O agendador principal está disponível a partir do Windows Server 2016 e do Windows 10 versão 1607. O agendador principal oferece um forte limite de segurança para o isolamento da carga de trabalho do convidado. Ele também reduz a variabilidade de desempenho para cargas de trabalho dentro de VMs que são executadas em um host de virtualização habilitado para SMT. O agendador principal suporta a execução de VMs SMT e não SMT ao mesmo tempo 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.
  • Programa grupos de processadores virtuais convidados da mesma VM para grupos de processadores lógicos SMT.

Este trabalho acontece de forma simétrica. Se os processadores lógicos estiverem em grupos de dois, os processadores virtuais serão agendados em grupos de dois e um núcleo nunca será compartilhado entre VMs. Quando você agenda um processador virtual para uma VM sem o SMT habilitado, esse processador virtual consome todo o núcleo quando é executado. Quando você usa o agendador principal:

  • Ele cria um forte limite de segurança para o isolamento da carga de trabalho do convidado. Os processadores virtuais convidados só podem ser executados em pares de núcleos físicos subjacentes, reduzindo a vulnerabilidade a ataques de espionagem de canais laterais.
  • Reduz a variabilidade no rendimento.
  • Pode potencialmente reduzir o desempenho. Se apenas um processador virtual em um grupo puder ser executado, apenas um dos fluxos de instruções no núcleo será iniciado. O outro fica ocioso.
  • O sistema operacional (SO) e os aplicativos em execução na VM convidada podem usar o comportamento SMT e interfaces de programação (APIs) para controlar e distribuir o trabalho entre threads SMT, assim como fazem com uma máquina física.

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

Comportamento do agendador principal com o SMT do host desativado

Em alguns casos, você pode configurar o hipervisor para usar o tipo de agendador principal, mas o recurso SMT está desabilitado ou não está presente no host de virtualização. Nesses casos, Hyper-V usa o comportamento clássico do agendador, 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 dá à partição raiz o controle do agendamento de trabalho. Na instância do sistema operacional de partição raiz, o agendador NT gerencia todos os aspetos da atribuição de trabalho aos processadores lógicos do sistema.

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

  • Pode utilizar controlos de recursos da CPU aplicáveis a cenários de contentores com a partição de serviço, simplificando assim a gestão e a implementação.
  • O agendador raiz do sistema operacional pode facilmente coletar métricas sobre o uso da CPU pela carga de trabalho dentro do contêiner. Ele pode usar esses dados como entrada para a política de agendamento e aplicá-los a todas as outras cargas de trabalho no sistema.
  • Essas mesmas métricas também ajudam a atribuir o trabalho feito em um contêiner de aplicativo ao sistema host. O acompanhamento dessas métricas é mais difícil com cargas de trabalho de VM tradicionais, onde alguns trabalhos em nome de todas as VMs em execução ocorrem 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 apenas em sistemas cliente, o que significa:

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

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

Controles de recursos da CPU da VM e o agendador raiz

Os controles de recurso que o hipervisor Hyper-V usa em processadores VM individuais não são suportados quando você habilita o agendador raiz do hipervisor. No sistema operacional raiz, a lógica do agendador gerencia os recursos do host em uma base global e não gerencia os recursos convidados de VMs individuais. Os controles de recursos do processador Hyper-V por VM, como limites, pesos e reservas, só se aplicam quando o hipervisor controla diretamente o agendamento do processador virtual, como com os tipos de agendador clássico e principal.

Uso do agendador raiz em sistemas de servidor

Não recomendamos o uso do agendador raiz com Hyper-V nos servidores. Suas características de desempenho ainda não estão 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 SMT em VMs convidadas

Depois de configurar o hipervisor do host de virtualização para usar o tipo de agendador principal, pode-se também configurar as VMs hóspedes para usar o SMT. Especificamente, você pode especificar o número de threads SMT virtuais a serem expostos a uma VM convidada. O agendador de SO convidado e as cargas de trabalho de VM podem detetar e usar a topologia SMT em seu próprio agendamento de trabalho.

  • No Windows Server 2016, o SMT convidado não é configurado por padrão. Um administrador de host Hyper-V deve habilitá-lo explicitamente.
  • No Windows Server 2019 e versões posteriores, as novas VMs criadas 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 tem dois threads SMT por núcleo.

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

  1. Abra uma janela do PowerShell usando uma conta que seja membro do grupo Administradores do Hyper-V ou equivalente.

  2. Executar Set-VMProcessor -VMName <VM-name> -HwThreadCountPerCore <n>, onde <n> é o número de threads SMT por núcleo que a VM convidada vê. Se você usar um valor de 0 para <n>, o valor de HwThreadCountPerCore será definido como a contagem de threads SMT do host por núcleo.

    Observação

    O Windows Server 2016 não suporta a configuração HwThreadCountPerCore como 0.

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

Captura de tela da janela Informações do sistema. A linha Processador está selecionada. Ele lista informações sobre um núcleo e dois processadores.

Configurar o tipo de agendador do hipervisor

O tipo de agendador de hipervisor que Hyper-V usa por padrão depende da versão do sistema operacional. Não importa qual agendador é o padrão em seu sistema operacional, você pode configurar o hipervisor para usar o agendador principal. O agendador principal aumenta a segurança restringindo os processadores virtuais convidados para serem executados em pares SMT físicos correspondentes. Essa configuração suporta o uso de VMs com agendamento SMT para seus processadores virtuais convidados.

Observação

No Windows Server 2016, o Hyper-V usa o agendador clássico por padrão. Se você usar Hyper-V no Windows Server 2016 ou posterior, recomendamos que selecione o agendador principal. Fazer essa mudança garante que seus hosts de virtualização estejam protegidos de forma ideal contra VMs convidadas potencialmente mal-intencionadas.

Considerar os impactos na segurança e no desempenho

Para ajudar a garantir que Hyper-V hosts sejam implantados em uma configuração de segurança ideal, o Hyper-V usa o modelo principal do agendador de hipervisor por padrão, começando com o Windows Server 2019. O administrador do host pode, opcionalmente, 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 na segurança e no desempenho dos hosts de virtualização. Para obter mais informações, consulte Sobre a seleção do tipo de agendador do hipervisor Hyper-V.

Selecione o tipo de agendador de hipervisor no Windows Server

A configuração do agendador do hipervisor é controlada pela entrada de dados de configuração de inicialização (BCD) hypervisorschedulertype.

Para selecionar um tipo de agendador:

  1. Abra o Prompt de Comando com privilégios de administrador.

  2. Digite bcdedit /set hypervisorschedulertype <type>, onde <type> é uma das seguintes opções:

    • Classic
    • Core
    • Root

Você deve reiniciar o sistema para que quaisquer alterações feitas no tipo de agendador do hipervisor entrem em vigor.

Observação

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

Determinar o tipo de agendador atual

Você pode determinar o tipo de agendador de hipervisor que Hyper-V está usando atualmente examinando o log do sistema Windows. Procure o evento de inicialização do hipervisor mais recente que tenha uma ID de 2. Esse evento relata o tipo de agendador do hipervisor configurado na inicialização do hipervisor. Os seguintes valores são possíveis para o tipo de agendador do hipervisor:

Valor Tipo de agendador
1 Agendador clássico, SMT desativado
2 Agendador clássico
3 Agendador principal
4 Agendador raiz

Você pode usar o Visualizador de Eventos ou o PowerShell para exibir os logs de eventos de inicialização do hipervisor.

Captura de ecrã da janela de propriedades do Visualizador de Eventos para um evento Hyper-V-Hypervisor com ID 2. O texto na guia Geral indica um tipo de agendador de 0x2.

Captura de ecrã de eventos no Visualizador de Eventos. Um evento de inicialização do Hyper-V-Hypervisor com uma ID de 2 é selecionado. Um painel inferior mostra os detalhes do evento.

Usar o PowerShell para consultar logs do sistema para um evento de inicialização do hipervisor

Para consultar os logs do sistema para um evento de hipervisor com uma ID de 2 usando o PowerShell, execute o seguinte comando:

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

Captura de tela de uma janela do PowerShell. Um comando consulta o evento de inicialização do hipervisor mais recente com ID 2. A saída mostra o tipo de agendador como 0x2.