Sdílet prostřednictvím


Správa typů plánovače hypervisoru Hyper-V

Tento článek popisuje režimy logiky plánování virtuálních procesorů ve Windows Serveru a Windows. Tyto režimy nebo typy plánovačů určují, jak Hyper-V hypervisor přiděluje a spravuje práci napříč hostovými virtuálními procesory. Správce hostitele Hyper-V může:

  • Vyberte typy plánovače hypervisoru, které jsou nejvhodnější pro hostující virtuální počítače.
  • Nakonfigurujte virtuální počítače tak, aby využívaly výhod logiky plánování.

Background

Než začnete uvažovat o logikě a ovládacích prvcích za plánováním Hyper-V virtuálních procesorů, je důležité pochopit určité koncepty, jako je souběžné multithreading (SMT) a jak Hyper-V virtualizuje procesory.

Principy SMT

SMT je technika v moderním návrhu procesoru, která poskytuje způsob pro samostatné nezávislé spouštěcí vlákna pro sdílení prostředků procesoru. SMT obvykle poskytuje mírné zvýšení výkonu úloh. Pokud je to možné, paralelizuje výpočty a zvyšuje propustnost instrukcí. Když ale vlákna vzájemně soupeří o prostředky sdíleného procesoru, někdy není žádné znatelné zlepšení výkonu. Může dokonce dojít k mírnému poklesu výkonu.

Abyste mohli používat SMT s Windows Serverem, musíte mít kompatibilní procesor. Příkladem kompatibilních procesorů jsou procesory s technologií Intel Hyper-Threading Technology (Intel HT Technology) nebo ADVANCED Micro Devices (AMD).

Pro účely tohoto článku se popisy SMT a jeho použití Hyper-V vztahují stejně na systémy Intel i AMD.

Pochopte, jak Hyper-V virtualizuje procesory

Než začnete uvažovat o typech plánovačů hypervisoru, měli byste rozumět Hyper-V architektuře. Podrobný přehled fungování této architektury najdete v tématu Hyper-V Technologie. Prozatím mějte na paměti následující koncepty:

  • Hyper-V vytváří a spravuje oddíly virtuálních počítačů, přidělování a sdílení výpočetních prostředků napříč nimi pod kontrolou hypervisoru. Oddíly poskytují silnou izolaci hranic mezi všemi hostovými virtuálními počítači a mezi hostujícími virtuálními počítači a kořenovým oddílem.

  • Kořenový oddíl je sám o sobě oddílem virtuálního počítače, i když má jedinečné vlastnosti a větší oprávnění než hostující virtuální počítače. Kořenový oddíl:

    • Poskytuje služby pro správu, které řídí všechny hostující virtuální počítače.
    • Poskytuje podporu virtuálních zařízení pro hosty.
    • Spravuje všechny vstupy a výstupy zařízení pro hostující virtuální počítače.

    V kořenovém oddílu doporučujeme nespusovat žádné úlohy aplikací.

  • Mapování 1:1 existuje mezi virtuálními procesory kořenového oddílu a základními logickými procesory. Hostitelský virtuální procesor vždy běží na stejném základním logickém procesoru. Neexistuje žádná migrace virtuálních procesorů kořenového oddílu.

  • Ve výchozím nastavení můžou logické procesory hostující virtuální procesory kořenového oddílu spouštět také hostované virtuální procesory.

  • Hypervisor může naplánovat spuštění hostovaného virtuálního procesoru na libovolném dostupném logickém procesoru. Plánovač hypervisoru se snaží zvážit umístění dočasné mezipaměti, neuniformní topologii přístupu k paměti (NUMA) a mnoho dalších faktorů při plánování hostovaného virtuálního procesoru. Virtuální procesor je ale možné naplánovat na libovolném logickém procesoru hostitele.

Typy plánovače hypervisoru

Hypervisor Hyper-V podporuje několik režimů logiky plánovače, která určuje, jak hypervisor plánuje virtuální procesory na podkladových logických procesorech. Mezi tyto typy plánovačů patří:

Klasický plánovač

