Freigeben über


Verwalten von Hyper-V-Hypervisorplanertypen

In diesem Artikel werden die Modi der Planungslogik für virtuelle Prozessor in Windows Server und Windows beschrieben. 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.

Hintergrund

Bevor Sie die Logik und Steuerelemente hinter der Planung virtueller Hyper-V-Prozessoren in Betracht ziehen, ist es wichtig, bestimmte Konzepte wie gleichzeitiges Multithreading (SMT) zu verstehen und wie Hyper-V Prozessoren virtualisiert.

Verstehen von SMT

SMT ist eine Technik im modernen Prozessordesign, die eine Möglichkeit für separate, unabhängige Ausführungsthreads zum Freigeben von Prozessorressourcen bietet. SMT bietet in der Regel eine bescheidene Leistungssteigerung für Workloads. Es parallelisiert wenn möglich Berechnungen, und erhöht den Anweisungsdurchsatz. Wenn Threads jedoch für gemeinsam genutzte Prozessorressourcen miteinander konkurrieren, gibt es manchmal keine spürbare Verbesserung der Leistung. Es kann sogar eine leichte Abnahme der Leistung geben.

Um SMT mit Windows Server zu verwenden, müssen Sie über einen kompatiblen Prozessor verfügen. Prozessoren mit Intel Hyper-Threading Technology (Intel HT Technology) oder Advanced Micro Devices (AMD) SMT sind Beispiele für kompatible Prozessoren.

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-Schedulertypen in Betracht ziehen, sollten Sie Hyper-V Architektur verstehen. Eine detaillierte Zusammenfassung der Funktionsweise dieser Architektur finden Sie unter Hyper-V Technologieübersicht. Beachten Sie jetzt die folgenden Konzepte:

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

  • Eine 1:1-Zuordnung besteht zwischen den virtuellen Prozessoren der Stammpartition und den zugrunde liegenden logischen Prozessoren. Ein virtueller Hostprozessor wird immer auf demselben zugrunde liegenden logischen Prozessor ausgeführt. Es gibt keine Migration virtueller Stammpartitionsprozessoren.

  • Standardmäßig können die logischen Prozessoren, die die virtuellen Stammpartitionsprozessoren hosten, auch virtuelle Gastprozessoren ausführen.

  • Der Hypervisor kann einen virtuellen Gastprozessor für die Ausführung auf einem beliebigen verfügbaren logischen Prozessor planen. Der Hypervisor-Scheduler versucht, die zeitliche Cachelokalität, die nichtuniforme Speicherzugriffstopologie (NUMA) und viele andere Faktoren zu berücksichtigen, wenn ein virtueller Gastprozessor geplant wird. Letztendlich kann der virtuelle Prozessor jedoch auf einem beliebigen logischen Hostprozessor geplant werden.

Hypervisorplanertypen

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

Klassischer Planer

Der klassische Scheduler ist der Standardplaner, der in allen Versionen von Hyper-V früher als Windows Server 2019 verwendet wird. Der klassische Planer bietet ein faires, präemptives Round-Robin-Planungsmodell für virtuelle Gastprozessoren.

Der klassische Planungstyp ist für die meisten herkömmlichen Hyper-V-Anwendungen geeignet, wie etwa private Clouds, Hostinganbieter und ähnliche Szenarien. Die Leistungsmerkmale des klassischen Schedulertyps sind optimiert, um eine vielzahl von Virtualisierungsszenarien zu unterstützen, z. B.:

  • Übermäßige Abonnements virtueller Prozessoren zu logischen Prozessoren.
  • Gleichzeitiges Ausführen vieler heterogener VMs und Workloads.
  • Ausführen umfangreicher Hochleistungs-VMs.
  • Unterstützung des vollständigen Funktionssatzes von Hyper-V ohne Einschränkungen und andere Szenarien.

Kernplaner

