Использовать NVidia GPU от VirtualBox?


29

Как заставить гостя VirtualBox использовать графику NVidia?

Настройка хоста:

  • Windows 7 x64

  • NVidia Optimus

  • В Панели управления NVIDIA я явно выбрал высокопроизводительный процессор NVIDIA для:

     C:\Program Files\oracle\VirtualBox\VirtualBox.exe
     C:\Program Files\Oracle\VirtualBox\VBoxSVC.exe
    
  • Когда VirtualBox работает, программное обеспечение NVidia не отображает его как приложение, использующее графический процессор NVidia. Поэтому я предполагаю, что VirtualBox действительно не использует графический процессор Nvidia.

Гость:

  • Windows 7 x64 (то же самое, что и хост)

  • Гостевые дополнения установлены

  • 3D-ускорение включено в настройках VirtualBox: Дисплей / Видео / Включить 3D-ускорение

  • Что Rhinoceros , приложение с поддержкой OpenGL, сообщает как видеоадаптер:

    Humper
    Chromium
    OpenGL version: 2.1 Chromium 1.9
    Render version: 2.0
    Shading Language: 1.40 - Intel Build 9.17.10.3517
    Driver Date: NA
    Driver Version: NA
    Maximum Texture size: 8192 x 8192
    Z-Buffer depth: 32bits
    Maximum Viewport size: 8192 x 8192
    Total Video Memory: 64 MB
    

    Мне кажется, что виртуальная машина использует аппаратное ускорение 3D хоста, но, к сожалению, Intel.


2
Виртуальные машины не получают прямого доступа к оборудованию - они получают виртуальный графический процессор. , , связанный вопрос: superuser.com/questions/395245/…
ernie

6
@ernie VirtualBox может предоставить гостям прямой доступ к API OpenGL графического процессора хоста. Насколько я могу сказать, что работает на моей машине. Только VirtualBox использует графический процессор Intel вместо графического процессора NVidia. Цитата из руководства VirtualBox : «С этой функцией, если приложение внутри вашей виртуальной машины использует 3D-функции через программные интерфейсы OpenGL или Direct3D 8/9, вместо того, чтобы эмулировать их в программном обеспечении (что будет медленным), VirtualBox попытается использовать 3D-оборудование вашего хоста. "
Фекли

@feklee Название вопроса вводит в заблуждение: вы хотите использовать графический процессор nVidia для VBox. «От» также возможно, но означает что-то другое: аппаратное обеспечение, т.е. Доступ к графическому процессору хоста напрямую из VBox.
Ларки


Найти про "Virtualbox Passthrough Video".
e-info128

Ответы:


20

Я понимаю, что прошло несколько лет, но я хотел ответить, так как этот пост показывается довольно высоко, когда вы используете Google для «virtualbox 3d множественный GPU». За прошедшее время все стало намного проще и лучше.

Люди, которые натыкаются на этот поток, скорее всего, окажутся здесь, потому что у них есть ноутбук или ПК с двумя графическими процессорами, что довольно распространено в наши дни, особенно на игровых ноутбуках. Встроенный графический процессор Intel используется для рендеринга окон и обычных приложений, но приложения, использующие 3D-функциональность графического процессора, должны делать это с помощью высокопроизводительного графического процессора Nvidia.

Сегодня я собирал виртуальную машину Ubuntu на своем ноутбуке для кроссплатформенной разработки, и все было хорошо, за исключением того, что гостевая виртуальная машина была очень медленной, и этому не было никакого объяснения, потому что процессор, память и диск демонстрировали низкую загрузку.

Не потребовалось много времени, чтобы понять, что именно видео было причиной проблемы. Запуск приложений, максимизация / минимизация окон - все, что мы считаем само собой разумеющимся в 2019 году, но нуждающееся в 3D-ускорении для работы на любой разумной скорости - использовало графический процессор 0.

Это было легко определить, потому что Windows 10 теперь может видеть использование графического процессора с помощью «диспетчера задач», а затем вкладки «производительность». И я мог видеть, как я двигал окна, развернул, свернул, что это было сделано через GPU на хосте. Этот графический процессор на хосте является встроенным Intel HD GPU, и я хотел использовать NVidia GTX-1050ti, который был GPU1.

После поисков я не нашел нигде, где можно было бы указать, какой графический процессор использовать. Но эта ветка и некоторые другие напомнили мне, что при таких настройках нужно перейти в панель управления NVidia, затем «управлять настройками 3d», а затем вкладка «Настройки программы».

Вы вряд ли найдете «Virtualbox» в списке. Но вы можете нажать кнопку «Добавить» и добавить virtualbox.exe. Возможно, вам придется детализировать диск / путь, где находится ваша установка Virtualbox. После того, как вы добавили его, в настройках ниже убедитесь, что пункт 2. «Выберите предпочтительный графический процессор для этой программы» установлен на графический процессор, который вы хотите использовать, который в моем случае был «Высокопроизводительный процессор NVIDIA» ,

Не устанавливайте его в автоматический режим и, конечно, не устанавливайте его в интегрированный режим. Конечно, вам нужно, чтобы настройки виртуальной машины были установлены с установленным флажком 3D-ускорения, и вам необходимо установить гостевые дополнения на хосте. Но после того, как вы установили параметры 3d видео для хоста, как описано выше, выключите гостевую виртуальную машину, выйдите из виртуальной коробки, а затем перезапустите virtualbox и виртуальную машину.

Если вы используете диспетчер задач | performancemacne и посмотрите на процесс «менеджер виртуальных ящиков» и посмотрите, какой графический процессор используется при навигации по интерфейсу гостевой виртуальной машины, вы должны увидеть его, используя лучший графический процессор сейчас. Смотрите изображение, вставленное ниже.