Klasický plánovač je výchozí plánovač, který se používá ve všech verzích Hyper-V starších než Windows Server 2019. Klasický plánovač poskytuje model pro plánování spravedlivého sdílení, preemptivního a cirkulárního pro hostované virtuální procesory.

Klasický typ plánovače je vhodný pro většinu tradičních Hyper-V použití, jako jsou privátní cloudy, poskytovatelé hostingu atd. Charakteristiky výkonu klasického typu plánovače jsou optimalizované tak, aby podporovaly širokou škálu scénářů virtualizace, například:

  • Přealokace virtuálních procesorů vůči logickým procesorům.
  • Spouštění mnoha heterogenních virtuálních počítačů a úloh současně
  • Spouštění vysoce výkonných virtuálních počítačů s větším škálováním
  • Podpora úplné sady funkcí Hyper-V bez omezení a dalších scénářů

Základní plánovač

Plánovač jádra hypervisoru je alternativou k klasické logice plánovače. Základní plánovač je k dispozici od Windows Serveru 2016 a Windows 10 verze 1607. Jádrový plánovač nabízí silnou hranici zabezpečení pro izolaci zatížení na straně hosta. Snižuje také proměnlivost výkonu pro úlohy uvnitř virtuálních počítačů, které běží na hostiteli virtualizace s podporou SMT. Základní plánovač podporuje spouštění virtuálních počítačů SMT i jiných virtuálních počítačů než SMT na stejném hostiteli virtualizace s podporou SMT.

Základní plánovač:

  • Používá topologii SMT hostitele virtualizace.
  • Volitelně zpřístupní páry SMT pro hostující virtuální počítače.
  • Naplánuje skupiny hostovaných virtuálních procesorů ze stejného virtuálního počítače do skupin logických procesorů SMT.

K této práci dochází symetricky. Pokud jsou logické procesory ve skupinách dvou, virtuální procesory jsou naplánované ve skupinách dvou a jádro se mezi virtuálními počítači nikdy nesdílí. Když naplánujete virtuální procesor pro virtuální počítač bez povoleného SMT, bude tento virtuální procesor při spuštění využívat celé jádro. Při použití základního plánovače:

  • Vytvoří silnou hranici zabezpečení pro izolaci pracovního zatížení hosta. Virtuální procesory hosta se mohou spouštět jen na podkladových párech fyzických jader, což snižuje ohrožení vůči útokům postranního kanálu.
  • Snižuje proměnlivost propustnosti.
  • Může potenciálně snížit výkon. Pokud může běžet jenom jeden virtuální procesor ve skupině, spustí se pouze jeden z datových proudů instrukcí v jádru. Druhý je nečinný.
  • Operační systém (OS) a aplikace spuštěné na hostovaném virtuálním počítači můžou používat chování SMT a programovací rozhraní (API) k řízení a distribuci práce napříč vlákny SMT, stejně jako u fyzického počítače.

Od Windows Serveru 2019 Hyper-V ve výchozím nastavení používá základní plánovač. Ve starších verzích, jako je Windows Server 2016, je plánovač jádra volitelný a klasický plánovač je výchozím plánovačem.

Chování hlavního plánovače při zakázání hostitelského SMT

V některých případech můžete hypervisor nakonfigurovat tak, aby používal typ základního plánovače, ale funkce SMT je zakázaná nebo není k dispozici na hostiteli virtualizace. V těchto případech Hyper-V používá klasické chování plánovače bez ohledu na nastavení typu plánovače hypervisoru.

Kořenový plánovač

Kořenový plánovač přišel s Windows 10 verze 1803. Když povolíte typ kořenového plánovače, hypervisor dává kořenovému oddílu kontrolu nad plánováním práce. V instanci operačního systému kořenového oddílu spravuje plánovač NT všechny aspekty přiřazování práce systémovým logickým procesorům.

