Gérer les types de planificateur d’hyperviseur Hyper-V

S’applique à : Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server version 1803, Windows Server version 1709, Windows 10

Cet article décrit les nouveaux modes de logique de planification du processeur virtuel introduits dans Windows Server 2016. Ces modes, ou types de planificateurs, déterminent la façon dont l’hyperviseur Hyper-V alloue et gère le travail entre les processeurs virtuels invités. Un administrateur hôte Hyper-V peut :

  • Sélectionnez les types de planificateurs d’hyperviseur qui conviennent le mieux aux machines virtuelles invitées.
  • Configurez des machines virtuelles pour tirer parti de la logique de planification.

Prérequis

Vous devez installer les mises à jour suivantes pour utiliser les fonctionnalités du planificateur d’hyperviseur décrites plus loin dans cet article. Ces mises à jour incluent des modifications pour prendre en charge la nouvelle option BCD hypervisorschedulertype, qui est nécessaire pour la configuration de l’hôte.

Version Version Mise à jour nécessaire KB Article
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 Aucune Aucune

Contexte

Avant de discuter de la logique et des contrôles derrière la planification du processeur virtuel Hyper-V, il est important de comprendre certains concepts tels que le multithreading simultané et la façon dont Hyper-V virtualise les processeurs.

Comprendre SMT

Le multithreading simultané (SMT) est une technique dans les conceptions de processeur modernes qui permet de séparer les threads d’exécution distincts et indépendants de partager les ressources du processeur. Le SMT permet généralement d’améliorer légèrement les performances de la plupart des charges de travail. Il parallélise les calculs lorsque cela est possible, ce qui augmente le débit des instructions. Toutefois, il existe également des moments où il n’y a pas d’amélioration notable des performances ou il peut même s’avérer une légère perte lorsque les threads sont en concurrence les uns avec les autres pour les ressources de processeur partagées.

Pour utiliser le SMT avec Windows Server, vous devez disposer d’un processeur compatible. Par exemple, un processeur avec la technologie Intel Hyper-Threading ou des Micro Devices (AMD) Multithreading (SMT) avancés.

Pour les besoins de cet article, les descriptions de SMT et la façon dont elle est utilisée par Hyper-V s’appliquent de manière égale aux systèmes Intel et AMD.

Comprendre comment Hyper-V virtualise les processeurs

Avant d’envisager les types de planificateur d’hyperviseur, vous devez comprendre l’architecture Hyper-V. Vous trouverez un résumé plus détaillé du fonctionnement de cette architecture dans la vue d’ensemble de la technologie Hyper-V, mais pour l’instant, vous devez garder à l’esprit les concepts suivants :

  • Hyper-V crée et gère les partitions de machine virtuelle, alloue et partage les ressources de calcul entre elles, sous le contrôle de l’hyperviseur. Les partitions fournissent des limites d’isolation fortes entre toutes les machines virtuelles invitées et entre les machines virtuelles invitées et la partition racine.

  • La partition racine est elle-même une partition de machine virtuelle, bien qu’elle ait des propriétés uniques et des privilèges supérieurs à ceux des machines virtuelles invitées. Partition racine :

    • Fournit les services de gestion qui contrôlent toutes les machines virtuelles invitées.
    • Fournit la prise en charge des appareils virtuels pour les invités.
    • Gère toutes les entrées et sorties de l’appareil pour les machines virtuelles invitées.

    Nous vous recommandons de ne pas exécuter de charges de travail d’application dans la partition racine.

  • Chaque processeur virtuel de la partition racine est mappé en mode un à un avec un processeur logique sous-jacent. Un VP hôte s’exécute toujours sur le même LP sous-jacent. Il n’existe aucune migration des adresses virtuelles de la partition racine.

  • Par défaut, les processeurs logiques qui hébergent la racine des partitions des processeurs virtuels peuvent également exécuter des processeurs virtuels invitées.

  • Hyperviseur peut planifier l’exécution du VP invité sur n’importe quel processeur logique disponible. Bien que le planificateur d’hyperviseur tente d’envisager la localité temporelle du cache, la topologie d’accès à la mémoire non uniforme (NUMA) et de nombreux autres facteurs lors de la planification d’un VP invité, en fin de compte, le VP peut être planifié sur n’importe quel LP hôte.

