Bagikan melalui


Menyebarkan perangkat grafis dengan menggunakan Penugasan Perangkat Diskrit

Pelajari cara menggunakan Discrete Device Assignment (DDA) untuk meneruskan seluruh perangkat PCIe ke komputer virtual (VM) dengan PowerShell. Melakukannya memungkinkan akses performa tinggi ke perangkat seperti penyimpanan NVMe atau kartu grafis dari dalam VM sambil dapat menerapkan driver asli perangkat. Untuk informasi selengkapnya tentang perangkat yang berfungsi dan kemungkinan implikasi keamanan, lihat Merencanakan Penyebaran Perangkat menggunakan Penugasan Perangkat Diskrit.

Artikel ini membawa Anda melalui langkah-langkah untuk menggunakan perangkat dengan DDA:

  1. Mengonfigurasi VM untuk DDA
  2. Melepas perangkat dari partisi host
  3. Menetapkan perangkat ke VM tamu

Prasyarat

Sebelum Anda dapat menggunakan DDA untuk menyebarkan perangkat grafis, Anda harus memiliki yang berikut ini.

  • Host Hyper-V yang menjalankan Windows Server 2016 atau yang lebih baru.

  • VM yang menjalankan salah satu sistem operasi berikut:

    • Windows Server 2016 atau yang lebih baru.

    • Windows 10 atau yang lebih baru.

  • Tinjau Rencana untuk Menyebarkan Perangkat menggunakan Penugasan Perangkat Diskrit untuk memastikan perangkat keras Anda kompatibel dengan DDA.

    • Jalankan SurveyDDA.ps1. Skrip PowerShell untuk mengidentifikasi apakah server dikonfigurasi dengan benar. Skrip juga menampilkan perangkat mana yang dapat diteruskan dengan menggunakan Penugasan Perangkat Diskrit.
  • Hak administratif untuk host Hyper-V.

  • (Opsional) Meskipun tidak diperlukan, jika Virtualisasi I/O Akar Tunggal (SR-IOV) tidak diaktifkan atau didukung, Anda mungkin mengalami masalah saat menggunakan DDA untuk menyebarkan perangkat grafis.

Mengonfigurasi VM untuk DDA

Langkah pertama dalam solusi ini adalah mengatasi pembatasan DDA ke VM.

  1. Masuk ke host Hyper-V sebagai administrator.

  2. Buka prompt PowerShell yang ditinggikan.

  3. Konfigurasikan Automatic Stop Action VM untuk mengaktifkan TurnOff dengan cmdlet PowerShell berikut:

    Set-VM -Name VMName -AutomaticStopAction TurnOff
    

Persiapan VM untuk perangkat grafis

Beberapa perangkat keras berkinerja lebih baik jika VM dikonfigurasi dengan cara tertentu. Untuk detail tentang apakah Anda memerlukan konfigurasi berikut untuk perangkat keras Anda, hubungi vendor perangkat keras. Untuk informasi selengkapnya, lihat Merencanakan Penyebaran Perangkat menggunakan Penugasan Perangkat Diskrit dan pada posting blog ini.

  1. Aktifkan Write-Combining pada CPU dengan menggunakan cmdlet berikut:

    Set-VM -GuestControlledCacheTypes $true -VMName VMName
    
  2. Konfigurasikan ruang IO yang dipetakan memori 32-bit (MMIO) dengan menggunakan cmdlet berikut:

    Set-VM -LowMemoryMappedIoSpace 3Gb -VMName VMName
    
  3. Konfigurasikan ruang MMIO yang lebih besar dari 32-bit dengan menggunakan cmdlet berikut:

    Set-VM -HighMemoryMappedIoSpace 33280Mb -VMName VMName
    

    Tip

    Nilai spasi MMIO yang ditampilkan adalah nilai yang wajar untuk diatur untuk bereksperimen dengan satu GPU. Jika setelah memulai VM, perangkat melaporkan kesalahan yang berkaitan dengan sumber daya yang tidak cukup, Anda mungkin perlu mengubah nilai-nilai ini. Untuk informasi selengkapnya tentang cara menghitung persyaratan MMIO dengan tepat, lihat Merencanakan Penyebaran Perangkat menggunakan Penugasan Perangkat Diskrit.

Melepas perangkat dari partisi host

Ikuti instruksi di bagian ini untuk melepas perangkat dari partisi host.

Menginstal driver partisi (opsional)

DDA memberi vendor perangkat keras kemampuan untuk menyediakan driver mitigasi keamanan dengan perangkat mereka. Driver ini tidak sama dengan pengandar perangkat yang diinstal di VM tamu. Terserah kebijaksanaan vendor perangkat keras untuk menyediakan driver ini. Tetapi jika mereka menyediakan driver, instal sebelum melepas perangkat dari partisi host. Hubungi vendor perangkat keras untuk melihat apakah mereka memiliki driver mitigasi.

Jika tidak ada driver partisi yang disediakan, selama melepas, Anda harus menggunakan -Force opsi untuk melewati peringatan keamanan. Untuk informasi selengkapnya tentang implikasi keamanan, lihat Merencanakan Penyebaran Perangkat menggunakan Penugasan Perangkat Diskrit.

Menemukan jalur lokasi perangkat

Jalur lokasi PCI diperlukan untuk melepas dan memasang perangkat dari host. Contoh jalur lokasi terlihat seperti ini: PCIROOT(20)#PCI(0300)#PCI(0000)#PCI(0800)#PCI(0000). Untuk informasi selengkapnya tentang menemukan jalur lokasi, lihat Merencanakan Penyebaran Perangkat menggunakan Penugasan Perangkat Diskrit.

