Freigeben über


Verwalten von Hyper-V-Hypervisorplanertypen

In diesem Artikel werden neue Modi der Planungslogik für virtuelle Prozessoren beschrieben, die in Windows Server 2016 eingeführt wurden. Diese Modi oder Schedulertypenbestimmen, wie der Hyper-V-Hypervisor die Arbeit für virtuelle Gastprozessoren zuweist und verwaltet. Ein Hyper-V-Hostadministrator kann Folgendes tun:

  • Wählen Sie die Hypervisor-Schedulertypen aus, die am besten für virtuelle Gastcomputer (VMs) geeignet sind.
  • Konfigurieren Sie virtuelle Computer, um die Planungslogik zu nutzen.

Voraussetzungen

Sie müssen die folgenden Updates installieren, um die Hypervisor-Scheduler-Features zu verwenden, die weiter unten in diesem Artikel beschrieben werden. Diese Updates umfassen Änderungen zur Unterstützung der neuen BCD-Option hypervisorschedulertype, die für die Hostkonfiguration erforderlich ist.

Version Version Update erforderlich KB-Artikel
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 Keine Keine

Hintergrund

Bevor Sie die Logik und Steuerelemente hinter der Planung virtueller Hyper-V-Prozessoren besprechen, ist es wichtig, bestimmte Konzepte wie gleichzeitiges Multithreading zu verstehen und wie Hyper-V Prozessoren virtualisiert.

Verstehen von SMT

Simultanes Multithreading (SMT) ist eine Technik in modernen Prozessordesigns, mit der separate, unabhängige Ausführungsthreads die Ressourcen des Prozessors gemeinsam nutzen können. SMT bietet in der Regel eine bescheidene Leistungssteigerung für die meisten Workloads. Es parallelisiert wenn möglich Berechnungen, und erhöht den Anweisungsdurchsatz. Es gibt jedoch auch Zeiten, in denen es keine spürbare Verbesserung der Leistung oder sogar einen leichten Verlust gibt, wenn Threads miteinander für gemeinsam genutzte Prozessorressourcen konkurrieren.

Um SMT mit Windows Server zu verwenden, müssen Sie über einen kompatiblen Prozessor verfügen. Beispielsweise ein Prozessor mit Intel Hyper-Threading-Technologie oder Advanced Micro Devices (AMD) Multithreading (SMT).

Für die Zwecke dieses Artikels gelten die Beschreibungen des SMT und dessen Verwendung durch Hyper-V gleichermaßen für Intel- und AMD-Systeme.

Verstehen, wie Hyper-V Prozessoren virtualisiert

Bevor Sie Hypervisor-Planertypen in Betracht ziehen, sollten Sie die Hyper-V-Architektur verstehen. Eine detailliertere Zusammenfassung der Funktionsweise dieser Architektur finden Sie in der Hyper-V-Übersicht, momentan sollten Sie jedoch die folgenden Konzepte im Auge behalten:

  • Hyper-V erstellt und verwaltet unter der Kontrolle des Hypervisors VM-Partitionen, in denen Computeressourcen zugewiesen und freigegeben werden. Partitionen bieten starke Isolationsgrenzen zwischen allen Gast-VMs sowie zwischen Gast-VMs und der Stammpartition.

  • Die Stammpartition ist selbst eine VM-Partition, obwohl sie über eindeutige Eigenschaften und größere Berechtigungen als Gast-VMs verfügt. Die Stammpartition:

    • Stellt die Verwaltungsdienste bereit, die alle Gast-VMs steuern.
    • Stellt Unterstützung für virtuelle Geräte für Gäste bereit.
    • Verwaltet alle Geräteeingaben und -ausgaben für Gast-VMs.

    Wir empfehlen, keine Anwendungsworkloads in der Stammpartition auszuführen.

  • Jeder virtuelle Prozessor (VP) der Stammpartition wird 1:1 einem zugrunde liegenden logischen Prozessor (LP) zugeordnet. Ein Host-VP wird immer auf demselben zugrunde liegenden LP ausgeführt. Es gibt keine Migration der VPs der Stammpartition.

  • Standardmäßig können die LPs, die die VPs der Stammpartition hosten, auch Gast-VPs ausführen.

  • Hypervisor plant möglicherweise die Ausführung der Gast-VP auf jedem verfügbaren logischen Prozessor. Während der Hypervisorplaner versucht, die temporäre Cache-Lokalität, NUMA (Non-Uniform Memory Access)-Topologie und viele andere Faktoren beim Planen einer Gast-VP zu berücksichtigen, kann der VP letztendlich auf jedem Host-LP geplant werden.

Hypervisorplanertypen

In Windows Server 2016 unterstützt der Hyper-V-Hypervisor mehrere Modi der Planerlogik, die festlegen, wie der Hypervisor virtuelle Prozessoren auf den zugrunde liegenden logischen Prozessoren plant. Diese Planertypen lauten wie folgt:

