Delen via


Hyper-V hypervisorplannertypen beheren

In dit artikel worden de modi van planningslogica voor virtuele processoren in Windows Server en Windows beschreven. Deze modi, of scheduler-typen, bepalen hoe de Hyper-V hypervisor werk toewijst en beheert voor virtuele gastprocessors. Een Hyper-V hostbeheerder kan:

  • Selecteer hypervisorplannertypen die het meest geschikt zijn voor virtuele gastmachines (VM's).
  • Configureer VM's om te profiteren van planningslogica.

Achtergrond

Voordat u de logica en besturingselementen achter Hyper-V virtuele processorplanning overweegt, is het belangrijk om bepaalde concepten zoals gelijktijdige multithreading (SMT) te begrijpen en hoe Hyper-V processors virtualiseert.

Inzicht in SMT

SMT is een techniek in modern processorontwerp die een manier biedt voor afzonderlijke, onafhankelijke uitvoeringsthreads om processorbronnen te delen. SMT geeft doorgaans een bescheiden prestatieboost voor workloads. Het parallelliseert berekeningen indien mogelijk, waardoor de doorvoer van instructies wordt verhoogd. Wanneer threads echter met elkaar concurreren voor gedeelde processorbronnen, is er soms geen merkbare verbetering in de prestaties. Er kan zelfs een lichte afname van de prestaties zijn.

Als u SMT wilt gebruiken met Windows Server, moet u een compatibele processor hebben. Processors met Intel Hyper-Threading Technology (Intel HT Technology) of Advanced Micro Devices (AMD) SMT zijn voorbeelden van compatibele processors.

Voor de doeleinden van dit artikel zijn de beschrijvingen van SMT en hoe deze door Hyper-V worden gebruikt, evenzeer van toepassing op Intel- en AMD-systemen.

Inzicht in hoe Hyper-V processors virtualiseert

Voordat u hypervisorplannertypen overweegt, moet u inzicht hebben in Hyper-V architectuur. Zie Hyper-V Technology-overzicht voor een gedetailleerd overzicht van de werking van deze architectuur. Houd voorlopig rekening met de volgende concepten:

  • Hyper-V vm-partities maakt en beheert, rekenresources toewijst en deelt, onder controle van de hypervisor. Partities bieden sterke isolatiegrenzen tussen alle gast-VM's en tussen gast-VM's en de hoofdpartitie.

  • De hoofdpartitie is zelf een VM-partitie, hoewel deze unieke eigenschappen en meer bevoegdheden heeft dan gast-VM's. De hoofdpartitie:

    • Biedt beheerservices waarmee alle gast-VM's worden beheerd.
    • Biedt ondersteuning voor virtuele apparaten voor gasten.
    • Beheert alle apparaatinvoer en -uitvoer voor gast-VM's.

    U wordt aangeraden geen toepassingsworkloads uit te voeren in de hoofdpartitie.

  • Er bestaat een een-op-een-toewijzing tussen de virtuele processors van de hoofdpartitie en de onderliggende logische processors. Een virtuele hostprocessor wordt altijd uitgevoerd op dezelfde onderliggende logische processor. Er is geen migratie van virtuele processors met hoofdpartities.

  • Standaard kunnen de logische processors die als host fungeren voor de virtuele processors van de hoofdpartitie ook virtuele gastprocessors uitvoeren.

  • De hypervisor kan een virtuele gastprocessor plannen om te worden uitgevoerd op elke beschikbare logische processor. De hypervisorplanner probeert de tijdelijke cachelocatie, de NUMA-topologie (Nonuniform Memory Access) en vele andere factoren te overwegen wanneer een virtuele gastprocessor wordt gepland. Maar uiteindelijk kan de virtuele processor worden gepland op elke logische hostprocessor.

Soorten hypervisorschedulers

De Hyper-V hypervisor ondersteunt verschillende modi van scheduler-logica, die bepalen hoe de hypervisor virtuele processors plant op de onderliggende logische processors. Deze scheduler-typen zijn:

De klassieke planner

De klassieke planner is de standaardplanner die wordt gebruikt voor alle versies van Hyper-V ouder dan Windows Server 2019. De klassieke scheduler biedt een fairshare, preëmptieve, rondesgewijs planningsmodel voor virtuele gastprocessors.

Het klassieke scheduler-type is geschikt voor meeste traditionele Hyper-V gebruiken, zoals privéclouds, hostingproviders, enzovoort. De prestatiekenmerken van het klassieke scheduler-type zijn geoptimaliseerd ter ondersteuning van een breed scala aan virtualisatiescenario's, zoals:

  • Over-abonneren van virtuele processors op logische processors.
  • Het uitvoeren van veel heterogene VM's en workloads tegelijk.
  • Het uitvoeren van grootschalige vm's met hoge prestaties.
  • Ondersteuning voor de volledige functieset van Hyper-V zonder beperkingen en andere scenario's.

De kernplanner

De hypervisorkernplanner is een alternatief voor de klassieke scheduler-logica. De core scheduler is beschikbaar vanaf Windows Server 2016 en Windows 10 versie 1607. De core scheduler biedt een sterke beveiligingsgrens voor isolatie van gastworkloads. Het vermindert ook de prestatievariabiliteit voor workloads binnen VM's die worden uitgevoerd op een SMT-virtualisatiehost. De core scheduler ondersteunt het uitvoeren van zowel SMT- als niet-SMT-VM's tegelijkertijd op dezelfde SMT-virtualisatiehost.

De kernplanner:

  • Maakt gebruik van de SMT-topologie van de virtualisatiehost.
  • U kunt DESGEWENST SMT-paren beschikbaar maken voor gast-VM's.
  • Hiermee worden groepen gast-virtuele processors van dezelfde virtuele machine gepland op groepen logische SMT-processors.

Dit werk gebeurt symmetrisch. Als logische processors zich in groepen van twee bevinden, worden virtuele processors gepland in groepen van twee en wordt er nooit een kern gedeeld tussen VM's. Wanneer u een virtuele processor plant voor een virtuele machine zonder SMT ingeschakeld, verbruikt die virtuele processor de volledige kern wanneer deze wordt uitgevoerd. Wanneer u de core scheduler gebruikt:

  • Het creëert een sterke beveiligingsgrens voor isolatie van gastworkloads. Virtuele gastprocessors kunnen alleen worden uitgevoerd op onderliggende fysieke kernparen, waardoor de kwetsbaarheid voor afluisteraanvallen via zijkanalen wordt verminderd.
  • Het vermindert de variabiliteit in doorvoer.
  • Het kan de prestaties verminderen. Als er slechts één virtuele processor in een groep actief kan zijn, wordt slechts één van de instructiestromen in de kern gestart. De andere blijft onbenut.
  • Het besturingssysteem (OS) en toepassingen die worden uitgevoerd op de gast-VM kunnen SMT-gedrag en programmeerinterfaces (API's) gebruiken om werk te beheren en te distribueren over SMT-threads, net zoals bij een fysieke machine.

Vanaf Windows Server 2019 gebruikt Hyper-V standaard de kernplanner. In eerdere versies zoals Windows Server 2016 is de core scheduler optioneel en is de klassieke scheduler de standaardplanner.

Kernplannergedrag waarbij host SMT is uitgeschakeld

In sommige gevallen kunt u de hypervisor configureren voor het gebruik van het type core scheduler, maar de SMT-functie is uitgeschakeld of niet aanwezig is op de virtualisatiehost. In deze gevallen gebruikt Hyper-V het klassieke scheduler-gedrag, ongeacht de instelling van het type hypervisor scheduler.

De hoofdplanner

De root scheduler is aangekomen met Windows 10, versie 1803. Wanneer u het type root scheduler inschakelt, geeft de hypervisor het hoofdpartitiebeheer van werkplanning. In de besturingssysteeminstantie van de hoofdpartitie beheert de NT scheduler alle aspecten van het toewijzen van werk aan logische systeemprocessors.

De root scheduler voldoet aan de unieke vereisten voor de ondersteuning van een hulpprogrammapartitie en biedt sterke workloadisolatie, zoals wordt gebruikt met Windows Defender Application Guard (WDAG). In dit scenario biedt het overlaten van planningsverantwoordelijkheden aan het hoofdbesturingssystemen verschillende voordelen:

  • U kunt cpu-resourcebesturingselementen gebruiken die van toepassing zijn op containerscenario's met de partitie van het hulpprogramma, waardoor beheer en implementatie worden vereenvoudigd.
  • De hoofd-besturingssysteemplanner kan gemakkelijk metrische gegevens verzamelen over cpu-gebruik van workloads in de container. Deze gegevens kunnen worden gebruikt als invoer voor het planningsbeleid en deze toepassen op alle andere workloads in het systeem.
  • Dezezelfde metrische gegevens helpen ook om het werk dat in een toepassingscontainer is gedaan aan het hostsysteem toe te schrijven. Het bijhouden van deze metrische gegevens is moeilijker met traditionele VM-workloads, waarbij sommige werk doen namens alle actieve VM's in de hoofdpartitie.

Root scheduler gebruiken op clientsystemen

Vanaf Windows 10 versie 1803 wordt de root scheduler standaard alleen gebruikt op clientsystemen, wat betekent:

  • U kunt de hypervisor inschakelen om beveiliging op basis van virtualisatie en WDAG-workloadisolatie te ondersteunen.
  • Het is belangrijk om toekomstige systemen goed te bedienen met heterogene kernarchitecturen.

Deze configuratie is de enige ondersteunde configuratie van hypervisorplanners voor clientsystemen. Beheerders mogen het standaardtype hypervisorplanner niet overschrijven op Windows-clientsystemen.

Beheersing van VM-CPU-resources en de basisscheduler

De resourcebesturingselementen die de Hyper-V hypervisor op afzonderlijke VM-processors gebruikt, worden niet ondersteund wanneer u de hoofdplanner van de hypervisor inschakelt. In het hoofdbesturingssystemen beheert de plannerlogica hostbronnen op globale basis en worden de gastbronnen van afzonderlijke VM's niet beheerd. De Hyper-V processorresourcebesturing per VM, zoals beperkingen, gewichten en reserves, zijn alleen van toepassing wanneer de hypervisor de planning van virtuele processors rechtstreeks beheert, bijvoorbeeld met de klassieke en core plannertypen.

Root scheduler gebruiken op serversystemen

We bevelen niet aan om de root scheduler te gebruiken met Hyper-V op servers. De prestatiekenmerken zijn nog niet volledig gekarakteriseerd en afgestemd op het brede scala aan workloads die typisch zijn voor veel implementaties van servervirtualisatie.

SMT inschakelen in gast-VM's

Nadat u de hypervisor van de virtualisatiehost hebt geconfigureerd voor het gebruik van het type core scheduler, kunt u ook gast-VM's configureren voor het gebruik van SMT. U kunt met name het aantal virtuele SMT-threads opgeven dat beschikbaar moet worden gemaakt voor een gast-VM. De planner van het gastbesturingssysteem en de VM-workloads kunnen vervolgens de SMT-topologie detecteren en gebruiken bij hun eigen werkplanning.

  • In Windows Server 2016 is gast SMT niet standaard geconfigureerd. Een Hyper-V hostbeheerder moet deze expliciet inschakelen.
  • In Windows Server 2019 en hoger nemen nieuwe VM's die u op de host maakt de SMT-topologie van de host standaard over. Een VM met versie 9.0 die u op een host maakt met twee SMT-threads per kern heeft bijvoorbeeld ook twee SMT-threads per kern.

U moet PowerShell gebruiken om SMT in te schakelen in een gast-VM. Er is geen gebruikersinterface beschikbaar in Hyper-V Manager. SMT inschakelen in een gast-VM:

  1. Open een PowerShell-venster met behulp van een account dat lid is van de Hyper-V Administrators of een equivalente groep.

  2. Voer Set-VMProcessor -VMName <VM-name> -HwThreadCountPerCore <n>uit, waar <n> is het aantal SMT-threads per kern dat de gast-VM ziet. Als u een waarde van 0 voor <n>gebruikt, wordt de HwThreadCountPerCore waarde ingesteld op het aantal SMT-threads per kern van de host.

    Opmerking

    Windows Server 2016 biedt geen ondersteuning voor instelling HwThreadCountPerCore voor 0.

In de volgende schermopname ziet u systeemgegevens die zijn opgehaald uit het gastbesturingssystem dat wordt uitgevoerd op een virtuele machine. Er zijn twee virtuele processors en SMT is ingeschakeld. Het gastbesturingssysteem detecteert twee logische processors die deel uitmaken van dezelfde kern.

Schermopname van het venster Systeemgegevens. De processorlijn is geselecteerd. Het bevat informatie over één kern en twee processors.

Het type hypervisorplanner configureren

Het type hypervisorplanner dat Hyper-V standaard gebruikt, is afhankelijk van de versie van het besturingssysteem. Ongeacht welke scheduler de standaardversie van uw besturingssysteem is, kunt u de hypervisor configureren om de core scheduler te gebruiken. De core scheduler verhoogt de beveiliging door te beperken dat virtuele gastprocessors worden uitgevoerd op bijbehorende fysieke SMT-paren. Deze configuratie ondersteunt het gebruik van VM's met SMT-planning voor hun virtuele gastprocessors.

Opmerking

In Windows Server 2016 gebruikt Hyper-V standaard de klassieke scheduler. Als u Hyper-V op Windows Server 2016 of hoger gebruikt, raden we u aan de kernplanner te selecteren. Door deze switch te maken, worden uw virtualisatiehosts optimaal beschermd tegen mogelijk schadelijke gast-VM's.

Houd rekening met de gevolgen voor beveiliging en prestaties

Om ervoor te zorgen dat Hyper-V hosts worden geïmplementeerd in een optimale beveiligingsconfiguratie, gebruikt Hyper-V standaard het core hypervisor scheduler-model vanaf Windows Server 2019. De hostbeheerder kan eventueel de host configureren voor gebruik van de verouderde klassieke scheduler. Voordat de standaardinstellingen worden overschreven, moeten beheerders de gevolgen van elk scheduler-type zorgvuldig lezen, begrijpen en overwegen voor de beveiliging en prestaties van virtualisatiehosts. Zie Over Hyper-V hypervisor scheduler type selectie voor meer informatie.

Selecteer het type hypervisorplanner op Windows Server

De configuratie van de hypervisorplanner wordt bepaald door de hypervisorschedulertype BCD-vermelding (Boot Configuration Data).

Een scheduler-type selecteren:

  1. Open de opdrachtprompt met beheerdersbevoegdheden.

  2. Voer bcdedit /set hypervisorschedulertype <type> een <type> van de volgende opties in:

    • Classic
    • Core
    • Root

U moet het systeem opnieuw opstarten voor alle wijzigingen die u aanbrengt in het type hypervisorplanner om van kracht te worden.

Opmerking

De hoofdplanner van de hypervisor wordt momenteel niet ondersteund op Hyper-V op Windows Server. Hyper-V beheerders mogen niet proberen de hoofdplanner te configureren voor gebruik met servervirtualisatiescenario's.

Het huidige type scheduler bepalen

U kunt het type hypervisorplanner bepalen dat Hyper-V momenteel gebruikt door het Windows-systeemlogboek te bekijken. Zoek naar de meest recente startgebeurtenis van de hypervisor met een id van 2. Deze gebeurtenis rapporteert het type hypervisorplanner dat is geconfigureerd bij het starten van de hypervisor. De volgende waarden zijn mogelijk voor het type hypervisorplanner:

Waarde Schedulertype
1 Klassieke planner, SMT uitgeschakeld
2 Klassieke planner
3 Kernplanner
4 Hoofdplanner

U kunt Logboekviewer of PowerShell gebruiken om opstartgebeurtenislogboeken van de hypervisor te bekijken.

Schermopname van het venster Logboekeigenschappen voor een Hyper-V-Hypervisor-gebeurtenis met id 2. Tekst op het tabblad Algemeen geeft een scheduler-type 0x2 aan.

Schermopname van gebeurtenissen in Logboeken. Er is een Hyper-V-Hypervisor-startgebeurtenis met een id van 2 geselecteerd. In een lager deelvenster worden gebeurtenisdetails weergegeven.

PowerShell gebruiken om systeemlogboeken op te vragen voor een hypervisor-startgebeurtenis

Als u een query wilt uitvoeren op de systeemlogboeken voor een hypervisorgebeurtenis met een id van 2 met behulp van PowerShell, voert u de volgende opdracht uit:

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

Schermopname van een PowerShell-venster. Een opdracht voert een query uit voor de meest recente hypervisor-gebeurtenis met ID 2. De uitvoer geeft het schedulertype weer als 0x2.