Dela via


Hantera Hyper-V hypervisor-schemaläggningstyper

I den här artikeln beskrivs lägena för schemaläggningslogik för virtuella processorer i Windows Server och Windows. Dessa lägen, eller schemaläggartyper, avgör hur Hyper-V hypervisor allokerar och hanterar arbete mellan virtuella gästprocessorer. En Hyper-V värdadministratör kan:

  • Välj hypervisor scheduler-typer som passar bäst för virtuella gästdatorer (VM).
  • Konfigurera virtuella datorer för att dra nytta av schemaläggningslogik.

Background

Innan du överväger logiken och kontrollerna bakom Hyper-V schemaläggning av virtuella processorer är det viktigt att förstå vissa begrepp som samtidig multitrådning (SMT) och hur Hyper-V virtualiserar processorer.

Förstå SMT

SMT är en teknik i modern processordesign som ger ett sätt för separata, oberoende körningstrådar att dela processorresurser. SMT ger vanligtvis en blygsam prestandaökning för arbetsbelastningar. Den parallelliserar beräkningar när det är möjligt, vilket ökar instruktionens dataflöde. Men när trådar konkurrerar med varandra om delade processorresurser finns det ibland ingen märkbar förbättring av prestanda. Det kan till och med bli en liten minskning av prestanda.

För att kunna använda SMT med Windows Server måste du ha en kompatibel processor. Processorer med Intel Hyper-Threading Technology (Intel HT Technology) eller AMD (Advanced Micro Devices) SMT är exempel på kompatibla processorer.

I den här artikeln gäller beskrivningarna av SMT och hur det används av Hyper-V lika för både Intel- och AMD-system.

Förstå hur Hyper-V virtualiserar processorer

Innan du överväger typer av hypervisor-schemaläggare bör du förstå Hyper-V arkitektur. En detaljerad sammanfattning av hur den här arkitekturen fungerar finns i översikten överHyper-V Teknik. För tillfället bör du ha följande begrepp i åtanke:

  • Hyper-V skapar och hanterar vm-partitioner, allokerar och delar beräkningsresurser mellan dem, under kontroll av hypervisor-programmet. Partitioner ger starka isoleringsgränser mellan alla virtuella gästdatorer och mellan virtuella gästdatorer och rotpartitionen.

  • Rotpartitionen är i sig en VM-partition, även om den har unika egenskaper och större behörigheter än virtuella gästdatorer. Rotpartitionen:

    • Tillhandahåller hanteringstjänster som styr alla virtuella gästdatorer.
    • Tillhandahåller stöd för virtuella enheter för gäster.
    • Hanterar alla enhetsindata och utdata för virtuella gästdatorer.

    Vi rekommenderar att du inte kör några programarbetsbelastningar i rotpartitionen.

  • Det finns en en-till-en-mappning mellan rotpartitionens virtuella processorer och de underliggande logiska processorerna. En virtuell värdprocessor körs alltid på samma underliggande logiska processor. Det finns ingen migrering av virtuella rotpartitionsprocessorer.

  • Som standard kan de logiska processorer som är värdar för virtuella rotpartitionsprocessorer också köra virtuella gästprocessorer.

  • Hypervisor-programmet kan schemalägga att en virtuell gästprocessor körs på valfri tillgänglig logisk processor. Hypervisor-schemaläggaren försöker ta hänsyn till temporal cachelokalitet, numa-topologi (nonuniform memory access) och många andra faktorer när en virtuell gästprocessor schemaläggs. Men i slutändan kan den virtuella processorn schemaläggas på valfri logisk värdprocessor.

Typer av Hypervisor-schemaläggare

Hyper-V-hypervisor-programmet stöder flera lägen för scheduler-logik, som avgör hur hypervisor-programmet schemalägger virtuella processorer på underliggande logiska processorer. Följande typer av schemaläggare är:

Den klassiska schemaläggaren

Den klassiska schemaläggaren är standardschemaläggaren som används i alla versioner av Hyper-V tidigare än Windows Server 2019. Den klassiska schemaläggaren tillhandahåller en schemaläggningsmodell för rättvis resurs, förebyggande och resursallokering för virtuella gästprocessorer.