Klassischer Planer

Der klassische Planer ist seit seiner Einführung die Standardeinstellung für alle Versionen des Windows Hyper-V-Hypervisors (einschließlich Windows Server 2016 Hyper-V). Der klassische Planer bietet ein faires, präemptives Round-Robin-Planungsmodell für virtuelle Gastprozessoren.

Der klassische Planertyp eignet sich am besten für die meisten traditionellen Hyper-V-Nutzungen, wie private Clouds, Hostinganbieter usw. Die Leistungsmerkmale des klassischen Schedulertyps sind am besten optimiert, um eine Vielzahl von Virtualisierungsszenarien zu unterstützen, z. B.:

  • Überzeichnung von VPs zu LPs.
  • Gleichzeitiges Ausführen vieler heterogener VMs und Workloads.
  • Ausführen größerer Hochleistungs-VMs.
  • Unterstützung des vollständigen Funktionssatzes von Hyper-V ohne Einschränkungen und andere Szenarien.

Kernplaner

Der Hypervisorkernplaner ist eine neue Alternative zur klassischen Planerlogik, die in Windows Server 2016 und Windows 10 (Version 1607) eingeführt wurde. Der Kernplaner bietet eine starke Sicherheitsgrenze für die Isolation von Gastarbeitsauslastungen. Außerdem wird die Leistungsvariabilität für Workloads innerhalb von VMs reduziert, die auf einem SMT-fähigen Virtualisierungshost ausgeführt werden. Der Kernplaner unterstützt die gleichzeitige Ausführung von SMT-VMs und VMs ohne SMT auf demselben SMT-fähigen Virtualisierungshost.

Der Kernplaner:

  • Verwendet die SMT-Topologie des Virtualisierungshosts.
  • Macht optional SMT-Paare für Gast-VMs verfügbar.
  • Plant Gruppen von virtuellen Gastprozessoren von derselben VM auf Gruppen logischer SMT-Prozessoren.

Diese Arbeit erfolgt symmetrisch. Wenn sich LPs in Gruppen von zwei befinden, werden VPs in Gruppen von zwei geplant, und ein Kern wird niemals zwischen VMs geteilt. Wenn Sie den VP für eine VM ohne SMT-Aktivierung planen, nutzt dieser VP den gesamten Kern, wenn er ausgeführt wird. Das Gesamtergebnis des Kernplaners lautet wie folgt:

  • Es wird für eine starke Sicherheitsgrenze für die Isolation von Gastarbeitsauslastungen gesorgt. Gast-VPs sind auf die Ausführung auf zugrunde liegenden physischen Kernpaaren beschränkt, wodurch das Sicherheitsrisiko für Snooping-Angriffe über Seitenkanäle verringert wird.
  • Sie reduziert die Streuung des Durchsatzes.
  • Die Leistung wird potenziell reduziert. Wenn nur ein VP in einer Gruppe von VPs ausgeführt werden kann, wird nur einer der Anweisungsstreams im Kern gestartet, während der andere im Leerlauf bleibt.
  • Das Betriebssystem und die Anwendungen, die auf der Gast-VM ausgeführt werden, können das SMT-Verhalten und die Programmierschnittstellen (APIs) verwenden, um die Arbeit über SMT-Threads hinweg zu steuern und zu verteilen, genauso wie sie es tun würden, wenn sie nicht virtuell wären.

Seit Windows Server 2019 verwendet Hyper-V standardmäßig den Kernplaner. In früheren Versionen wie Windows Server 2016 war der Scheduler optional, und der klassische Scheduler war die Standardoption.

Kernplanerverhalten bei deaktiviertem Host-SMT

In einigen Fällen können Sie den Hypervisor so konfigurieren, dass er den Kernplanertyp verwendet, die SMT-Funktionalität ist jedoch deaktiviert oder auf dem Virtualisierungshost nicht vorhanden. In diesen Fällen verwendet Hyper-V das klassische Schedulerverhalten unabhängig von der Einstellung des Hypervisor-Schedulertyps.

Stammplaner

Der Stammplaner wurde mit Windows 10, Version 1803 eingeführt. Wenn Sie den Stammplanertyp aktivieren, erhält der Hypervisor die Stammpartitionskontrolle für die Arbeitsplanung. Der NT-Planer in der Betriebssysteminstanz der Stammpartition verwaltet alle Aspekte Arbeitsplanung für System-LPs.