Types de planificateurs de l’hyperviseur

Dans Windows Server 2016, l’hyperviseur Hyper-V prend en charge plusieurs modes de logique de planificateur, qui déterminent la façon dont l’hyperviseur planifie les processeurs virtuels sur les processeurs logiques sous-jacents. Ces types de planificateurs sont les suivants :

Le planificateur classique

Le planificateur classique a été le planificateur par défaut pour toutes les versions de l’hyperviseur Windows Hyper-V depuis sa création, y compris Hyper-V dans Windows Server 2016. Le planificateur classique fournit un modèle de planification en tourniquet préemptif et équitable pour les processeurs virtuels invités.

Le type de planificateur classique est le plus approprié pour les utilisations Hyper-V traditionnelles, telles que les clouds privés, les fournisseurs d’hébergement, etc. Les caractéristiques de performances du type de planificateur classique sont optimisées pour prendre en charge un large éventail de scénarios de virtualisation, tels que :

  • Sur-abonnement des adresses IP aux adresses IP.
  • Exécution de nombreuses machines virtuelles et charges de travail hétérogènes en même temps.
  • Exécution de machines virtuelles à grande échelle hautes performances.
  • Prise en charge de l’ensemble de fonctionnalités complet d’Hyper-V sans restrictions et autres scénarios.

Le planificateur de cœurs

Le planificateur de cœurs de l’hyperviseur est une alternative à la logique du planificateur classique, introduite dans Windows Server 2016 et Windows 10 version 1607. Le planificateur principal offre une limite de sécurité forte pour l’isolation des charges de travail invitées. Elle réduit également la variabilité des performances pour les charges de travail à l’intérieur des machines virtuelles s’exécutant sur un hôte de virtualisation compatible avec SMT. Le planificateur principal prend en charge l’exécution de machines virtuelles SMT et non-SMT en même temps sur le même hôte de virtualisation compatible avec SMT.

Planificateur principal :

  • Utilise la topologie SMT de l’hôte de virtualisation.
  • Vous pouvez éventuellement exposer des paires SMT aux machines virtuelles invitées.
  • Planifie des groupes de processeurs virtuels invités de la même machine virtuelle sur des groupes de processeurs logiques SMT.

Ce travail se produit symétriquement. Si les adresses LPS se trouvent en groupes de deux, les adresses virtuelles sont planifiées en groupes de deux et un cœur n’est jamais partagé entre les machines virtuelles. Lorsque vous planifiez le VP pour une machine virtuelle sans SMT activé, ce VP consomme l’intégralité du cœur lorsqu’il s’exécute. Le résultat global du planificateur de cœurs est que :

  • Cela créé une limite de sécurité forte qui permet d’isoler des charges de travail invitées. Les processeurs virtuels invités peuvent uniquement être exécutés sur des paires de cœurs physiques sous-jacentes, ce qui réduit la vulnérabilité aux attaques d’enregistrement de canal latéral.
  • Elle réduit la variabilité du débit.
  • Elle peut potentiellement réduire les performances. Si un seul processeur virtuel d’un groupe peut s’exécuter, seul un des flux d’instructions dans le cœur démarre alors que l’autre reste inactif.
  • Le système d’exploitation et les applications s’exécutant dans la machine virtuelle invitée peuvent utiliser des interfaces de comportement et de programmation SMT (API) pour contrôler et distribuer le travail entre les threads SMT, comme ils le feraient dans une machine physique.

À compter de Windows Server 2019, Hyper-V utilise le planificateur principal par défaut. Dans les versions antérieures comme Windows Server 2016, le planificateur était facultatif et le planificateur classique est l’option par défaut.

Comportement du planificateur de cœurs avec SMT désactivé sur l’hôte

Dans certains cas, vous pouvez configurer l’hyperviseur pour utiliser le type de planificateur principal, mais la fonctionnalité SMT est désactivée ou n’est pas présente sur l’hôte de virtualisation. Dans ces cas, Hyper-V utilise le planificateur classique indépendamment du paramètre de type du planificateur d’hyperviseur.

Le planificateur racine

Le planificateur racine est arrivé avec Windows 10, version 1803. Lorsque vous activez le type de planificateur racine, l’hyperviseur donne à la partition racine le contrôle de la planification du travail. Le planificateur NT dans l’instance de système d’exploitation de la partition racine gère tous les aspects de la planification des travaux sur les processeurs logiques du système.

