Gestire i tipi di utilità di pianificazione hypervisor Hyper-V

Si applica a: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server versione 1803, Windows Server versione 1709, Windows 10

Questo articolo descrive le nuove modalità della logica di pianificazione del processore virtuale introdotta in Windows Server 2016. Queste modalità, o tipi di utilità di pianificazione, determinano il modo in cui l'hypervisor Hyper-V alloca e gestisce il lavoro tra processori virtuali guest. Un amministratore host Hyper-V può:

  • Selezionare i tipi di utilità di pianificazione hypervisor più adatti per le macchine virtuali guest.
  • Configurare le macchine virtuali per sfruttare la logica di pianificazione.

Prerequisiti

Per usare le funzionalità dell'utilità di pianificazione dell'hypervisor descritte più avanti in questo articolo, è necessario installare gli aggiornamenti seguenti. Questi aggiornamenti includono modifiche per supportare la nuova hypervisorschedulertype opzione BCD, necessaria per la configurazione dell'host.

Versione Rilascio Aggiornamento obbligatorio Articolo Knowledge Base
Windows Server 2016 1607 2018.07 C KB4338822
Windows Server 2016 1703 2018.07 C KB4338827
Windows Server 2016 1709 2018.07 C KB4338817
Windows Server 2019 1804 None None

Background

Prima di discutere della logica e dei controlli alla base della pianificazione del processore virtuale Hyper-V, è importante comprendere alcuni concetti come il multithreading simultaneo e il modo in cui Hyper-V virtualizza i processori.

Informazioni su SMT

Il multithreading simultaneo (SMT) è una tecnica nelle progettazioni moderne del processore che consente di separare i thread di esecuzione indipendenti condividono le risorse del processore. SMT offre in genere un aumento modesto delle prestazioni per la maggior parte dei carichi di lavoro. Parallelizza i calcoli quando possibile, aumentando la velocità effettiva delle istruzioni. Tuttavia, ci sono anche momenti in cui non c'è un miglioramento significativo delle prestazioni o anche una lieve perdita quando i thread competono tra loro per le risorse del processore condiviso.

Per usare SMT con Windows Server, è necessario disporre di un processore compatibile. Ad esempio, un processore con tecnologia Intel Hyper-Threading o Multithreading Avanzato (AMD) Multithreading (SMT).

Ai fini di questo articolo, le descrizioni di SMT e il modo in cui viene usato da Hyper-V si applicano allo stesso modo ai sistemi Intel e AMD.

Informazioni su come Hyper-V virtualizza i processori

Prima di prendere in considerazione i tipi di utilità di pianificazione dell'hypervisor, è necessario comprendere l'architettura hyper-V. È possibile trovare un riepilogo più dettagliato del funzionamento di questa architettura nella panoramica della tecnologia Hyper-V, ma per il momento è consigliabile tenere presenti i concetti seguenti:

  • Hyper-V crea e gestisce le partizioni di vm, l'allocazione e la condivisione delle risorse di calcolo tra di esse, sotto il controllo dell'hypervisor. Le partizioni forniscono limiti di isolamento sicuri tra tutte le macchine virtuali guest e tra le macchine virtuali guest e la partizione radice.

  • La partizione radice è una partizione di macchina virtuale, anche se dispone di proprietà univoce e privilegi maggiori rispetto alle macchine virtuali guest. Partizione radice:

    • Fornisce servizi di gestione che controllano tutte le macchine virtuali guest.
    • Fornisce supporto per dispositivi virtuali per gli utenti guest.
    • Gestisce tutti gli input e l'output del dispositivo per le macchine virtuali guest.

    È consigliabile non eseguire carichi di lavoro dell'applicazione nella partizione radice.

  • Ogni processore virtuale (VP) della partizione radice è mappato uno-a-uno a un processore logico sottostante (LP). Un vp host viene sempre eseguito sullo stesso LP sottostante. Non esiste alcuna migrazione dei VP della partizione radice.

  • Per impostazione predefinita, gli indirizzi IP che ospitano le VP della partizione radice eseguiti possono anche eseguire indirizzi VIRTUALI guest.

  • Hypervisor potrebbe pianificare l'esecuzione del VP guest in qualsiasi processore logico disponibile. Mentre l'utilità di pianificazione dell'hypervisor tenta di prendere in considerazione la località della cache temporale, la topologia NUMA (Non-Uniform Memory Access) e molti altri fattori durante la pianificazione di una VP guest, in definitiva la VP può essere pianificata in qualsiasi LP host.

Tipi di utilità di pianificazione hypervisor