Der Stammplaner berücksichtigt die verschiedenen Anforderungen, die mit der Unterstützung einer Hilfspartition verbunden sind, um eine starke Workloadisolation zu ermöglichen, wie sie bei Windows Defender Application Guard (WDAG) verwendet wird. In diesem Szenario hat es mehrere Vorteile, dem Stammbetriebssystem die Planung zu überlassen.

  • Mit der Hilfspartition können Sie CPU-Ressourcensteuerelemente verwenden, die für Containerszenarien gelten, um die Verwaltung und Bereitstellung zu vereinfachen.
  • Der Planer des Stammbetriebssystems kann problemlos Metriken zur CPU-Nutzung einer Workload innerhalb des Containers sammeln. Er kann diese Daten als Eingabe für dieselbe Planungsrichtlinie verwenden, die für alle anderen Workloads im System gilt.
  • Diese Metriken helfen auch, die in einem Anwendungscontainer ausgeführten Arbeit dem Hostsystem zuzuordnen. Das Nachverfolgen dieser Metriken ist mit traditionellen VM-Workloads schwieriger, da dort einige Aufgaben im Namen aller laufenden VMs in der Stammpartition durchgeführt werden.

Stammplanerverwendung auf Clientsystemen

Ab Windows 10, Version 1803, wird der Stammplaner standardmäßig nur auf Clientsystemen verwendet, was Folgendes bedeutet:

  • Der Hypervisor kann zur Unterstützung der virtualisierungsbasierten Sicherheits- und WDAG-Workload-Isolation aktiviert sein.
  • Es ist wichtig, zukünftige Systeme mit heterogenen Kernarchitekturen ordnungsgemäß zu betreiben.

Diese Konfiguration ist die einzige unterstützte Hypervisor-Schedulerkonfiguration für Clientsysteme. Administratoren sollten nicht versuchen, den standardmäßigen Hypervisor-Schedulertyp auf Windows-Clientsystemen außer Kraft zu setzen.

CPU-Ressourcensteuerelemente für virtuelle Computer und Stammplaner

Die von Hyper-V bereitgestellten Ressourcensteuerelemente des VM-Prozessors werden nicht unterstützt, wenn der Hypervisorstammplaner aktiviert ist. Die Schedulerlogik des Stammbetriebssystems verwaltet Hostressourcen auf globaler Basis und verwaltet nicht die Gastressourcen einer einzelnen VM. Beispielsweise sind die VM-basierten Prozessorressourcen-Steuerelemente von Hyper-V (z. B. Obergrenzen, Gewichtungen und Reserven) nur anwendbar, wenn der Hypervisor die VP-Planung beispielsweise mit dem klassischen Planer oder dem Kernplaner direkt steuert.

Stammplanerverwendung auf Serversystemen

Es wird nicht empfohlen, den Stammplaner mit Hyper-V auf Servern zu verwenden. Seine Leistungsmerkmale wurden noch nicht vollständig charakterisiert und optimiert, um die breite Palette von Workloads zu berücksichtigen, die für viele Servervirtualisierungsbereitstellungen typisch ist.

Aktivieren von SMT in Gast-VMs

Sobald der Hypervisor des Virtualisierungshosts für die Verwendung des zentralen Planertyps konfiguriert ist, können Sie Gast-VMs für die Verwendung von SMT konfigurieren. Durch die Offenlegung der Tatsache, dass VPs in einer Gast-VM hyperthreaded sind, können der Planer auf dem Gastbetriebssystem und die auf der VM ausgeführten Workloads die SMT-Topologie in ihrer eigenen Arbeitsplanung erkennen und nutzen.

  • In Windows Server 2016 ist das Gast-SMT nicht standardmäßig konfiguriert. Ein Hyper-V-Hostadministrator muss es explizit aktivieren.
  • Ab Windows Server 2019 erben neue VMs, die auf dem Host erstellt wurden, standardmäßig die SMT-Topologie des Hosts. Das heißt, eine VM der Version 9.0, die Sie auf einem Host mit zwei SMT-Threads pro Kern erstellen, würde auch zwei SMT-Threads pro Kern besitzen.

Sie müssen PowerShell verwenden, um SMT in einer Gast-VM zu aktivieren. Es gibt keine Benutzeroberfläche, die im Hyper-V-Manager bereitgestellt wird. Aktivieren von SMT in einer Gast-VM:

  1. Öffnen Sie ein PowerShell-Fenster mit einem Konto, das Mitglied der Gruppe "Hyper-V-Administratoren" oder gleichwertig ist.
  2. Führen Sie Set-VMProcessor -VMName <VMName> -HwThreadCountPerCore <n> aus, wobei <n> die Anzahl der SMT-Threads pro Kern ist, die die Gast-VM sieht. <n> = 0 legt den HwThreadCountPerCore-Wert fest, welcher der SMT-Threadanzahl des Hosts pro Kernwert entspricht.

Hinweis

In Windows Server 2019 und höher können Sie HwThreadCountPerCore = 0 festlegen, anstatt die Anzahl der SMT-Hostthreads zuzuordnen.