Root plánovač řeší jedinečné požadavky na podporu utility oddílu a zajišťuje silnou izolaci úloh, jak se používá v rámci programu Windows Defender Application Guard (WDAG). V tomto scénáři ponechání plánovacích zodpovědností na kořenovém operačním systému nabízí několik výhod:

  • Pomocí ovládacích prvků prostředků CPU, které se hodí pro scénáře kontejnerů, v uživatelském oddílu můžete zjednodušit správu a nasazení.
  • Kořenový plánovač operačního systému může snadno shromažďovat metriky týkající se využití procesoru úloh v kontejneru. Tato data můžou používat jako vstup do zásad plánování a použít je pro všechny ostatní úlohy v systému.
  • Stejné metriky také pomáhají připsat práci provedenou v aplikačním kontejneru hostitelskému systému. Sledování těchto metrik je u tradičních úloh virtuálních počítačů obtížnější, protože některé úkoly na podporu všech spuštěných virtuálních počítačů probíhají v kořenové partition.

Použití kořenového plánovače v klientských systémech

Od Windows 10 verze 1803 se kořenový plánovač používá ve výchozím nastavení jenom v klientských systémech, což znamená:

  • Hypervisor můžete povolit, aby podporoval zabezpečení na základě virtualizace a izolaci úloh WDAG.
  • Je důležité správně provozovat budoucí systémy s heterogenními základními architekturami.

Tato konfigurace je jedinou podporovanou konfigurací plánovače hypervisoru pro klientské systémy. Správci by se neměli pokoušet přepsat výchozí typ plánovače hypervisoru v klientských systémech Windows.

Řízení prostředků procesoru virtuálního počítače a základní plánovač

Ovládací prvky prostředků, které Hyper-V hypervisor používá na jednotlivých procesorech virtuálních počítačů, nejsou podporovány, když povolíte kořenový plánovač hypervisoru. V kořenovém operačním systému spravuje logika plánovače hostitelské prostředky globálně a nespravuje prostředky hosta jednotlivých virtuálních počítačů. Hyper-V řízení prostředků procesoru jednotlivého virtuálního počítače, jako jsou limity, váhy a rezervy, platí jenom v případě, že hypervisor přímo řídí plánování virtuálních procesorů, jako je klasický typ a typ plánování jader.

Použití kořenového plánovače na serverových systémech

Nedoporučujeme používat kořenový plánovač s Hyper-V na serverech. Jeho charakteristiky výkonu ještě nejsou plně charakterizovány a vyladěny tak, aby vyhovovaly široké škále úloh typických pro mnoho nasazení virtualizace serverů.

Povolení SMT na virtuálních počítačích hostů

Po nakonfigurování hypervisoru hostitele virtualizace tak, aby používal typ základního plánovače, můžete také nakonfigurovat hostované virtuální počítače tak, aby používaly SMT. Konkrétně můžete zadat počet virtuálních vláken SMT, která se mají zpřístupnit virtuálnímu počítači hosta. Plánovač hostovaného operačního systému a úlohy virtuálních počítačů pak můžou detekovat a používat topologii SMT ve vlastním plánování práce.

  • Ve Windows Serveru 2016 není výchozí nastavení SMT pro hosty nakonfigurováno. Správce hostitele Hyper-V ho musí explicitně povolit.
  • Ve Windows Serveru 2019 a novějších verzích nové virtuální počítače na hostiteli ve výchozím nastavení dědí topologii SMT hostitele. Například virtuální počítač verze 9.0, který vytvoříte na hostiteli se dvěma vlákny SMT na jádro, má také dvě vlákna SMT na jádro.

K povolení SMT na hostovaném virtuálním počítači musíte použít PowerShell. Ve Správci Hyper-V není k dispozici žádné uživatelské rozhraní. Povolení SMT na virtuálním počítači hosta:

  1. Otevřete okno PowerShellu pomocí účtu, který je členem Hyper-V Administrators nebo ekvivalentní skupiny.

  2. Spusťte Set-VMProcessor -VMName <VM-name> -HwThreadCountPerCore <n>, kde <n> je počet vláken SMT na jádro, které hostovaný virtuální počítač uvidí. Pokud použijete hodnotu 0 pro <n>, HwThreadCountPerCore hodnota je nastavena na počet vláken SMT hostitele na jádro.

    Note

    Windows Server 2016 nepodporuje nastavení HwThreadCountPerCore na 0.

Následující snímek obrazovky ukazuje systémové informace pořízené z hostovaného operačního systému spuštěného na virtuálním počítači. Existují dva virtuální procesory a SMT je povolené. Hostovaný operační systém detekuje dva logické procesory, které patří do stejného jádra.