In Windows Server 2016, l'hypervisor Hyper-V supporta diverse modalità di logica dell'utilità di pianificazione, che determinano il modo in cui l'hypervisor pianifica i processori virtuali nei processori logici sottostanti. Questi tipi di utilità di pianificazione sono:

Utilità di pianificazione classica

L'utilità di pianificazione classica è stata l'impostazione predefinita per tutte le versioni dell'hypervisor Hyper-V di Windows fin dall'inizio, incluso Windows Server 2016 Hyper-V. L'utilità di pianificazione classica offre una condivisione equa, un modello di pianificazione round robin preemptive e round robin per i processori virtuali guest.

Il tipo di utilità di pianificazione classico è il più appropriato per gli usi più tradizionali di Hyper-V, ad esempio cloud privati, provider di hosting e così via. Le caratteristiche delle prestazioni del tipo di utilità di pianificazione classica sono ottimizzate per supportare un'ampia gamma di scenari di virtualizzazione, ad esempio:

  • Sovrascrivendo i provider di servizi virtuali ai provider di servizi di rete.
  • Esecuzione di più macchine virtuali e carichi di lavoro eterogenei contemporaneamente.
  • Esecuzione di macchine virtuali con prestazioni elevate su larga scala.
  • Supporto del set completo di funzionalità di Hyper-V senza restrizioni e altri scenari.

Utilità di pianificazione di base

L'utilità di pianificazione principale dell'hypervisor è un'alternativa alla logica classica dell'utilità di pianificazione introdotta in Windows Server 2016 e Windows 10, versione 1607. L'utilità di pianificazione principale offre un limite di sicurezza sicuro per l'isolamento del carico di lavoro guest. Riduce inoltre la variabilità delle prestazioni per i carichi di lavoro all'interno delle macchine virtuali in esecuzione in un host di virtualizzazione abilitato per SMT. L'utilità di pianificazione principale supporta l'esecuzione contemporaneamente di macchine virtuali SMT e non SMT nello stesso host di virtualizzazione abilitato per SMT.

Utilità di pianificazione di base:

  • Usa la topologia SMT dell'host di virtualizzazione.
  • Facoltativamente, espone le coppie SMT alle macchine virtuali guest.
  • Pianifica gruppi di processori virtuali guest dalla stessa macchina virtuale ai gruppi di processori logici SMT.

Questo lavoro avviene simmetricamente. Se gli LP sono in gruppi di due, le VP vengono pianificate in gruppi di due e un core non viene mai condiviso tra le macchine virtuali. Quando si pianifica il VP per una macchina virtuale senza SMT abilitato, tale VP usa l'intero core durante l'esecuzione. Il risultato complessivo dell'utilità di pianificazione principale è che:

  • Crea un limite di sicurezza sicuro sicuro per l'isolamento del carico di lavoro guest. Le VP guest possono essere eseguite solo su coppie di core fisici sottostanti, riducendo la vulnerabilità agli attacchi di snooping sul canale laterale.
  • Riduce la variabilità nella velocità effettiva.
  • Può potenzialmente ridurre le prestazioni. Se un solo VP in un gruppo può essere eseguito, solo uno dei flussi di istruzioni nei lanci principali mentre l'altro rimane inattiva.
  • Il sistema operativo e le applicazioni in esecuzione nella macchina virtuale guest possono usare il comportamento SMT e le API (Programming Interface) per controllare e distribuire il lavoro tra thread SMT, proprio come avviene con un computer fisico.

A partire da Windows Server 2019, Hyper-V usa l'utilità di pianificazione principale per impostazione predefinita. Nelle versioni precedenti, ad esempio Windows Server 2016, l'utilità di pianificazione era facoltativa e l'utilità di pianificazione classica è l'opzione predefinita.

Comportamento dell'utilità di pianificazione principale con SMT host disabilitato

In alcuni casi, è possibile configurare l'hypervisor per l'uso del tipo di utilità di pianificazione principale, ma la funzionalità SMT è disabilitata o non è presente nell'host di virtualizzazione. In questi casi, Hyper-V usa il comportamento dell'utilità di pianificazione classica indipendentemente dall'impostazione del tipo di utilità di pianificazione dell'hypervisor.

Utilità di pianificazione radice

L'utilità di pianificazione radice è arrivata con Windows 10, versione 1803. Quando si abilita il tipo di utilità di pianificazione radice, l'hypervisor fornisce il controllo della partizione radice della pianificazione del lavoro. L'utilità di pianificazione NT nell'istanza del sistema operativo della partizione radice gestisce tutti gli aspetti della pianificazione del lavoro nei provider di servizi di sistema.

