Hyper v проброс видеокарты

Собственно сделал всё по инструкции — выполнил следующие команды в PowerShell хост-машины:

Disable-PnpDevice -InstanceId $pnpdevs[0].InstanceId -Confirm:$false

$locationpath = ($pnpdevs[0] | Get-PnpDeviceProperty DEVPKEY_Device_LocationPaths).data[0]

Dismount-VmHostAssignableDevice -LocationPath $locationpath -force

Add-VMAssignableDevice -locationpath $locationpath -VMname RenderVM

В хостовой машине графический адаптер пропал из списка устройств. В списке устройств виртуальной машины появилось оборудование "NVIDIA GeForce GTX 680", но система его отключает с кодом 43 (жёлтый треугольник с восклицательным знаком на данном устройстве в диспетчере).

Гостевая ОС — Windows 10 x64 Enterprise LTSB, все драйверы видеокарты обновились нормально, а панель управления NVIDIA не запускается с сообщением, что адаптер не подключен. Виртуальная машина поколения 2 (по классификации Hyper-V).

Хостовая ОС — Windows Server 2016 Datacenter.

Как заставить графический адаптер работать на виртуалке Hyper-V? И возможно ли это с данной картой и данной гостевой ОСью?

в виртуалбокс — ни как. вообще. нет там такой фичи. ни в винде, ни в линуксе
в вмвари — то же самое. ни в винде, ни в линуксе
если у вас один видеоконтроллер — ни как. ни где, ни в винде, ни в линуксе
видеоконтроллер принадлежит одной ОС. если у вас он один, после загрузки основносй ОСи, он принадлежит ей

хотите хост (головная машина) и две виртуалки с проброшенными картами? вам надо три видеоконтроллера
но под виндой все равно — ни как. нет под настольную винду таких гипервизоров

если вы разоритесь на нужное количество видеокарт (может и дешевые найдутся) и в материнке хватит совместимых слотов, вам все рано понадобится серверная операционка:
— Windows Server Hyper-V — https://docs.microsoft.com/en-us/windows-server/vi. только не путайте с Windows Server, там десктопа нет. это специальная редакция для дата-центров, в ней живут только виртуалки
— или загадочный для вас линукс. он и в десктопных вариантах может включать любые свои серверные функции. при этом придется освоить какой либо из взрослых линуксовых гипервизоров

ps кстати. возможно вам проброс то и не нужен. более вероятно игре/боту нужен какой либо 3D ускоритель. а у вас

Задача развернуть изолированное игровое пространство на виртуальной машине. В дальнейшем будет предоставляться удаленный доступ к этой виртуальной игровой среде. Как-то так.

Огромная просьба без хейтерства и отсылок к гуглу, заранее спасибо!

  • Вопрос задан более года назад
  • 1602 просмотра

Чтобы виртуальная машина могла использовать видеокарту на полную катушку нужно ее "пробросить" с помощью настроек виртуальной машины в гипервизоре. При этом сам хост уже не сможет ее использовать. То же самое верно и для других устройств.
Чтобы вы могли пробросить в виртуалку видеокарту у вас должно быть две видеокарты. Тогда одну вы можете использовать на хосте, а другую пробросить в виртуалку.
Не факт, что ваш гипервизор умеет пробрасывать что-то, кроме USB портов.

Из того что я знаю, подобное умеют VMWare ESXi и Citrix XenServer (Hypervisor).
Десктопные варианты гипервизоров это не умеют, имхо.

А такой вопрос. Если у меня есть интегрированное видео
Моник подключен к мат. плате (будем думать что настроили так, чтобы показывало изображение)

Тогда возможно будет ее пробросить?
Как считаете?

начиная с 1809 поддержка RemoteFX закрывается

(источник — консоль Hyper-V, upd кажется в настройках самого сервера. там же было что то о причинах и что в замен, но снес его в пользу VMWare на данный момент, по этому точнее не подскажу. но возможно там дается решение для текущего поколения Hyper-V)

то есть лучше не то что бы 1803, а вообще LTSB или гуевый сервер 1607
еще аргумент в пользу поколения 1607 — в LTSB все еще есть контроль загрузки процессора. где то с 1709, его выпилили из проф

так же рекомендую к прочтению, возможно пригодится, если варианты типа vSphere не годятся, читать начиная с упоминания NVIDIA GRID VGPU — https://habr.com/post/257425/

В общем-то не удивительно, что тема набирает популярность — задача иметь линух на хосте и полноценную игровую машину на винде гостем (или как здесь — винда в винде) для того, чтобы разделить мух и котлет все интереснее, тем более, что видеокарты все мощнее.
Вот только производители видеокарт тоже об этом знают и нифига этому не рады 🙂 Да и производители гиперов тоже не сидят на месте.
Чтоюы видюха могла полностью использоваться виртуалкой — ее нужно просунуть туда целиком, как устрйоство, чтобы виртуалка ее нашла и поставила дрова. Мне известна только одна комбинация железа, гипера и оси, где по неподтвержденным данным этот финт ушами канает — видюха от ATI (НЕ NVidia!), гипер KVM, линух хостом, винда гостем.
Какое-то время я пробовал сам, но нифига не преуспел — в KVM видюха пробрасывается, но винда нифига не запускает дрова (потому что NVidia противодействует этому. Намеренно.) в ESXi дрова ставятся, но как "переключить" на нее "монитор" я так и не понял. В Hyper-V же я не уверен, что даже пробросить удастся.