Snímek obrazovky s oknem Systémové informace Je vybrán řádek procesoru. Uvádí informace o jednom jádru a dvou procesorech.

Konfigurace typu plánovače hypervisoru

Typ plánovače hypervisoru, který Hyper-V ve výchozím nastavení používá, závisí na verzi operačního systému. Bez ohledu na to, který plánovač je výchozím plánovačem vašeho operačního systému, můžete hypervisor nakonfigurovat tak, aby používal základní plánovač. Základní plánovač zvyšuje zabezpečení omezením hostovaného virtuálního procesoru tak, aby běžely na odpovídajících fyzických párech SMT. Tato konfigurace podporuje použití virtuálních počítačů s plánováním SMT pro jejich hostující virtuální procesory.

Note

Ve Windows Serveru 2016 Hyper-V ve výchozím nastavení používá klasický plánovač. Pokud používáte Hyper-V ve Windows Serveru 2016 nebo novějším, doporučujeme vybrat základní plánovač. Vykonání této změny zajistí optimální ochranu hostitelů virtualizace před potenciálně škodlivými virtuálními počítači.

Zvažte dopad na zabezpečení a výkon.

Aby bylo zajištěno, že jsou hostitelé Hyper-V nasazeni v optimální konfiguraci zabezpečení, Hyper-V ve výchozím nastavení používá základní model plánovače hypervisoru od Windows Serveru 2019. Správce hostitele může volitelně nakonfigurovat hostitele tak, aby používal starší klasický plánovač. Před přepsáním výchozího nastavení by správci měli pečlivě přečíst, pochopit a zvážit dopady jednotlivých typů plánovačů na zabezpečení a výkon hostitelů virtualizace. Další informace naleznete v dokumentu Výběr typu plánovače hypervisoru Hyper-V.

Výběr typu plánovače hypervisoru na Windows Serveru

Konfigurace plánovače hypervisoru je řízena položkou hypervisorschedulertype konfiguračních dat spouštění (BCD).

Výběr typu plánovače:

  1. Otevřete příkazový řádek s oprávněními správce.

  2. Zadejte bcdedit /set hypervisorschedulertype <type>, kde <type> je jedna z následujících možností:

    • Classic
    • Core
    • Root

Aby se projevily změny typu plánovače hypervisoru, musíte systém restartovat.

Note

Kořenový plánovač hypervisoru se v tuto chvíli nepodporuje v Hyper-V na Windows Serveru. Hyper-V správci by se neměli pokoušet konfigurovat kořenový plánovač pro použití se scénáři virtualizace serveru.

Určení aktuálního typu plánovače

Typ plánovače hypervisoru, který Hyper-V aktuálně používá, můžete určit prozkoumáním systémového protokolu Systému Windows. Vyhledejte nejnovější událost spuštění hypervisoru, která má ID 2. Tato událost hlásí typ plánovače hypervisoru nakonfigurovaný při spuštění hypervisoru. Pro typ plánovače hypervisoru jsou možné následující hodnoty:

Value Typ plánovače
1 Klasický plánovač, SMT vypnuté
2 Klasický plánovač
3 Základní plánovač
4 Kořenový plánovač

K zobrazení protokolů událostí spuštění hypervisoru můžete použít Prohlížeč událostí nebo PowerShell.

Snímek obrazovky s oknem vlastností Prohlížeče událostí, který zobrazuje událost Hyper-V-Hypervisor s ID 2. Text na kartě Obecné označuje typ plánovače 0x2.

Snímek obrazovky s událostmi v Prohlížeči událostí Je vybrána událost spuštění hypervisoru Hyper-V s ID 2. V dolním podokně se zobrazují podrobnosti události.

Použití PowerShellu k dotazování systémových protokolů pro událost spuštění hypervisoru

Pokud chcete dotazovat systémové protokoly na událost hypervisoru s ID 2 pomocí PowerShellu, spusťte následující příkaz:

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

Snímek obrazovky s oknem PowerShellu Příkaz se dotazuje na nejnovější událost spuštění hypervisoru s ID 2. Výstup zobrazuje typ plánovače jako 0x2.