Der Hypervisor core scheduler ist eine Alternative zur klassischen Schedulerlogik. Der Kernplaner ist ab Windows Server 2016 und Windows 10, Version 1607, verfügbar. 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 logische Prozessoren in Gruppen von zwei befinden, werden virtuelle Prozessoren in Gruppen von zwei geplant, und ein Kern wird niemals zwischen virtuellen Computern geteilt. Wenn Sie einen virtuellen Prozessor für einen virtuellen Computer ohne SMT-Aktivierung planen, nutzt dieser virtuelle Prozessor den gesamten Kern, wenn er ausgeführt wird. Wenn Sie den Kernzeitplaner verwenden:

  • Es wird für eine starke Sicherheitsgrenze für die Isolation von Gastarbeitsauslastungen gesorgt. Virtuelle Gastprozessoren können nur auf zugrunde liegenden physischen Kernpaaren ausgeführt werden, wodurch die Sicherheitsanfälligkeit gegenüber Snooping-Angriffen im Side-Channel reduziert wird.
  • Sie reduziert die Streuung des Durchsatzes.
  • Die Leistung wird potenziell reduziert. Wenn nur ein virtueller Prozessor in einer Gruppe ausgeführt werden kann, wird nur eins der Anweisungsstreams im Kern gestartet. Die andere bleibt ungenutzt.
  • Das Betriebssystem und Anwendungen, die auf der Gast-VM ausgeführt werden, können SMT-Verhalten und Programmierschnittstellen (APIs) verwenden, um die Arbeit über SMT-Threads zu steuern und zu verteilen, ähnlich wie bei einem physischen Computer.

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

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. In der Betriebssysteminstanz der Stammpartition verwaltet der NT-Scheduler alle Aspekte der Zuweisung von Arbeit zu systemlogischen Prozessoren.

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. Sie kann diese Daten als Eingabe für die Terminplanungsrichtlinie verwenden und sie auf alle anderen Arbeitslasten im System anwenden.
  • 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.

VM CPU-Ressourcensteuerung und der Root-Scheduler

Die Ressourcensteuerelemente, die der Hyper-V Hypervisor auf einzelnen VM-Prozessoren verwendet, werden beim Aktivieren des Hypervisorstammplaners nicht unterstützt. Im Stammbetriebssystem verwaltet die Schedulerlogik Hostressourcen auf globaler Basis und verwaltet nicht die Gastressourcen einzelner VMs. Die Hyper-V Ressourcensteuerelemente pro VM-Prozessor, z. B. Kapitälchen, Gewichtungen und Reserven, gelten nur, wenn der Hypervisor die Planung virtueller Prozessoren direkt steuert, z. B. mit den klassischen und kernigen Schedulertypen.

Stammplanerverwendung auf Serversystemen

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

Aktivieren von SMT in Gast-VMs

Nachdem Sie den Hypervisor des Virtualisierungshosts für die Verwendung des zentralen Schedulertyps konfiguriert haben, können Sie auch Gast-VMs für die Verwendung von SMT konfigurieren. Insbesondere können Sie die Anzahl der virtuellen SMT-Threads angeben, die für eine Gast-VM verfügbar gemacht werden sollen. Die Gastbetriebssystem-Scheduler- und VM-Workloads können dann die SMT-Topologie in ihrer eigenen Arbeitsplanung erkennen und verwenden.

  • In Windows Server 2016 ist das Gast-SMT nicht standardmäßig konfiguriert. Ein Hyper-V-Hostadministrator muss es explizit aktivieren.
  • In Windows Server 2019 und höheren Versionen erben neue VMs, die Sie auf dem Host erstellen, standardmäßig die SMT-Hosttopologie. Beispielsweise verfügt eine VM der Version 9.0, die Sie auf einem Host mit zwei SMT-Threads pro Kern erstellen, auch über zwei SMT-Threads pro Kern.

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 mithilfe eines Kontos, das Mitglied der Hyper-V Administratoren oder einer entsprechenden Gruppe ist.

  2. Führen Sie Set-VMProcessor -VMName <VM-name> -HwThreadCountPerCore <n> aus, wobei <n> die Anzahl der SMT-Threads pro Kern ist, die die Gast-VM sieht. Wenn Sie einen Wert von 0 für <n> verwenden, wird der Wert HwThreadCountPerCore auf die SMT-Threadanzahl pro Kern des Hosts festgelegt.

    Hinweis

    Windows Server 2016 unterstützt keine Einstellung HwThreadCountPerCore auf 0.

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 gleichen Kern gehören.