Там статья по ссылке выше. Ее конечно стоит прочитать, но исключительно для самообразования, потому что автор скромно умолчал, сколько стоит GRID K1/K2 карта. Для справки — GRID K1 — порядка 200 тыс руб, GRID K2 — порядка 400 тыс
Пруф

там есть маленький нюанс, который возможно обходится программно, но я решил что поменять мать будет проще, т.к. предыдущая от Gigabyte этому требованию не соответствовала:

1) Run the "dmesg | grep ecap" command.

2) On the IOMMU lines, the hexadecimal value after "ecap" indicates whether interrupt remapping is supported. If the last character of this value is an 8, 9, a, b, c, d, e, or an f, interrupt remapping is supported. For example, "ecap 1000" indicates there is no interrupt remapping support. "ecap 10207f" indicates interrupt remapping support, as the last character is an "f".

Interrupt remapping will only be enabled if every IOMMU supports it.

таким образом конфиг был пересобран на далеко не лучшей матери, но забугорные ребята хвалят эту фирму за то что ее железо чаще всего подходит для таких вещей:
Процессор — i7 8700k
Мать — ASRock Z390M Pro4
Видеокарта — INNO3D GeForce GTX 1070 iChill X4

# If you change this file, run ‘update-grub’ afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n ‘Simple configuration’

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Proxmox Virtual Environment"
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
GRUB_CMDLINE_LINUX=""

# Disable os-prober, it might add menu entries for each guest
GRUB_DISABLE_OS_PROBER=true

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD . )
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo’
#GRUB_GFXMODE=640×480

# Uncomment if you don’t want GRUB to pass "root=UU > #GRUB_DISABLE_LINUX_UU >
# Disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

blacklist radeon
blacklist nouveau
blacklist nvidia

args: -cpu ‘host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_ > bios: ovmf
boot: dcn
bootdisk: sata0
cores: 8
cpu: host
hostpci0: 01:00.0,pcie=1
ide2: local:iso/ru-en_windows_10_1803_x86-x64.iso,media$
machine: q35
memory: 16384
net0: e1000=EA:20:FA:6A:D6:A0,br > numa: 0
ostype: win10
sata0: local-lvm:vm-100-disk-0,size=120G
scsihw: virtio-scsi-pci
smbios1: uu > sockets: 1
usb0: host=1-8.4
usb1: host=1-8.3
vmgenid: b75aeb27-3102-458d-8e23-18cd27796dc1

Следующий нюанс. Я использовал:
— второй ПК (Мини-ПК),
— 1 мышь, которую переставлял постоянно,
— 1 клавиатуру на хосте
— 3 подключения к монитору (VGA — для интегрированной видеокарты, HDMI — для GTX1070, на DVI находится Мини-ПК. Переключения между видеосигналами осуществляется через меню монитора)

0й этап — на материнке включил VT-d:Enable, Intel Vitrualization Technology:Enable, Primary Graphx adapter:VGA, Above 4G Decoding:Enable.
1й этап — Установил Proxmox на хост.
2й этап — Настроил Proxmox (см. конфиги выше) удаленно с Мини-ПК через текстовую консоль, т.е. настройки были прописаны вручную, но сам файл виртуальной машины был создан через вебформу.
3й этап — Через Удаленную видеоконсоль я поставил Windows 10 Pro и накатил драйвера. Windows распознал сперва видеодрайвер proxmox для работы через видеоконсоль, потом нашел драйвер для GTX1070, а после обновления через интернет (принудительный поиск драйверов в сети) скачал и установил нужный мне драйвер.
4й этап — Я перезапустил виртуалку, переключил отображение видеопотока на мониторе на HDMI разъем и. все заработало, никаких ошибок 43. При этом рабочий стол определяется как №2, №1 недоступен, он открывается через видеоконсоль, но там пусто.

я попробовал запустить видео Blue-ray — нет проблем, тормозов с видеорядом нет, запустил Warhammer online — он завелся и в столице у мя лагов нет, запустил GTA5 у мя выскочила сюжетка, вполне комфортно пострелял. Правда у мя не проброшена клавиатура, т.к. PS/2 поэтому далеко не ушел. На сколько я потерял в производительности — не могу сказать, визуально на текущий момент нисколько, но после проброса клавиатуры я смогу прогнать более адекватные тесты и бенчмарки. По крайней мере это работает нормально, в отличие от "сносного" Remote-FX Hyper-V, который зато пашет из коробки.


[an error occurred while processing the directive]
Карта сайта