Menonaktifkan perangkat

Gunakan Device Manager atau PowerShell untuk memastikan perangkat Dinonaktifkan.

Melepas perangkat

Bergantung pada apakah vendor menyediakan driver mitigasi, Anda harus menggunakan -Force opsi atau tidak, seperti yang ditunjukkan di sini:

  • Jika driver mitigasi diinstal, gunakan cmdlet berikut:

    Dismount-VMHostAssignableDevice -LocationPath $locationPath
    
  • Jika driver mitigasi tidak diinstal, gunakan cmdlet berikut:

    Dismount-VMHostAssignableDevice -Force -LocationPath $locationPath
    

Menetapkan perangkat ke VM tamu

Langkah terakhir adalah memberi tahu Hyper-V bahwa VM harus memiliki akses ke perangkat. Tentukan jalur lokasi dan nama VM.

Add-VMAssignableDevice -LocationPath $locationPath -VMName VMName

Menyelesaikan tugas pada VM

Setelah perangkat berhasil dipasang di VM, Anda sekarang dapat memulai VM tersebut dan berinteraksi dengan perangkat seolah-olah Anda berjalan pada sistem bare metal. Anda sekarang dapat menginstal driver vendor perangkat keras di VM, dan aplikasi dapat melihat perangkat keras. Anda dapat memverifikasinya dengan membuka Manajer Perangkat di VM tamu dan melihat bahwa perangkat keras tersedia.

Menghapus perangkat dan mengembalikannya ke host

Jika Anda ingin mengembalikan perangkat kembali ke keadaan semula, Anda harus menghentikan VM dan mengeluarkan perintah ini:

# Remove the device from the VM
Remove-VMAssignableDevice -LocationPath $locationPath -VMName VMName

# Mount the device back in the host
Mount-VMHostAssignableDevice -LocationPath $locationPath

Anda kemudian dapat mengaktifkan kembali perangkat di Device Manager, dan sistem operasi host dapat berinteraksi dengan perangkat lagi.

Contoh - Memasang GPU ke VM

Contoh ini menggunakan PowerShell untuk mengonfigurasi VM bernama ddatest1 untuk mengambil GPU pertama yang tersedia oleh produsen NVIDIA dan menetapkannya ke VM.

# Configure the VM for a Discrete Device Assignment
$vm = "ddatest1"
# Set automatic stop action to TurnOff
Set-VM -Name $vm -AutomaticStopAction TurnOff
# Enable Write-Combining on the CPU
Set-VM -GuestControlledCacheTypes $true -VMName $vm
# Configure 32 bit MMIO space
Set-VM -LowMemoryMappedIoSpace 3Gb -VMName $vm
# Configure Greater than 32 bit MMIO space
Set-VM -HighMemoryMappedIoSpace 33280Mb -VMName $vm

# Find the Location Path and disable the Device
# Enumerate all PNP Devices on the system
$pnpdevs = Get-PnpDevice -presentOnly
# Select only those devices that are Display devices manufactured by NVIDIA
$gpudevs = $pnpdevs | Where-Object {$_.Class -like "Display" -and $_.Manufacturer -like "NVIDIA"}
# Select the location path of the first device that's available to be dismounted by the host.
$locationPath = ($gpudevs | Get-PnpDeviceProperty DEVPKEY_Device_LocationPaths).data[0]
# Disable the PNP Device
Disable-PnpDevice -InstanceId $gpudevs[0].InstanceId

# Dismount the Device from the Host
Dismount-VMHostAssignableDevice -Force -LocationPath $locationPath

# Assign the device to the guest VM.
Add-VMAssignableDevice -LocationPath $locationPath -VMName $vm

Memecahkan masalah dengan memasang GPU

Jika Anda meneruskan GPU ke VM tetapi Layanan Desktop Jarak Jauh atau aplikasi tidak mengenali GPU, periksa masalah umum berikut.

  • Pastikan Anda menginstal versi terbaru driver yang didukung vendor GPU, dan driver tidak melaporkan kesalahan. Anda dapat melakukannya dengan memeriksa status perangkat di Manajer Perangkat.

  • Pastikan perangkat Anda memiliki cukup ruang MMIO yang dialokasikan dalam VM. Untuk informasi selengkapnya, lihat Ruang MMIO.

  • Pastikan Anda menggunakan GPU yang didukung vendor untuk digunakan dalam konfigurasi ini. Misalnya, beberapa vendor mencegah kartu konsumen mereka berfungsi saat diteruskan ke VM.

  • Pastikan aplikasi mendukung berjalan di dalam VM, dan bahwa aplikasi mendukung GPU dan driver terkait. Beberapa aplikasi memiliki daftar GPU dan lingkungan yang diizinkan.

  • Jika Anda menggunakan peran Host Sesi Desktop Jauh atau Windows Multipoint Services pada tamu, Anda harus memastikan bahwa entri Kebijakan Grup tertentu diatur untuk mengizinkan penggunaan GPU default. Gunakan Objek Kebijakan Grup yang diterapkan ke tamu (atau Editor Kebijakan Grup Lokal pada tamu). Navigasikan ke item Kebijakan Grup berikut ini:

    Konfigurasi Komputer\Templat Administrator\Komponen Windows\Layanan Desktop Jarak Jauh\Host Sesi Desktop Jarak Jauh\Lingkungan Sesi Jarak Jauh\Gunakan adaptor grafis perangkat keras untuk semua sesi Layanan Desktop Jarak Jauh.

    Atur nilai Kebijakan Grup ke Diaktifkan, lalu mulai ulang VM setelah Anda menerapkan kebijakan.