Den klassiska scheduler-typen är lämplig för de flesta traditionella Hyper-V använder, till exempel privata moln, värdleverantörer och så vidare. Prestandaegenskaperna för den klassiska scheduler-typen är optimerade för att stödja en mängd olika virtualiseringsscenarier, till exempel:

  • Överallokering av virtuella processorer till logiska processorer.
  • Kör många heterogena virtuella datorer och arbetsbelastningar samtidigt.
  • Köra storskaliga virtuella datorer med höga prestanda.
  • Stöd för den fullständiga funktionsuppsättningen av Hyper-V utan begränsningar och andra scenarier.

Kärnschemaläggaren

Hypervisor Core Scheduler är ett alternativ till den klassiska scheduler-logiken. Den grundläggande schemaläggaren är tillgänglig från och med Windows Server 2016 och Windows 10 version 1607. Core Scheduler erbjuder en stark säkerhetsgräns för isolering av gästarbetsbelastningar. Det minskar också prestandavariationen för arbetslaster i virtuella datorer som körs på en SMT-aktiverad virtualiseringsvärd. Core Scheduler stöder körning av både SMT- och icke-SMT-virtuella datorer samtidigt på samma SMT-aktiverade virtualiseringsvärd.

Kärnschemaläggaren:

  • Använder värd för virtualiseringens SMT-topologi.
  • Du kan valfritt exponera SMT-par för virtuella gästdatorer.
  • Schemalägger grupper av virtuella gästprocessorer från samma virtuella dator till grupper av logiska SMT-processorer.

Det här arbetet sker symmetriskt. Om logiska processorer finns i grupper om två schemaläggs virtuella processorer i grupper om två och en kärna delas aldrig mellan virtuella datorer. När du schemalägger en virtuell processor för en virtuell dator utan SMT aktiverat förbrukar den virtuella processorn hela kärnan när den körs. När du använder kärnschemaläggaren:

  • Det skapar en stark säkerhetsgräns för isolering av gästarbetsbelastningar. Virtuella gästprocessorer kan bara köras på underliggande fysiska kärnpar, vilket minskar sårbarheten för sidokanalsattacker.
  • Det minskar variabiliteten i dataflödet.
  • Det kan potentiellt minska prestandan. Om endast en virtuell processor i en grupp kan köras startas bara en av instruktionsströmmarna i kärnan. Den andra lämnas inaktiv.
  • Operativsystemet (OS) och program som körs på den virtuella gästdatorn kan använda SMT-beteende och programmeringsgränssnitt (API:er) för att styra och distribuera arbete mellan SMT-trådar, precis som med en fysisk dator.

Från och med Windows Server 2019 använder Hyper-V som standard kärnschemaläggaren. I tidigare versioner som Windows Server 2016 är den grundläggande schemaläggaren valfri och den klassiska schemaläggaren är standard.

Core scheduler-beteende med värd-SMT inaktiverat

I vissa fall kan du konfigurera hypervisor-programmet så att det använder den grundläggande scheduler-typen, men SMT-funktionen är inaktiverad eller finns inte på virtualiseringsvärden. I dessa fall använder Hyper-V det klassiska scheduler-beteendet oavsett inställningen för hypervisor-schemaläggarens typ.

Rotschemaläggare

Principalschemaläggaren kom med Windows 10, version 1803. När du aktiverar rotschemaläggningstypen ger hypervisor-programmet rotpartitionskontroll för schemaläggning av arbete. I rotpartitionens OS-instans hanterar NT-schemaläggaren alla aspekter av tilldelning av arbete till system logiska processorer.