L'utilità di pianificazione radice soddisfa i requisiti univoci per supportare una partizione di utilità e fornire un isolamento sicuro del carico di lavoro, come usato con Windows Defender Application Guard (WDAG). In questo scenario, lasciando le responsabilità di pianificazione per il sistema operativo radice offre diversi vantaggi:

  • È possibile usare i controlli delle risorse DELLA CPU applicabili agli scenari di contenitori con la partizione dell'utilità, semplificando la gestione e la distribuzione.
  • L'utilità di pianificazione del sistema operativo radice può raccogliere facilmente le metriche relative all'uso della CPU del carico di lavoro all'interno del contenitore. Può usare questi dati come input per gli stessi criteri di pianificazione applicabili a tutti gli altri carichi di lavoro nel sistema.
  • Queste stesse metriche consentono anche di eseguire il lavoro degli attributi in un contenitore di applicazioni nel sistema host. Tenere traccia di queste metriche è più difficile con i carichi di lavoro delle macchine virtuali tradizionali, in cui alcune operazioni per conto di tutte le macchine virtuali in esecuzione vengono eseguite nella partizione radice.

Uso dell'utilità di pianificazione radice nei sistemi client

A partire da Windows 10, versione 1803, l'utilità di pianificazione radice viene usata per impostazione predefinita solo nei sistemi client, il che significa:

  • È possibile abilitare l'hypervisor per supportare la sicurezza basata su virtualizzazione e l'isolamento del carico di lavoro WDAG.
  • È importante gestire correttamente i sistemi futuri con architetture di base eterogenee.

Questa configurazione è l'unica configurazione dell'utilità di pianificazione hypervisor supportata per i sistemi client. Amministrazione istrators non deve tentare di eseguire l'override del tipo di utilità di pianificazione hypervisor predefinito nei sistemi client Windows.

Controlli delle risorse CPU della macchina virtuale e utilità di pianificazione radice

I controlli delle risorse del processore di macchine virtuali forniti da Hyper-V non sono supportati quando si abilita l'utilità di pianificazione radice dell'hypervisor. La logica dell'utilità di pianificazione del sistema operativo radice gestisce le risorse host su base globale e non gestisce le risorse guest di una singola macchina virtuale. I controlli delle risorse del processore Hyper-V per macchina virtuale, ad esempio limiti, pesi e riserve, possono essere applicati solo quando l'hypervisor controlla direttamente la pianificazione vp, ad esempio con i tipi di utilità di pianificazione classici e principali.

Uso dell'utilità di pianificazione radice nei sistemi server

Non è consigliabile usare l'utilità di pianificazione radice con Hyper-V nei server. Le sue caratteristiche di prestazioni non sono ancora state completamente caratterizzate e ottimizzate per supportare l'ampia gamma di carichi di lavoro tipici di molte distribuzioni di virtualizzazione server.

Abilitare SMT nelle macchine virtuali guest

Dopo aver configurato l'hypervisor dell'host di virtualizzazione per l'uso del tipo di utilità di pianificazione principale, è anche possibile configurare le macchine virtuali guest per l'uso di SMT. Esponendo il fatto che i VP vengono iperthreading in una macchina virtuale guest, l'utilità di pianificazione nel sistema operativo guest e i carichi di lavoro in esecuzione nella macchina virtuale rilevano e usano la topologia SMT nella pianificazione del lavoro.

  • In Windows Server 2016, la funzionalità SMT guest non è configurata per impostazione predefinita. Un amministratore host Hyper-V deve abilitarlo in modo esplicito.
  • A partire da Windows Server 2019, le nuove macchine virtuali create nell'host ereditano la topologia SMT host per impostazione predefinita. Ad esempio, una macchina virtuale versione 9.0 creata in un host con due thread SMT per core avrà anche due thread SMT per core.

È necessario usare PowerShell per abilitare SMT in una macchina virtuale guest. Nella console di gestione di Hyper-V non è disponibile alcuna interfaccia utente. Per abilitare SMT in una macchina virtuale guest:

  1. Aprire una finestra di PowerShell usando un account membro del gruppo di Amministrazione istrators Hyper-V o equivalente.
  2. Eseguire Set-VMProcessor -VMName <VMName> -HwThreadCountPerCore <n>, dove <n> è il numero di thread SMT per core visualizzati dalla macchina virtuale guest. <n> = 0 imposta il HwThreadCountPerCore valore in modo che corrisponda al numero di thread SMT dell'host per ogni valore core.

