Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
- Mer information om Intel HT Technology finns i Intel Hyper-Threading Technology.
- Mer information om AMD SMT finns i AMD "Zen" Core Architecture.
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:
Öppna ett PowerShell-fönster med hjälp av ett konto som är medlem i Hyper-V administratörer eller motsvarande grupp.
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ärdet0för<n>sättsHwThreadCountPerCore-värdet till värdens SMT-trådantal per kärna.Note
Windows Server 2016 stöder inte inställningen
HwThreadCountPerCoretill0.
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.
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:
Öppna Kommandotolken med administratörsbehörighet.
Ange
bcdedit /set hypervisorschedulertype <type>, där<type>är något av följande alternativ:ClassicCoreRoot
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.
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