Rotschemaläggaren hanterar de unika kraven för att stödja en verktygspartition och tillhandahålla stark arbetsbelastningsisolering, som används med Windows Defender Application Guard (WDAG). I det här scenariot innebär det flera fördelar med att lämna schemaläggningsansvaret till rotoperativsystemet:

  • Du kan använda cpu-resurskontroller som gäller för containerscenarier med verktygspartitionen, vilket förenklar hanteringen och distributionen.
  • Rot-OS-schemaläggaren kan enkelt samla in mått om cpu-arbetsbelastningsanvändning i containern. Den kan använda dessa data som indata till schemaläggningsprincipen och tillämpa dem på alla andra arbetsbelastningar i systemet.
  • Samma mått hjälper också till att tillskriva arbete som utförts i en programcontainer till värdsystemet. Det är svårare att spåra dessa mått med traditionella arbetsbelastningar för virtuella datorer, där en del arbete utförs för alla virtuella datorer som körs i rotpartitionen.

Root Scheduler-användning på klientsystem

Från och med Windows 10, version 1803, används rotschemaläggaren som standard endast på klientsystem, vilket innebär:

  • Du kan aktivera hypervisor-programmet för att stödja virtualiseringsbaserad säkerhet och WDAG-arbetsbelastningsisolering.
  • Det är viktigt att använda framtida system korrekt med heterogena kärnarkitekturer.

Den här konfigurationen är den enda hypervisor scheduler-konfigurationen som stöds för klientsystem. Administratörer bör inte försöka åsidosätta standardtypen hypervisor scheduler i Windows-klientsystem.

VM CPU-resurskontroller och rotschemaläggaren

Resurskontrollerna som Hyper-V hypervisor-programmet använder på enskilda VM-processorer stöds inte när du aktiverar hypervisor-rotschemaläggaren. I rotoperativsystemet hanterar scheduler-logiken värdresurser globalt och hanterar inte gästresurserna för enskilda virtuella datorer. Den Hyper-V processorresurskontroller per virtuell dator, till exempel tak, vikter och reserver, gäller endast om hypervisor-programmet direkt styr schemaläggning av virtuella processorer, till exempel med de klassiska och grundläggande schemaläggningstyperna.

Huvudschemaläggaren används på serversystem

Vi rekommenderar inte att du använder rotschemaläggaren med Hyper-V på servrar. Prestandaegenskaperna är ännu inte helt kännetecknande och anpassade för de många olika arbetsbelastningar som är typiska för många distributioner av servervirtualiseringar.

Aktivera SMT på virtuella gästdatorer

När du har konfigurerat virtualiseringsvärdens hypervisor för att använda den grundläggande schemaläggartypen kan du även konfigurera virtuella gästdatorer att använda SMT. Mer specifikt kan du ange antalet virtuella SMT-trådar som ska exponeras för en virtuell gästdator. Schemaläggaren för gästoperativsystem och vm-arbetsbelastningar kan sedan identifiera och använda SMT-topologin i sin egen schemaläggning.

  • I Windows Server 2016 konfigureras inte gäst-SMT som standard. En Hyper-V värdadministratör måste uttryckligen aktivera den.
  • I Windows Server 2019 och senare versioner ärver nya virtuella datorer som du skapar på värden värd-SMT-topologin som standard. Till exempel har en version 9.0 virtuell dator som du skapar på en värd med två SMT-trådar per kärna också två SMT-trådar per kärna.

Du måste använda PowerShell för att aktivera SMT på en virtuell gästdator. Det finns inget användargränssnitt i Hyper-V Manager. Så här aktiverar du SMT på en virtuell gästdator:

  1. Öppna ett PowerShell-fönster med hjälp av ett konto som är medlem i Hyper-V administratörer eller motsvarande grupp.

  2. Kör Set-VMProcessor -VMName <VM-name> -HwThreadCountPerCore <n>, där <n> är antalet SMT-trådar per kärna som den virtuella gästdatorn ser. Om du använder värdet 0 för <n> sätts HwThreadCountPerCore-värdet till värdens SMT-trådantal per kärna.

    Note

    Windows Server 2016 stöder inte inställningen HwThreadCountPerCore till 0.

Följande skärmbild visar systeminformation som hämtats från gästoperativsystemet som körs på en virtuell dator. Det finns två virtuella processorer och SMT är aktiverat. Gästoperativsystemet identifierar två logiska processorer som tillhör samma kärna.