Screenshot des Fensters

Konfigurieren des Hypervisor-Schedulertyps

Der Typ des Hypervisor-Schedulers, der standardmäßig verwendet Hyper-V, hängt von der Betriebssystemversion ab. Unabhängig davon, welcher Scheduler der Standard auf Ihrem Betriebssystem ist, können Sie den Hypervisor so konfigurieren, dass er den Kernplaner verwendet. Der Kernzeitplaner erhöht die Sicherheit, indem er Gast-virtuelle Prozessoren auf das Ausführen auf entsprechenden physikalischen SMT-Paaren einschränkt. Diese Konfiguration unterstützt die Verwendung von VMs mit SMT-Planung für ihre virtuellen Gastprozessoren.

Hinweis

Unter Windows Server 2016 verwendet Hyper-V standardmäßig den klassischen Zeitplan. Wenn Sie Hyper-V unter Windows Server 2016 oder höher verwenden, empfiehlt es sich, den Kernplaner auszuwählen. Dadurch wird sichergestellt, dass Ihre Virtualisierungshosts optimal vor potenziell schädlichen Gast-VMs geschützt sind.

Berücksichtigen Sie die Einflüsse auf Sicherheit und Leistung

Um sicherzustellen, dass Hyper-V Hosts in einer optimalen Sicherheitskonfiguration bereitgestellt werden, verwendet Hyper-V standardmäßig ab Windows Server 2019 das grundlegende Hypervisor-Schedulermodell. Der Hostadministrator kann den Host optional für die Verwendung des klassischen Legacy-Planers konfigurieren. Bevor Sie die Standardeinstellungen außer Kraft setzen, sollten Administratoren die Auswirkungen jedes Zeitplantyps 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 (Boot Configuration Data) gesteuert.

So wählen Sie einen Zeitplantyp aus:

  1. Öffnen Sie eine Eingabeaufforderung mit Administrationsrechten.

  2. Geben Sie bcdedit /set hypervisorschedulertype <type>ein, wobei <type> eine der folgenden Optionen angezeigt wird:

    • Classic
    • Core
    • Root

Sie müssen das System neu starten, damit alle Änderungen, die Sie am Hypervisor-Schedulertyp vornehmen, wirksam werden.

Hinweis

Der Hypervisorstammplaner wird derzeit auf Hyper-V unter Windows Server 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 den Hypervisor-Schedulertyp ermitteln, den Hyper-V derzeit verwendet, indem Sie das Windows-Systemprotokoll untersuchen. Suchen Sie nach dem neuesten Hypervisorstartereignis mit einer ID von 2. Dieses Ereignis meldet den Hypervisor-Schedulertyp, der beim Hypervisorstart konfiguriert wurde. Die folgenden Werte sind für den Hypervisor-Schedulertyp möglich:

Wert Schedulertyp
1 Klassischer Zeitplan, SMT deaktiviert
2 Klassischer Zeitplan
3 Kernplaner
4 Stammplaner

Sie können die Ereignisanzeige oder PowerShell verwenden, um Hypervisor-Startereignisprotokolle anzuzeigen.

Screenshot des Eigenschaftenfensters

Screenshot der Ereignisse in der Ereignisanzeige. Ein Hyper-V-Hypervisor-Startereignis mit einer ID von 2 ist ausgewählt. Ein niedrigerer Bereich zeigt Ereignisdetails an.

Verwenden von PowerShell zum Abfragen von Systemprotokollen für ein Hypervisor-Startereignis

Um die Systemprotokolle für ein Hypervisorereignis mit einer ID von 2 mithilfe von PowerShell abzufragen, führen Sie den folgenden Befehl aus:

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

Screenshot eines PowerShell-Fensters. Ein Befehl fragt das neueste Hypervisor-Startereignis mit ID 2 ab. Die Ausgabe zeigt den Schedulertyp als 0x2 an.