Все это говорит, не ожидайте, что сможете запускать игры в гостевой виртуальной машине. Проход 3D ускорения до сих пор не так уж далеко впереди. Но вы можете ожидать, что у вас в гостях будет современная ОС и пользовательский интерфейс, и у вас будет приемлемый опыт. Можно было бы играть в более старые игры на гостевой виртуальной машине, как и все, что основано на DirectX9. К сожалению, по мере развития возможности виртуализации графических процессоров технология 3D-игр развивается быстрее.

Скриншот


2
Сегодня я провел небольшое исследование возможностей 3D-ускорения VirtualBox и VMWare, и по состоянию на январь 2019 года, если ускорение графического процессора в гостевой виртуальной машине важно для вас, тогда выбор VMWare - ваш лучший выбор, особенно если ваша гостевая ОС - Windows. Поддержка VirtualBox Возможности ускорения графического процессора немного менее развиты, поскольку вы можете предоставить гостевой виртуальной машине максимум 128 МБ видеопамяти, а в VMWare можно выделить до 2 ГБ для видеопамяти. VMWare поддерживает DirectX 10, а Virtualbox поддерживает DirectX9. Как я сказал в посте, directx 9 довольно устарел.
Томас Карлайл

1
«« Выберите предпочтительный графический процессор для этой программы »установлен на графический процессор, который вы хотите использовать» Я не вижу вышеупомянутой опции. Я вижу Ambinetn, Ansiotropic Filtering ... и т. Д., Но ничего о "выберите предпочтительный процессор графики"
moondra

Вам нужно прохождение PCI, хотя я еще не работал с Optimus, но я думаю, что с некоторыми взломами это возможно
kensai

Мне удалось сделать подобный трюк, чтобы принудительно включить карту nvidea для virtualbox, но ни один из 3 доступных графических контроллеров, предоставляемых Virtualbox, не работал нормально с моей гостевой ОС Neon KDE. У меня были большие глюки пользовательского интерфейса, поэтому использование nvidea в моем случае не является опцией. Благодаря предложению @ThomasCarlisle я постараюсь поиграть с VMware.
Arkemlar

17

Предоставление гостю полного доступа к графическому процессору, вероятно, невозможно. Если виртуальная машина имела прямой доступ к вашему графическому процессору, когда ваш хост использовал его, Bad Things TM произошел бы, потому что совместное использование памяти между двумя фактически разными компьютерами - это не вещь; указатели и адреса и тому подобное будут сильно отличаться между ними. (Ни одна доступная для потребителя карта не поддерживает обслуживание двух компьютеров одновременно.)

Однако есть некоторые вещи, которые вы можете попробовать. Сначала установите предпочтительный графический процессор на панели управления NVidia ( Настройки 3DУправление настройками 3DПредпочитаемый графический процессор ). Это может заставить VirtualBox пойти с картой NVidia для OpenGL.

Если это не поможет, попробуйте установить Guest Guest Additions в безопасном режиме на гостя.

Наконец, на хостах Linux вы можете попытаться передать графический процессор на виртуальную машину, но это будет работать только для PCI-карт, и я не смог определить, ваш ли это PCI, и даже если у вас есть хорошие шансы отрыв графического процессора от хоста или возникновение других проблем. Сначала найдите адрес PCI (шина, устройство и функция) для правильной карты. Установите чипсет вашей виртуальной машины на ICH9; это ничего не сломало, когда я попробовал. Затем используйте утилиту VBoxManage, чтобы прикрепить карту:

vboxmanage modifyvm "Your VM Name" --pciattach BB:DD.F@bb:dd.f

Заменить Your VM Nameпри необходимости. BBномер шины вашего GPU на хосте; DDэто устройство; Fэто функция. После этого @введите слот PCI, который будет на гостевой. Например:

vboxmanage modifyvm "Windows 7 x64" --pciattach 01:00.0@03.01.0

В общем, прохождение через GPU более вероятно на хосте Linux. См. Как настроить игровой автомат с использованием графического процессора .


2
Предположение о том, что присоединение графического процессора к ВМ - это «плохая вещь», неверно; Существует большое сообщество людей, которые хотят сделать это, чтобы создавать игровые виртуальные машины на гипервизорах с «голым металлом». Если бы кто-то хотел сделать это в Linux, это потребовало бы внесения в черный список графического процессора PCIe, чтобы ядро ​​обращалось только к графике чипсета; это предотвращает проблемы «разделяемой памяти». Предотвращение захвата карты Windows, вероятно, является самой сложной проблемой для решения этого вопроса, и, вероятно, для этого потребуется отключить устройство или удалить optimus и драйвер nvidia.
Тим Г

@ TimG Хороший вопрос, я немного прояснил свой пост. Благодарность!
Бен

@BenN Отличный ответ, но мне нужно уточнить вопрос. Вы сами пробовали это на хосте Windows? В руководстве говорится, что это доступно только на хостах Linux ( virtualbox.org/manual/ch09.html#pcipassthrough ), и мне самому не повезло, что он работает с хостом Windows.
Барис Демирай

@BarisDemiray Если я правильно помню, команда не сообщала о каких-либо ошибках, когда я пытался это сделать, но я не думаю, что проверял, что виртуальная машина могла использовать устройство. Это было очень давно, извините.
Бен Н

Привет @BenN, спасибо, что нашли время ответить. Это именно то, что случилось, когда я пытался, никаких ошибок в командной строке, но нет видеокарты в виртуальной машине.
Барис Демирай
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.