Der folgende Screenshot zeigt Systeminformationen aus dem Gastbetriebssystem, das auf einem virtuellen Computer ausgeführt wird. Es gibt zwei virtuelle Prozessoren und SMT ist aktiviert. Das Gastbetriebssystem erkennt zwei logische Prozessoren, die zum selben Kern gehören.

Screenshot, der msinfo32 auf einer Gast-VM mit aktiviertem SMT zeigt.

Konfigurieren des Hypervisorplanertyps für Windows Server 2016 Hyper-V

Windows Server 2016 Hyper-V verwendet standardmäßig das klassische Hypervisorplanermodell. Sie können optional den Hypervisor so konfigurieren, dass er den Kernplaner verwendet. Der Kernplaner erhöht die Sicherheit, indem er Gast-VPs darauf beschränkt, auf entsprechenden physischen SMT-Paaren zu laufen. Diese Konfiguration unterstützt die Verwendung von VMs mit SMT-Planung für ihre Gast-VPs.

Hinweis

Wir empfehlen, dass alle Kunden, die Windows Server 2016 Hyper-V ausführen, den Kernplaner auswählen, um sicherzustellen, dass die Virtualisierungshosts optimal vor potenziell schädlichen Gast-VMs geschützt sind.

Standardmäßige Verwendung des Kernplaners für Windows Server 2019 Hyper-V

Um sicherzustellen, dass Hyper-V-Hosts in der optimalen Sicherheitskonfiguration bereitgestellt werden, verwendet Windows Server 2019 Hyper-V jetzt standardmäßig das Hypervisor-Kernplanermodell. Der Hostadministrator kann den Host optional für die Verwendung des klassischen Legacy-Planers konfigurieren. Bevor sie die Standardeinstellungen überschreiben, sollten Administratoren die Auswirkungen der einzelnen Planertypen auf die Sicherheit und Leistung von Virtualisierungshosts sorgfältig lesen, verstehen und berücksichtigen. Weitere Informationen finden Sie unter Informationen zur Auswahl des Hyper-V-Hypervisorplanertyps.

Auswählen des Hypervisorplanertyps auf Windows Server

Die Hypervisor-Schedulerkonfiguration wird durch den hypervisorschedulertype BCD-Eintrag gesteuert.

So wählen Sie einen Zeitplantyp aus:

  1. Öffnen Sie eine Eingabeaufforderung mit Administratorrechten.
  2. Geben Sie bcdedit /set hypervisorschedulertype type ein, wobei type eine der folgenden Optionen ist:
  • Classic
  • Core
  • Root

Sie müssen das System neu starten, damit Änderungen am Hypervisorplanertyp wirksam werden.

Hinweis

Der Hypervisorstammplaner wird zu diesem Zeitpunkt für Windows Server Hyper-V nicht unterstützt. Hyper-V-Administratoren sollten nicht versuchen, den Stammplaner für die Verwendung mit Servervirtualisierungsszenarien zu konfigurieren.

Ermitteln des aktuellen Planertyps

Sie können ermitteln, welchen Hypervisor-Schedulertyp Hyper-V derzeit verwendet, indem Sie das Ereignisanzeige-Systemprotokoll untersuchen. Sie können die neueste Ereignis-ID 2 des Hypervisorstarts sehen, die den Hypervisorplanertyp meldet, der beim Hypervisorstart konfiguriert wurde. Sie können die Hypervisor-Startereignisse aus der Windows-Ereignisanzeige oder in PowerShell abrufen.

Die Ereignis-ID 2 für Hypervisorstarts gibt den Hypervisorplanertyp an. Dabei gilt Folgendes:

  • 1 = Klassischer Planer, SMT deaktiviert
  • 2 = Klassischer Planer
  • 3 = Kernplaner
  • 4 = Stammplaner

Screenshot des Eigenschaftenfensters „Hypervisor-Startereignis-ID 2“. Der Benutzer hat die Registerkarte „Allgemein“ ausgewählt, auf der angezeigt wird, dass der Hypervisor-Schedulertyp „0x2“ ist.

Screenshot des Fensters „Ereignisanzeige“. Der Benutzer hat „Hyper-V-Hypervisor-Startereignis-ID 2“ aus der Liste der Ereignisse ausgewählt, der Eintrag wird in Dunkelblau hervorgehoben.

Abfragen des Startereignisses des Hyper-V-Hypervisorplanertyps mithilfe von PowerShell

Führen Sie die folgenden Befehle aus einer PowerShell-Eingabeaufforderung aus, um die Hypervisor-Ereignis-ID 2 mithilfe von PowerShell abzufragen:

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

Screenshot einer Abfrage für Hypervisor-Startereignis-ID 2. Laut den Ergebnissen lautet der Hypervisor-Schedulertyp „0x2“.