Guida al collegamento di una scheda video fisica a una macchina virtuale su host Hyper-V
Potresti aver bisogno di una scheda video (GPU) in una macchina virtuale per attività come OpenGL, Direct3D e CUDA. In quel caso, di solito utilizziamo una scheda video emulata, che non è performante quanto una GP dedicata. Pertanto, in questo post, impareremo come collegare una scheda video fisica a una VM su un host.
Come faccio a far passare la mia GPU attraverso Hyper-V?
Per collegare una scheda video fisica a una macchina virtuale su un host Hyper-V, utilizzeremo il Passthrough GPU.
Il passthrough GPU è una funzionalità avanzata che consente di assegnare una GPU fisica a una macchina virtuale. Questa funzionalità è particolarmente utile per applicazioni come il gaming o il rendering 3D, in cui è richiesta una grafica ad alte prestazioni. In questa configurazione, la macchina virtuale ottiene l’accesso diretto all’adattatore grafico fisico senza il sovraccarico dell’emulazione, il che può migliorare significativamente le prestazioni grafiche. Per impostazione predefinita, le macchine virtuali in Hyper-V utilizzano una scheda grafica emulata, che potrebbe non essere sufficiente per attività grafiche impegnative. Con il passthrough GPU, la macchina virtuale può sfruttare tutta la potenza della GPU fisica, consentendole di gestire in modo efficiente carichi di lavoro grafici più intensivi.
Quali sono i requisiti di sistema per GPU Passthrough?
Prima di procedere con la configurazione del GPU Passthrough, assicuriamoci di soddisfare i seguenti prerequisiti.
Requisiti hardware
- Devi assicurarti che il tuo processore supporti la virtualizzazione Intel-VT o AMD-V.
- Per il passthrough PCI, il processore deve supportare un’unità di gestione della memoria di input-output (IOMMU).
- La tua GPU deve supportare tecnologie di virtualizzazione GPU come NVIDIA GRID o AMD MxGPU. Queste tecnologie sono specifiche per i singoli vendor. I tassi di successo possono essere migliorati utilizzando hardware di classe server. I dispositivi più vecchi che si basano su PCI Interrupts (INTx) non sono compatibili.
- Infine, il sistema deve supportare la virtualizzazione Single Root Input/Output.
Requisiti software:
- Sistema operativo: Windows Server 2016 (o successivo) o Windows 11/10.
- Caratteristiche: Hyper-V deve essere abilitato.
- Generazione VM: la macchina virtuale deve essere di seconda generazione.
- Driver: tutti i driver GPU devono essere aggiornati all’ultima versione.
Limitazioni del passthrough GPU:
Se si desidera utilizzare il GPU Passthrough, è necessario evitare la seguente configurazione.
- La macchina virtuale non dovrebbe utilizzare la memoria dinamica.
- Il passthrough GPU è disponibile solo nelle edizioni più avanzate di Windows, come Windows Server 2019 Datacenter.
- Se il sottosistema Windows per Linux viene distribuito sull’host Hyper-V, potrebbe verificarsi un errore VM con codice 43.
- Le funzionalità di clustering quali elevata disponibilità e migrazione live delle VM non sono supportate.
- Il salvataggio e il ripristino con checkpoint VM non sono supportati.
Dopo aver soddisfatto i requisiti menzionati in precedenza, possiamo sfruttare il GPU Passthrough.
Collegare una scheda video fisica a una VM su un host Hyper-V
Per collegare una scheda video fisica a una macchina virtuale su un host Hyper-V utilizzando GPU Passthrough, seguire i passaggi indicati di seguito.
- Abilita la virtualizzazione Intel-VT o AMD-V
- Configura il tuo computer per il passthrough GPU
- Imposta il passthrough GPU per Windows 11/10
- Imposta il passthrough GPU per Windows Server
Parliamone in dettaglio.
1] Abilitare la virtualizzazione Intel-VT o AMD-V
Come menzionato nei prerequisiti, il nostro primo passo dovrebbe essere abilitare la virtualizzazione hardware. Quindi, se si utilizza una CPU Intel, si dovrebbe abilitare Intel-VT, e gli utenti AMD, dovrebbero abilitare la virtualizzazione AMD-V.
Per farlo, avvia il BIOS, vai su Configurazione > Tecnologia di virtualizzazione e impostalo su Abilitato. Poiché questi passaggi sono esclusivi di HP, puoi andare al post collegato per vedere come abilitare la funzionalità per il tuo computer.
2] Configura il tuo computer per il passthrough GPU
Successivamente, dobbiamo configurare il computer host per il GPU Passthrough. Abbiamo iniziato abilitando Hardware Virtualization, come menzionato in precedenza. Successivamente, dobbiamo assicurarci che IOMMU sia abilitato e che i checkpoint automatici siano disabilitati.
Quindi, puoi controllare la guida collegata sull’abilitazione della virtualizzazione hardware per abilitare IOMMU , ma di solito è abilitato di default. Possiamo aprire PowerShell ed eseguire la seguente query per verificare se è abilitato.
(Get-VMHost).IovSupport; (Get-VMHost).IovSupportReasons
Se è indicato Vero, la funzionalità è abilitata e puoi passare alla configurazione successiva, se invece è indicato Falso, devi abilitare questa funzionalità.
Ora, elimina tutti i checkpoint della tua VM, quindi usa i seguenti comandi per disabilitarla.
Get-VM
Set-VM -Name NameOfVM -AutomaticStopAction TurnOff
Nota: sostituisci la variabile NameOfVM con il nome effettivo della macchina virtuale che puoi recuperare eseguendo il comando precedente.
3] Imposta il passthrough GPU per Windows 11/10
Per prima cosa, impariamo come abilitare il GPU Passthrough sui sistemi operativi client Windows.
Per verificare se la scheda video supporta il passthrough GPU, è necessario eseguire il seguente comando.
Finestre 11
Get-VMHostPartitionableGpu
Finestre 10
Get-VMPartitionableGpu
Successivamente, dobbiamo copiare il driver grafico dal client host alla VM. Per semplificare il processo, consigliamo di scaricare il file ZIP da github.com ed estrarlo da qualche parte.
Per eseguire questo script, dobbiamo prima consentirne l’esecuzione utilizzando i due comandi seguenti.
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Dopo aver eseguito il comando, devi eseguire lo script utilizzando il seguente comando. Puoi eseguirlo prima e/o dopo aver aggiunto la tua VM a GPU Passthrough
.\Update-VMGpuPartitionDriver.ps1 -VMName <VMNAME> -GPUName "AUTO"
Ora esegui il seguente comando per aggiungere la tua VM al passthrough GPU.
Set-VM -VMName VMName -GuestControlledCacheTypes $true -LowMemoryMappedIoSpace 1Gb -HighMemoryMappedIoSpace 32Gb
Add-VMGpuPartitionAdapter -VMName <VMNAME>
Per rimuovere la partizione GPU, eseguire – Remove-VMGpuPartitionAdapter -VMName <VMNAME>
.
4] Imposta il passthrough GPU per Windows Server
Se si utilizza Windows Server, è necessario eseguire il seguente comando nella modalità elevata di PowerShell per impostare la cache e i limiti per lo spazio MIMO a 32 bit (3 GB per i sistemi operativi a 32 bit).
Set-VM -Name VMNAME -GuestControlledCacheTypes $True -LowMemoryMappedIoSpace 3Gb -HighMemoryMappedIoSpace 33280Mb
Questi limiti definiscono la memoria che consente alla VM di accedere al dispositivo. Utilizzare uno script Machine Profile da learn.microsoft.com per impostare limiti MIMO accurati. Regolare i valori se la VM mostra carenza di risorse; sono necessari 33280 MB per uno spazio MIMO superiore a 32 bit.
Successivamente, dobbiamo controllare la posizione del dispositivo PCI Express. Per farlo, esegui le seguenti query.
Get-PnpDevice | Where-Object {$_.Present -eq $true} | Where-Object {$_.Class -eq "Display"}|select Name,InstanceId
E
Get-PnpDevice -Class Display | ForEach-Object { Write-Output "$($_.FriendlyName) has a device id of $($_.DeviceId) and is located at $($_ | Get-PnpDeviceProperty DEVPKEY_Device_LocationPaths | Select-Object -ExpandProperty Data | Where-Object { $_ -like "PCIROOT*"})"; }
Devi vedere dove si trova la tua GPU, dovrebbe essere qualcosa del tipo PCIROOT(0)#PCI(0200) .
Infine, seguire i passaggi indicati di seguito.
- Aprire Gestione dispositivi, espandere Schede video, fare clic con il pulsante destro del mouse sui driver video e fare clic su Disabilita dispositivo.
- Eseguire il seguente comando per smontare il driver GPU dopo aver modificato l’indirizzo PCI.
Dismount-VmHostAssignableDevice -LocationPath "PCIROOT(0)#PCI(0200)"-Force
- Dopo aver modificato l’indirizzo PCI e il nome della VM, eseguire il comando seguente per assegnare un dispositivo GPU alla VM.
Add-VMAssignableDevice -VMName VMNAME -LocationPath "PCIROOT(0)#PCI(0200)"
- Accendi la macchina virtuale e controlla se è presente una scheda video fisica in Gestione dispositivi.
- Installare i driver della scheda video dal sito web NVIDIA o AMD.
Per tornare alla macchina host, arrestare la VM ed eseguire la seguente query sul dispositivo host.
Remove-VMAssignableDevice -VMName VMNAME -LocationPath $locationPath
Quindi, eseguire il comando seguente per riconnettere la scheda video all’host Hyper-V.
Mount-VMHostAssignableDevice -LocationPath $locationPath
Questo è tutto!
Lascia un commento