Skärmbild av fönstret Systeminformation. Raden Processor är markerad. Den innehåller information om en kärna och två processorer.

Konfigurera typen av hypervisor-schemaläggare

Vilken typ av hypervisor-schemaläggare som Hyper-V använder som standard beror på operativsystemets version. Oavsett vilken schemaläggare som är standard i operativsystemet kan du konfigurera hypervisor-programmet så att det använder kärnschemaläggaren. Kärnschemaläggaren ökar säkerheten genom att begränsa virtuella gästprocessorer till att köras på motsvarande fysiska SMT-par. Den här konfigurationen stöder användning av virtuella datorer med SMT-schemaläggning för sina virtuella gästprocessorer.

Note

I Windows Server 2016 använder Hyper-V den klassiska schemaläggaren som standard. Om du använder Hyper-V på Windows Server 2016 eller senare rekommenderar vi att du väljer den grundläggande schemaläggaren. Att genomföra denna förändring säkerställer att dina virtualiseringsvärdar skyddas optimalt mot potentiellt skadliga gäst-VMar.

Överväg att påverka säkerhet och prestanda

För att säkerställa att Hyper-V värdar distribueras i en optimal säkerhetskonfiguration använder Hyper-V den grundläggande hypervisor scheduler-modellen som standard från och med Windows Server 2019. Värdadministratören kan eventuellt konfigurera värden så att den använder den äldre klassiska schemaläggaren. Innan du åsidosätter standardinställningarna bör administratörer noggrant läsa, förstå och ta hänsyn till vilken inverkan varje scheduler-typ har på säkerheten och prestandan för virtualiseringsvärdar. Mer information finns i Om Hyper-V schemaläggningstyp för hypervisor.

Välj typ av hypervisor-schemaläggare på Windows Server

Konfigurationen av hypervisor scheduler styrs av posten hypervisorschedulertype startkonfigurationsdata (BCD).

Så här väljer du en schemaläggartyp:

  1. Öppna Kommandotolken med administratörsbehörighet.

  2. Ange bcdedit /set hypervisorschedulertype <type>, där <type> är något av följande alternativ:

    • Classic
    • Core
    • Root

Du måste starta om systemet för att eventuella ändringar som du gör i schemaläggningstypen hypervisor ska börja gälla.

Note

Hypervisor-rotschemaläggaren stöds inte på Hyper-V på Windows Server just nu. Hyper-V administratörer bör inte försöka konfigurera rotschemaläggaren för användning med scenarier för servervirtualisering.

Fastställa den aktuella schemaläggartypen

Du kan fastställa vilken typ av hypervisor-schemaläggare som Hyper-V använder för närvarande genom att undersöka Windows-systemloggen. Leta efter den senaste hypervisor-starthändelsen som har ett ID på 2. Den händelsen rapporterar den hypervisor-schemaläggartyp som konfigurerades vid hypervisor-starten. Följande värden är möjliga för schemaläggningstypen hypervisor:

Value Scheduler-typ
1 Klassisk schemaläggare, SMT inaktiverad
2 Klassisk schemaläggare
3 Kärnschemaläggare
4 Rotschemaläggare

Du kan använda Händelseloggen eller PowerShell för att visa händelseloggar för hypervisor-lansering.

Skärmbild av Händelsevisarens egenskapsfönster för en Hyper-V-hypervisorhändelse med ID 2. Text på fliken Allmänt visar en schemaläggartyp av 0x2.

Skärmbild av händelser i Loggboken. En Hyper-V-Hypervisor-starthändelse med ett ID på 2 har valts. Ett nedre fönster visar händelseinformation.

Använd PowerShell för att fråga systemloggarna efter en hypervisor-starthändelse

Kör följande kommando för att fråga systemloggarna efter en hypervisor-händelse med ett ID på 2 med hjälp av PowerShell:

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

Skärmbild av ett PowerShell-fönster. Ett kommando frågar efter den senaste hypervisor-starthändelsen med ID 2. Utdata visar scheduler-typen som 0x2.