Nota

In Windows Server 2019 e versioni successive è possibile impostare HwThreadCountPerCore = 0 anziché corrispondere al numero di thread SMT host.

Lo screenshot seguente mostra le informazioni di sistema ottenute dal sistema operativo guest in esecuzione in una macchina virtuale. Sono disponibili due processori virtuali e SMT abilitati. Il sistema operativo guest rileva due processori logici appartenenti allo stesso core.

Screenshot that shows msinfo32 in a guest VM with SMT enabled.

Configurare il tipo di utilità di pianificazione hypervisor in Windows Server 2016 Hyper-V

Windows Server 2016 Hyper-V usa il modello di utilità di pianificazione hypervisor classico per impostazione predefinita. Facoltativamente, è possibile configurare l'hypervisor per l'uso dell'utilità di pianificazione principale. L'utilità di pianificazione principale aumenta la sicurezza limitando l'esecuzione di VP guest nelle coppie SMT fisiche corrispondenti. Questa configurazione supporta l'uso di macchine virtuali con la pianificazione SMT per i propri VP guest.

Nota

È consigliabile che tutti i clienti che eseguono Windows Server 2016 Hyper-V selezionino l'utilità di pianificazione principale per garantire che gli host di virtualizzazione siano protetti in modo ottimale da macchine virtuali guest potenzialmente dannose.

Windows Server 2019 Hyper-V usa per impostazione predefinita l'utilità di pianificazione principale

Per garantire che gli host Hyper-V vengano distribuiti nella configurazione di sicurezza ottimale, Per impostazione predefinita, Windows Server 2019 Hyper-V usa ora il modello di pianificazione dell'hypervisor principale. L'amministratore host potrebbe facoltativamente configurare l'host per l'uso dell'utilità di pianificazione classica legacy. Prima di eseguire l'override delle impostazioni predefinite, gli amministratori devono leggere, comprendere e considerare gli effetti di ogni tipo di utilità di pianificazione sulla sicurezza e sulle prestazioni degli host di virtualizzazione. Per altre informazioni, vedere Informazioni sulla selezione del tipo di utilità di pianificazione hypervisor Hyper-V.

Selezionare il tipo di utilità di pianificazione dell'hypervisor in Windows Server

La configurazione dell'utilità di pianificazione dell'hypervisor hypervisorschedulertype è controllata dalla voce BCD.

Per selezionare un tipo di utilità di pianificazione:

  1. Aprire un prompt dei comandi con privilegi di amministratore.
  2. Immettere bcdedit /set hypervisorschedulertype type, dove type è una delle opzioni seguenti:
  • Classic
  • Core
  • Root

Per rendere effettive le modifiche apportate al tipo di utilità di pianificazione dell'hypervisor, è necessario riavviare il sistema.

Nota

L'utilità di pianificazione radice dell'hypervisor non è attualmente supportata in Windows Server Hyper-V. Gli amministratori di Hyper-V non devono tentare di configurare l'utilità di pianificazione radice da usare con gli scenari di virtualizzazione del server.

Determinare il tipo di utilità di pianificazione corrente

È possibile determinare il tipo di utilità di pianificazione hypervisor attualmente usato da Hyper-V esaminando il log di sistema Visualizzatore eventi. È possibile visualizzare l'ID evento di avvio dell'hypervisor più recente 2, che segnala il tipo di utilità di pianificazione dell'hypervisor configurato all'avvio dell'hypervisor. È possibile ottenere gli eventi di avvio dell'hypervisor da Windows Visualizzatore eventi o in PowerShell.

L'ID evento di avvio dell'hypervisor 2 indica il tipo di utilità di pianificazione dell'hypervisor, dove:

  • 1 = Utilità di pianificazione classica, SMT disabilitato
  • 2 = Utilità di pianificazione classica
  • 3 = Utilità di pianificazione di base
  • 4 = Utilità di pianificazione radice

A screenshot of the hypervisor launch event ID 2 properties window. The user has selected the General tab, showing that the hypervisor scheduler type is 0x2.

A screenshot of the Event Viewer window. The user has selected Hyper-V Hypervisor launch event ID 2 from the list of events, highlighting it in dark blue.

Eseguire una query sull'evento di avvio del tipo di utilità di pianificazione hypervisor Hyper-V usando PowerShell

Per eseguire una query per l'ID evento hypervisor 2 usando PowerShell, eseguire i comandi seguenti da un prompt di PowerShell:

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

A screenshot of a query for hypervisor launch event ID 2. The results say hypervisor scheduler type is 0x2.