Le planificateur racine répond aux exigences uniques à la prise en charge d’une partition utilitaire et pour fournir une isolation forte des charges de travail, comme utilisé avec Windows Defender Application Guard (WDAG). Dans ce scénario, laisser les responsabilités de la planification au système d’exploitation racine offre plusieurs avantages :

  • Vous pouvez utiliser des contrôles de ressources processeur applicables aux scénarios de conteneur avec la partition de l’utilitaire, ce qui simplifie la gestion et le déploiement.
  • Le planificateur de système d’exploitation racine peut facilement collecter des métriques sur l’utilisation du processeur de charge de travail à l’intérieur du conteneur. Il peut utiliser ces données comme entrée dans la même stratégie de planification applicable à toutes les autres charges de travail du système.
  • Ces mêmes métriques aident également le travail d’attribut effectué dans un conteneur d’application au système hôte. Le suivi de ces métriques est plus difficile avec les charges de travail de machine virtuelle traditionnelles, où certains fonctionnent pour le compte de toutes les machines virtuelles en cours d’exécution dans la partition racine.

Utilisation du planificateur racine sur les systèmes clients

À partir de Windows 10 version 1803, le planificateur racine est utilisé par défaut uniquement sur les systèmes clients, à savoir :

  • Vous pouvez activer l’hyperviseur pour prendre en charge la sécurité basée sur la virtualisation et l’isolation des charges de travail WDAG.
  • Il est important d’exploiter correctement les systèmes futurs avec des architectures principales hétérogènes.

Cette configuration du planificateur de l’hyperviseur est la seule prise en charge pour les systèmes clients. Les administrateurs ne doivent pas tenter de remplacer le type de planificateur d’hyperviseur par défaut sur les systèmes clients Windows.

Contrôles des ressources processeur de machine virtuelle et le planificateur racine

Les contrôles de ressources de processeur de machines virtuelles fournis par Hyper-V ne sont pas pris en charge lorsque vous activez le planificateur racine d’hyperviseur. La logique du planificateur du système d’exploitation racine gère les ressources d’hôte sur une base globale et ne gère pas les ressources invitées d’une seule machine virtuelle. Les contrôles des ressources du processeur d’Hyper-V par machine virtuelle, comme les limites, les pondérations et les réserves, peuvent être uniquement appliqués lorsque l’hyperviseur contrôle directement la planification des processeurs virtuels, par exemple avec les types de planificateurs classiques et de cœurs.

Utilisation du planificateur racine sur les systèmes serveur

Nous vous déconseillons d’utiliser le planificateur racine avec Hyper-V sur les serveurs. Ses caractéristiques de performances n’ont pas encore été entièrement caractérisées et ajustées pour prendre en charge le large éventail de charges de travail typiques de nombreux déploiements de virtualisation de serveur.

Activer SMT dans les machines virtuelles invitées

Une fois que vous avez configuré l’hyperviseur de l’hôte de virtualisation pour qu’il utilise le type de planificateur principal, vous pouvez également configurer les machines virtuelles invitées pour utiliser SMT. Exposant le fait que les processeurs virtuels sont hyperthreadés sur une machine virtuelle invitée permet au planificateur dans le système d’exploitation invité et aux charges de travail s’exécutant sur la machine virtuelle, de détecter et d’utiliser la topologie SMT dans leur propre planification de travail.

  • Dans Windows Server 2016, l’outil SMT invité n’est pas configuré par défaut. Un administrateur hôte Hyper-V doit l’activer explicitement.
  • À compter de Windows Server 2019, les nouvelles machines virtuelles que vous créez sur l’hôte héritent par défaut de la topologie SMT de l’hôte. Par exemple, une machine virtuelle 9.0 que vous créez sur un hôte avec deux threads SMT par cœur disposera également de deux threads SMT par cœur.

