50 votes

Utiliser le GPU NVidia à partir de VirtualBox ?

Comment faire en sorte que l'invité VirtualBox utilise les graphiques NVidia ?

Configuration de l'hôte :

  • Windows 7 x64

  • NVidia Optimus

  • En Panneau de contrôle NVIDIA J'ai sélectionné explicitement Processeur NVIDIA haute performance pour :

     C:\Program Files\oracle\VirtualBox\VirtualBox.exe
     C:\Program Files\Oracle\VirtualBox\VBoxSVC.exe
  • Lorsque VirtualBox est en cours d'exécution, le logiciel NVidia ne le répertorie pas en tant qu'application. qui utilise le GPU NVidia. Je suppose donc que VirtualBox n'utilise pas le GPU GPU Nvidia.

Invité :

  • Windows 7 x64 (c'est-à-dire le même que l'hôte)

  • Ajouts d'invités installé

  • Accélération 3D activée dans les paramètres de VirtualBox : Affichage / Vidéo / Activer 3D Acceleration

  • Ce qu'il faut faire Rhinocéros une application compatible avec OpenGL fait office d'adaptateur vidéo :

    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

    Pour moi, il semble que la machine virtuelle utilise l'accélération matérielle 3D de l'hôte, mais malheureusement celle d'Intel.

47voto

Thomas Carlisle Points 606

Je me rends compte que quelques années se sont écoulées mais je tenais à répondre puisque ce post apparaît assez haut lorsque l'on cherche sur Google "virtualbox 3d multiple GPU". Dans le temps qui s'est écoulé, les choses se sont beaucoup simplifiées et améliorées.

Les personnes qui tombent sur ce fil de discussion le font probablement parce qu'elles possèdent un ordinateur portable ou un PC équipé de deux GPU, ce qui est assez courant de nos jours - en particulier sur les ordinateurs portables de jeu. Le GPU Intel intégré est utilisé pour le rendu de Windows et des applications générales, mais les applications qui utilisent la fonctionnalité 3D du GPU doivent le faire via le GPU Nvidia, plus performant.

Aujourd'hui, je construisais une VM Ubuntu sur mon ordinateur portable pour faire du développement multiplateforme, et tout allait bien sauf que la VM invitée était extrêmement lente, et il n'y avait pas d'explication à cela parce que le CPU, la mémoire, le disque montraient tous une faible utilisation.

Il n'a pas fallu longtemps pour comprendre que c'était la performance vidéo qui était à l'origine du problème. Lancer des applications, maximiser/minimiser Windows - tout ce que nous tenons pour acquis en 2019 mais qui nécessite une accélération 3D pour fonctionner à une vitesse raisonnable - utilisait le GPU 0.

Cela a été facile à déterminer car Windows 10 permet désormais de voir l'utilisation du GPU en utilisant le "gestionnaire des tâches", puis l'onglet "performance". Et j'ai pu voir que lorsque je déplaçais Windows, maximisait, minimisait, cela se faisait par le biais du GPU sur l'hôte. Ce GPU sur l'hôte est le GPU Intel HD intégré, et je voulais utiliser la NVidia GTX-1050ti, qui était le GPU1.

Après avoir cherché, je n'ai trouvé aucun endroit où l'on pouvait spécifier le GPU à utiliser. Mais ce fil, et d'autres, m'ont rappelé que sur ce type de configuration, il faut aller dans le panneau de configuration de NVidia, puis "gérer les paramètres 3D", puis l'onglet "Paramètres du programme".

Vous ne trouverez probablement pas "Virtualbox" dans la liste. Mais vous pouvez appuyer sur le bouton "Ajouter" et ajouter virtualbox.exe. Il se peut que vous deviez rechercher le lecteur/chemin d'accès où se trouve votre installation Virtualbox. Une fois que vous l'avez ajouté, dans les paramètres ci-dessous, assurez-vous que l'élément 2. "Sélectionnez le processeur graphique préféré pour ce programme" est réglé sur le GPU que vous voulez utiliser, qui dans mon cas était "Processeur NVIDIA haute performance".

Ne le mettez pas en mode automatique et encore moins en mode intégré. Bien sûr, il faut que les paramètres de la VM soient réglés avec la case accélération 3D cochée, et que les ajouts de l'invité soient installés sur l'hôte. Mais une fois que vous avez défini les paramètres vidéo 3d de l'hôte comme décrit ci-dessus, arrêtez la VM invitée, quittez virtualbox, puis relancez virtualbox et la VM.

Si vous utilisez le gestionnaire de tâches|performacne et regardez le processus "virtualbox manager" et regardez quel GPU est utilisé lorsque vous naviguez dans l'interface utilisateur de la VM invitée, vous devriez voir qu'il utilise le meilleur GPU maintenant. Voir l'image collée ci-dessous.

Cela dit, ne vous attendez pas à pouvoir exécuter des jeux dans une VM invitée. L'accélération 3D n'est pas encore tout à fait au point. Mais vous pouvez espérer avoir un système d'exploitation et une interface utilisateur modernes dans votre machine invitée, et avoir une expérience acceptable. Il serait possible de jouer à des jeux plus anciens dans la VM invitée, comme tout ce qui est basé sur DirectX9. Malheureusement, à mesure que la capacité de virtualiser le GPU évolue, la technologie des jeux 3D évolue plus rapidement.

Screenshot

21voto

Ben N Points 38070

Il n'est probablement pas possible de donner à l'invité un accès complet au GPU. Si une machine virtuelle avait un accès direct à votre GPU pendant que votre hôte l'utilise, les choses iraient mal. TM se produirait parce que le partage de la mémoire entre deux ordinateurs effectivement différents n'existe pas ; les pointeurs, les adresses, etc. seraient très différents d'un ordinateur à l'autre. (Aucune carte disponible pour le grand public ne permet de desservir deux ordinateurs à la fois).

Il y a cependant des choses que vous pouvez essayer. Tout d'abord, réglez votre processeur graphique préféré sur le bon dans le panneau de configuration NVidia ( Réglages 3D Gérer les paramètres 3D Processeur graphique préféré ). Cela pourrait inciter VirtualBox à utiliser la carte NVidia pour l'OpenGL.

Si cela ne suffit pas, essayez installation des ajouts d'invités en mode sans échec sur l'invité.

Enfin, sur les hôtes Linux Vous pouvez essayer de faire passer le GPU par la machine virtuelle, mais cela ne fonctionnera que pour les cartes PCI et je n'ai pas pu déterminer si la vôtre est PCI, et même dans ce cas, vous avez de bonnes chances d'arracher le GPU à l'hôte ou de causer d'autres problèmes. Commencez par trouver l'adresse PCI (bus, périphérique et fonction) de la bonne carte. Réglez le chipset de votre VM sur ICH9 ; cela n'a pas causé de problèmes immédiats lorsque je l'ai essayé. Utilisez ensuite l'utilitaire VBoxManage pour attacher la carte :

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

Remplacer Your VM Name le cas échéant. BB est le numéro de bus de votre GPU sur l'hôte ; DD est le dispositif ; F est la fonction. Après la @ , entrez l'emplacement PCI qu'il occupera sur l'invité. Par exemple :

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

En général, il est plus probable que le GPU passthrough soit possible sur un hôte Linux. Voir Comment configurer une machine de jeu avec GPU passthrough ? .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X