Compartilhar via


Gerenciar tipos de agendador de 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 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.

Background

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

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

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 compreender a arquitetura Hyper-V. Para obter um resumo detalhado de como essa arquitetura funciona, consulte Hyper-V Visão geral da tecnologia. Por enquanto, tenha em mente os seguintes conceitos:

  • 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.

  • Existe um mapeamento um-para-um entre os processadores virtuais da partição raiz e os processadores lógicos subjacentes. Um processador virtual de 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 temporal do cache, a topologia de acesso não uniforme à memória (NUMA) e muitos outros fatores ao programar um processador virtual de um sistema convidado. Mas, em última análise, o processador virtual pode ser agendado em qualquer processador lógico do host.

Tipos de agendador do hipervisor

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 é 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 de compartilhamento justo, preemptivo e round robin para processadores virtuais convidados.

O tipo de agendador clássico é apropriado para a maioria dos usos de 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 dar suporte a uma ampla gama de cenários de virtualização, como:

  • Assinatura excessiva de processadores virtuais para processadores lógicos.
  • Execução de muitas VMs heterogêneas e cargas de trabalho ao mesmo tempo.
  • Executando VMs de maior escala e alto desempenho.
  • 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. O agendador principal está disponível a partir do Windows Server 2016 e do 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 que são executadas 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 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 SMT habilitado, esse processador virtual consome todo o núcleo quando ele é executado. Ao usar o agendador principal:

  • Isso cria um limite de segurança forte 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 canal lateral.
  • Isso reduz a variabilidade na taxa de transferência.
  • Isso pode reduzir o desempenho. Se apenas um processador virtual em um grupo puder ser executado, apenas um dos fluxos de instrução no núcleo será iniciado. O outro é deixado ocioso.
  • O sistema operacional (SO) 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, assim como fazem com um computador físico.

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 principal é opcional e o agendador clássico é 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. Na instância do sistema operacional de partição raiz, o agendador NT gerencia todos os aspectos da atribuição de trabalho a processadores lógicos 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 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 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 da CPU da VM e o agendador raiz

Os controles de recurso que o hipervisor Hyper-V usa em processadores de VM individuais não têm suporte quando você habilita o agendador raiz do hipervisor. No sistema operacional raiz, a lógica do agendador gerencia os recursos de host globalmente e não gerencia os recursos de convidado de VMs individuais. Os controles de recursos de processador por máquina virtual do Hyper-V, como limites, pesos e reservas, só se aplicam quando o hipervisor controla diretamente o agendamento do processador virtual, como nos tipos de agendador clássico e núcleo.

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 sã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 o SMT em VMs convidadas

Após 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. Especificamente, você pode especificar o número de threads SMT virtuais a serem expostos a uma VM convidada. O agendador do SO convidado e as cargas de trabalho da VM podem detectar e usar 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.
  • No Windows Server 2019 e versões posteriores, 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 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 Hyper-V Administradores ou grupo equivalente.

  2. Execute 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 HwThreadCountPerCore será definido para a contagem de threads SMT do host por núcleo.

    Note

    O Windows Server 2016 não dá suporte à configuração HwThreadCountPerCore para 0.

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 o SMT está habilitado. O sistema operacional convidado detecta 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 seja 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 a execução de processadores virtuais convidados em pares SMT físicos correspondentes. Essa configuração dá suporte ao uso de VMs com agendamento SMT para seus processadores virtuais convidados.

Note

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

Considere 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, Hyper-V usa o modelo de agendador de hipervisor principal por padrão, começando com o Windows Server 2019. 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 de hipervisor é controlada pela hypervisorschedulertype entrada BCD (dados de configuração de inicialização).

Para selecionar um tipo de agendador:

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

  2. Insira bcdedit /set hypervisorschedulertype <type>, onde <type> está uma das seguintes opções:

    • Classic
    • Core
    • Root

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

Note

O agendador raiz do hipervisor não tem suporte no Hyper-V no 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 o tipo de agendador de hipervisor que Hyper-V está usando no momento examinando o log do sistema windows. Procure o evento de lançamento mais recente do hipervisor que tenha ID 2. Esse evento relata o tipo de agendador de hipervisor configurado na inicialização do hipervisor. Os seguintes valores são possíveis para o tipo de agendador de hipervisor:

Value Tipo de agendador
1 Agendador clássico, SMT desabilitado
2 Agendador clássico
3 Agendador principal
4 Agendador principal

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

Captura de tela 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 0x2 do agendador.

Captura de tela dos eventos no Visualizador de Eventos. Um evento de inicialização do Hyper-V-Hypervisor com uma ID de 2 está 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. Uma consulta de comando para o evento de inicialização do hipervisor mais recente com a ID 2. A saída mostra o tipo de agendador como 0x2.