Vous devez utiliser PowerShell pour activer SMT dans une machine virtuelle invitée. Aucune interface utilisateur n’est fournie dans le Gestionnaire Hyper-V. Pour activer SMT dans une machine virtuelle invitée :

  1. Ouvrez une fenêtre PowerShell à l’aide d’un compte membre du groupe Administrateurs Hyper-V ou équivalent.
  2. Exécutez Set-VMProcessor -VMName <VMName> -HwThreadCountPerCore <n>, où <n> correspond au nombre de threads SMT par cœur que la machine virtuelle invitée voit. <n> = 0 définit la valeur HwThreadCountPerCore pour qu’elle corresponde au nombre de threads SMT de l’hôte par valeur de base.

Remarque

Dans Windows Server 2019 et ses versions ultérieures, vous pouvez définir HwThreadCountPerCore = 0 au lieu de mettre en correspondance le nombre de threads SMT hôte.

La capture d’écran suivante montre les informations système extraites du système d’exploitation invité s’exécutant dans une machine virtuelle. Il existe deux processeurs virtuels et SMT activés. Le système d’exploitation invité détecte deux processeurs logiques appartenant au même cœur.

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

Configurer le type de planificateur d’hyperviseur sur Windows Server 2016 Hyper-V

Hyper-V dans Windows Server 2016 utilise par défaut le modèle de planificateur de l’hyperviseur classique. Vous pouvez éventuellement configurer l’hyperviseur pour utiliser le planificateur principal. Le planificateur principal augmente la sécurité en limitant l’exécution des adresses IP virtuelles invitées sur des paires SMT physiques correspondantes. Cette configuration prend en charge l’utilisation de machines virtuelles avec la planification SMT pour leurs adresses IP invitées.

Remarque

Nous recommandons à tous les clients exécutant Windows Server 2016 Hyper-V de sélectionner le planificateur principal pour vous assurer que leurs hôtes de virtualisation sont protégés de manière optimale contre les machines virtuelles invitées potentiellement malveillantes.

Hyper-V dans Windows Server 2019 utilise par défaut le planificateur de cœurs.

Pour garantir que les hôtes Hyper-V sont déployés dans la configuration de sécurité optimale, Windows Server 2019 Hyper-V utilise désormais le modèle de planificateur d’hyperviseur principal par défaut. L’administrateur hôte peut éventuellement configurer l’hôte pour utiliser le planificateur classique hérité. Avant de remplacer les paramètres par défaut, les administrateurs doivent lire, comprendre et prendre en compte les impacts que chaque type de planificateur a sur la sécurité et les performances des hôtes de virtualisation. Pour plus d’informations, consultez À propos de la sélection du type de planificateur d’hyperviseur Hyper-V.

Sélectionner le type de planificateur d’hyperviseur sur Windows Server

La configuration du planificateur d’hyperviseur est contrôlée par l’entrée BCD hypervisorschedulertype .

Pour sélectionner un type de planificateur :

  1. Ouvrez une invite de commandes avec des privilèges administrateur.
  2. Entrez bcdedit /set hypervisorschedulertype type, où type est l’une des options suivantes :
  • Classic
  • Core
  • Root

Vous devez redémarrer le système pour que toutes vos modifications au type de planificateur d’hyperviseur soient prises en compte.

Remarque

Le planificateur racine d’hyperviseur n’est pas pris en charge sur Windows Server Hyper-V pour l’instant. Les administrateurs Hyper-V ne doivent pas tenter de configurer le planificateur racine à utiliser avec des scénarios de virtualisation de serveur.

Déterminer le type de planificateur actuel

Vous pouvez déterminer quel type de planificateur d’hyperviseur utilise actuellement Hyper-V en examinant le journal système de l’observateur d’événements. Vous pouvez voir l’ID d’événement de lancement d’hyperviseur le plus récent 2, qui signale le type de planificateur d’hyperviseur configuré lors du lancement de l’hyperviseur. Vous pouvez obtenir les événements de lancement d’hyperviseur à partir de l’Observateur d’événements Windows ou dans PowerShell.

L’événement de lancement de l’hyperviseur avec l’ID 2 indique le type de planificateur de l’hyperviseur, où :

  • 1 = Planificateur classique, SMT désactivé
  • 2 = Planificateur classique
  • 3 = Planificateur de cœurs
  • 4 = Planificateur racine

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.

Interroger l’événement de lancement du type de planificateur hyperviseur Hyper-V à l’aide de PowerShell

Pour interroger l’événement de l’hyperviseur avec l’ID 2 en utilisant PowerShell, exécutez les commandes suivantes à partir d’une invite de commandes 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.