Partager via


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

Cet article décrit les modes de logique de planification du processeur virtuel dans Windows Server et Windows. 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.

Contexte

Avant de prendre en compte la logique et les contrôles derrière la planification du processeur virtuel de Hyper-V, il est important de comprendre certains concepts tels que le multithreading simultané (SMT) et comment Hyper-V virtualise les processeurs.

Comprendre SMT

SMT est une technique de conception moderne du processeur qui permet aux threads d’exécution distincts et indépendants de partager des ressources de processeur. SMT offre généralement une amélioration modeste des performances des charges de travail. Il parallélise les calculs lorsque cela est possible, ce qui augmente le débit des instructions. Toutefois, lorsque les threads sont en concurrence les uns avec les autres pour les ressources de processeur partagé, il n’existe parfois aucune amélioration notable des performances. Il peut même y avoir une légère diminution des performances.

Pour utiliser le SMT avec Windows Server, vous devez disposer d’un processeur compatible. Les processeurs avec Intel Hyper-Threading Technology (Intel HT Technology) ou Advanced Micro Devices (AMD) SMT sont des exemples de processeurs compatibles.

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 planificateurs pour les hyperviseurs, vous devez comprendre l'architecture Hyper-V. Pour obtenir un résumé détaillé du fonctionnement de cette architecture, consultez Hyper-V Vue d’ensemble de la technologie. Pour l’instant, gardez à 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.

  • Un mappage un-à-un existe entre les processeurs virtuels de la partition racine et les processeurs logiques sous-jacents. Un processeur virtuel hôte s’exécute toujours sur le même processeur logique sous-jacent. Il n’existe aucune migration de processeurs virtuels de partition racine.

  • Par défaut, les processeurs logiques qui hébergent les processeurs virtuels de partition racine peuvent également exécuter des processeurs virtuels invités.

  • L’hyperviseur peut planifier l’exécution d’un processeur virtuel invité sur n’importe quel processeur logique disponible. Le planificateur d’hyperviseur tente de prendre en compte la localité temporelle du cache, la topologie d’accès à la mémoire nonuniforme (NUMA) et de nombreux autres facteurs lorsqu’il planifie un processeur virtuel invité. Mais finalement, le processeur virtuel peut être planifié sur n’importe quel processeur logique hôte.

Types de planificateurs de l’hyperviseur

L’hyperviseur Hyper-V prend en charge plusieurs modes de logique de planificateur, qui déterminent comment 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 est le planificateur par défaut utilisé sur toutes les versions de Hyper-V antérieures à Windows Server 2019. Le planificateur classique fournit un modèle de planification de partage équitable, préemptif et à tour de rôle pour les processeurs virtuels invités.

Le type de planificateur classique est approprié pour la plupart des utilisations de 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 processeurs virtuels par rapport aux processeurs logiques.
  • 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 complet des fonctionnalités d'Hyper-V, sans restrictions, ainsi que d'autres scénarios.

Le planificateur de noyau

Le planificateur principal d’hyperviseur est une alternative à la logique du planificateur classique. Le planificateur principal est disponible à partir de 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 qui s’exécutent sur un hôte de virtualisation compatible 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.
  • On peut optionnellement 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 processeurs logiques se trouvent en groupes de deux, les processeurs virtuels sont planifiés en groupes de deux et un cœur n’est jamais partagé entre les machines virtuelles. Lorsque vous planifiez un processeur virtuel pour une machine virtuelle sans SMT activé, ce processeur virtuel consomme l’intégralité du cœur lorsqu’il s’exécute. Lorsque vous utilisez le planificateur principal :

  • Il crée une barrière de sécurité robuste pour l’isolation des charges de travail des invités. Les processeurs virtuels invités peuvent uniquement s'exécuter sur des paires de cœurs physiques sous-jacentes, ce qui réduit la vulnérabilité aux attaques d'espionnage 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, un seul des flux d’instructions du cœur démarre. L’autre est laissé inactif.
  • Le système d’exploitation et les applications s’exécutant sur la machine virtuelle invitée peuvent utiliser des interfaces de comportement et de programmation (API) SMT pour contrôler et distribuer le travail entre les threads SMT, comme avec 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 principal est facultatif et le planificateur classique est le planificateur 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. Dans l’instance du système d’exploitation de partition racine, le planificateur NT gère tous les aspects de l’attribution de travail aux processeurs logiques système.

Le planificateur racine répond aux exigences uniques de la prise en charge des partitions utilitaires et fournit une isolation forte des charges de travail, comme c'est 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 stratégie de planification et l’appliquer à toutes les autres charges de travail du système.
  • Ces mêmes métriques aident également à attribuer le travail 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 de ressources du processeur de machine virtuelle et planificateur racine

Les contrôles de ressources que l'hyperviseur Hyper-V utilise sur des processeurs de machines virtuelles individuels ne sont pas pris en charge lorsque vous activez le planificateur racine de l'hyperviseur. Sur le système d’exploitation racine, la logique du planificateur gère les ressources hôtes sur une base globale et ne gère pas les ressources invitées des machines virtuelles individuelles. Les Hyper-V contrôles de ressources par processeur de machines virtuelles, tels que les limites, les pondérations et les réserves, s’appliquent uniquement lorsque l’hyperviseur contrôle directement la planification du processeur virtuel, par exemple avec les types de planificateurs classiques et principaux.

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 ne sont pas encore entièrement caractérisées et paramétrées pour prendre en charge la large gamme de charges de travail typiques de nombreux déploiements de virtualisation de serveur.

