之前有跟大家請教虛擬機的問題,我也試了一下,目的是想要在虛擬機中有較好的 OpenGL (CAD) 支援。
CPU: Intel XEON
在顯示卡部分,安裝有 NVIDIA RTX A2000 與 NVIDIA GTX 970 各一片。
目前想要的是 Host: Server 2019 (A2000,連網),Guest: Win10 (GTX 970,不連網)。因為如果從外網,我可以用 Anydesk 連進 Server 2019。
嘗試過:
VMWare Workstation Player: Host: Win10, Guest: Win10 顯示圖形很慢
Hyper-V: Host: Server 2019, Guest: Win10 也是顯示很慢。爬了一些文,聽說是因為漏洞關係把 RemoteFX 拿掉了。有人在 Win10 / Win10 成功使用 GPU-P(我也不知道這是什麼),可以把 GPU 指定給虛擬機使用,但我依樣畫葫蘆,結果顯示類似資源不足的訊息。
Unraid: GPU 直通很簡單,但後來不知道改到什麼設定,又沒直通了。如果從外網用 Anydesk 連 Unraid 的虛擬機,我還要再開啟另外一台電腦,先用 Anydesk 連進另一台電腦,再由另一台電腦連到 Unraid。
所以,目前看來,似乎只有 Server 2019 + Win10 可以達到我的需求。
後來找了 DDA 的資料,MS 有一個範例:
#Configure the VM for a Discrete Device Assignment
$vm = "test"
#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
=> 請問,-LowMemoryMappedIoSpace 和 -HighMemoryMappedIoSpace 的依據是什麼? 或是我只要複製貼上就可以了?
#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
=> 因為 Server 2019 不支援 GTX 970,所以,被抓到的是 A2000。我該如何把 GTX 970 拿去直通? 或是 Server 2019 沒驅動 GTX 970 就無法拿去直通?
#Dismount the Device from the Host
Dismount-VMHostAssignableDevice -force -LocationPath $locationPath
#Assign the device to the guest VM.
Add-VMAssignableDevice -LocationPath $locationPath -VMName $vm
主要問題是 "=>" 後的敘述,希望有前輩可以解惑? 謝謝先....
[更新]
目前搞定了這一部分。但是,上述的參數還是不懂。
$vm = "test"
Set-VM -Name $vm -AutomaticStopAction TurnOff
Set-VM -GuestControlledCacheTypes $true -VMName $vm
Set-VM $VM -LowMemoryMappedIoSpace 512MB
Set-VM $VM -HighMemoryMappedIoSpace 1GB
接下來是透過 GUI 的裝置管理員操作。
把 GTX 970 停用裝置。然後 GTX 970 內容 -> 詳細資料 -> 位置路徑 就可取得類似 PCIROOT(80)#PCI(0200)#PCI(0000) 這樣的東西
$LocationPath = 'PCIROOT(80)#PCI(0200)#PCI(0000)'
Dismount-VMHostAssignableDevice -force -LocationPath $LocationPath
Add-VMAssignableDevice -LocationPath $LocationPath -VMName $vm
就可以了
然後在 VM 中安裝 GTX 970 的驅動程式
但是,還是想知道 -LowMemoryMappedIoSpace 和 -HighMemoryMappedIoSpace 的依據是什麼? 會有何影響? 因為我看不同人的設定,用的值都不太一樣。還是希望大神幫我解答。謝謝先....