Activer SMT dans les machines virtuelles invitées

Après avoir configuré l’hyperviseur de l’hôte de virtualisation pour utiliser le type de planificateur principal, vous pouvez également configurer les machines virtuelles invitées pour utiliser SMT. Plus précisément, vous pouvez spécifier le nombre de threads SMT virtuels à exposer à une machine virtuelle invitée. Le planificateur de système d’exploitation invité et les charges de travail de machine virtuelle peuvent ensuite détecter et 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.
  • Dans Windows Server 2019 et versions ultérieures, les nouvelles machines virtuelles que vous créez sur l’hôte héritent de la topologie SMT hôte par défaut. Par exemple, une machine virtuelle 9.0 que vous créez sur un hôte avec deux threads SMT par cœur dispose é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 de l'Hyper-V Administrateurs ou groupe équivalent.

  2. Exécutez Set-VMProcessor -VMName <VM-name> -HwThreadCountPerCore <n>, où <n> correspond au nombre de threads SMT par cœur que la machine virtuelle invitée voit. Si vous utilisez une valeur 0 pour <n>, la valeur HwThreadCountPerCore est définie sur le nombre de threads SMT par cœur de l’hôte.

    Remarque

    Windows Server 2016 ne prend pas en charge la configuration de HwThreadCountPerCore sur 0.

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 est activé. Le système d’exploitation invité détecte deux processeurs logiques appartenant au même cœur.

Capture d’écran de la fenêtre Informations système. La ligne processeur est sélectionnée. Il répertorie des informations sur un cœur et deux processeurs.

Configurer le type de planificateur d’hyperviseur

Le type de planificateur d’hyperviseur qui Hyper-V utilise par défaut dépend de la version du système d’exploitation. Quel que soit le planificateur par défaut sur votre système d’exploitation, vous pouvez configurer l’hyperviseur pour utiliser le planificateur principal. Le planificateur principal augmente la sécurité en limitant les processeurs virtuels invités à s’exécuter sur des paires SMT physiques correspondantes. Cette configuration prend en charge l’utilisation de machines virtuelles avec la planification SMT pour leurs processeurs virtuels invités.

Remarque

Sur Windows Server 2016, Hyper-V utilise le planificateur classique par défaut. Si vous utilisez Hyper-V sur Windows Server 2016 ou version ultérieure, nous vous recommandons de sélectionner le planificateur principal. Ce changement garantit que vos hôtes de virtualisation sont protégés de manière optimale contre les machines virtuelles invitées potentiellement malveillantes.

Prendre en compte les impacts sur la sécurité et les performances

Pour vous assurer que les hôtes Hyper-V sont déployés dans une configuration de sécurité optimale, Hyper-V utilise le modèle de planificateur d’hyperviseur principal par défaut depuis Windows Server 2019. 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 hypervisorschedulertype BCD (Boot Configuration Data).

Pour sélectionner un type de planificateur :

  1. Ouvrez une invite de commande avec des privilèges d’administrateur.

  2. Entrez bcdedit /set hypervisorschedulertype <type>, où <type> se trouve l’une des options suivantes :

    • Classic
    • Core
    • Root

Vous devez redémarrer le système pour que toutes les modifications que vous apportez au type de planificateur d’hyperviseur prennent effet.

Remarque

Le planificateur racine de l’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 le type de planificateur d’hyperviseur que Hyper-V utilise actuellement en examinant le journal système Windows. Recherchez l’événement de lancement d’hyperviseur le plus récent dont l’ID correspond à 2. Cet événement signale le type de planificateur d’hyperviseur configuré au lancement de l’hyperviseur. Les valeurs suivantes sont possibles pour le type de planificateur d’hyperviseur :

Valeur Type de planificateur
1 Planificateur classique, SMT désactivé
2 Planificateur classique
3 Planificateur principal
4 Planificateur racine

Vous pouvez utiliser l’Observateur d’événements ou PowerShell pour afficher les journaux d’événements de lancement d’hyperviseur.

Capture d’écran de la fenêtre propriétés de l’Observateur d’événements pour un événement Hyper-V-Hypervisor avec l’ID 2. Le texte de l’onglet Général indique un type de planificateur de 0x2.

Capture d’écran des événements dans l’Observateur d’événements. Un événement de lancement Hyper-V-Hypervisor avec un ID de 2 est sélectionné. Un volet inférieur affiche les détails de l’événement.

Utiliser PowerShell pour interroger les journaux système d’un événement de lancement d’hyperviseur

Pour interroger les journaux système pour un événement d’hyperviseur avec un ID de 2 à l’aide de PowerShell, exécutez la commande suivante :

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

Capture d’écran d’une fenêtre PowerShell. Une commande interroge l’événement de lancement d’hyperviseur le plus récent avec l’ID 2. La sortie affiche le type de planificateur comme 0x2.