Pourquoi un invité Ubuntu dans VirtualBox s'exécute-t-il très, très lentement?

176

J'utilise actuellement Ubuntu 12.04 LTS en tant qu'ordinateur hôte et j'ai virtualisé trois ordinateurs:

  • un invité Xubuntu 12.04
  • un invité Windows 7
  • un invité Ubuntu 12.10

Tous les invités ont les mêmes paramètres par défaut de VirtualBox, mais Ubuntu 12.10 est plus lent!

L'installation a pris 1h 40! (Normalement, cela prend 40 minutes.) Maintenant, il est impossible de l'utiliser et toutes les opérations sont très, très lentes.

J'utilise VirtualBox version 4.2.4.

Des idées?

Pourquoi est-ce lent? Et comment puis-je le rendre plus rapide?

Giorgio
la source
Avez-vous essayé de déconner avec des configurations? Avez-vous essayé d'installer des éditions invitées?
usr12390
Oui, j'ai installé des ajouts d'invités, mais rien ne semble changer ... ce qui est étrange, c'est que j'ai installé plusieurs machines virtuelles avec Ubuntu ou une autre distribution, mais seul Ubuntu 12.10 le fait ... pendant l'installation, j'ai tout quitté. réglage par défaut, comme toujours; les 2 autres machines virtuelles fonctionnent bien ...
Giorgio
2
La réponse de Flimm ci-dessous corrige le problème de la lenteur pour moi. askubuntu.com/a/214968/107015
JS.

Réponses:

36

J'ai entendu dire que cela avait quelque chose à voir avec le fait qu'ils avaient supprimé Unity 2D , ou que le passage à la 3D Unity ne ralentisse que les performances de la machine virtuelle en raison de la grande dépendance à laquelle le processeur devait faire face. Le podcast Linux Outlaws en a parlé un peu, mais j’ai oublié l’épisode.

Mise à jour: le problème vient des ajouts d'invités Virtualbox qui ne fournissent pas d'accélération 3D dans 12.10. Voir Ubuntu 12.10 incapable d'utiliser l'accélération 3D. Ne réussit pas à créer un DRM .

Bret
la source
J'ai pensé la même chose, car la seule différence entre les autres PC virtuels, c'est qu'il n'y a qu'une unité 3D ... et que je ne peux pas utiliser l'accélération 3D car mon processeur est un ancien modèle sans cette fonction ... alors , Je vais prendre un nouveau processeur :)
Giorgio
1
Je ne pense pas que cela soit exact - c'est le manque de prise en charge de X Server 1.13 (par VirtualBox), et non de Unity qui est à l'origine du problème. C'est une distinction importante car il est facile de remplacer Unity (avec XFCE, par exemple), mais je ne sais pas comment rétrograder la version par défaut du serveur X.
Mzzzzzz
1
Pourquoi dites-vous que c'est un problème de X? Pour moi, retomber sur gnome a résolu le problème, par exemple. C'était donc un problème de remplacer Unity, plutôt que X?
Nanne
@ marcopolo1010, Xubuntu 12.10 utilise XServer 1.13 et affiche de bonnes performances sous VirtualBox (nettement plus rapide que Ubuntu 12.10). Donc, il doit s'agir d'un problème d'Unity.
Ignis
De plus, si vous utilisez un Mac, vous pouvez essayer d’augmenter le nombre de CPU que vous donnez à l’invité. Cela m'a énormément aidé! Voici où j'ai obtenu la source pour ceci: code.dimilow.com/ubuntu-12-10-slow-as-virtualbox-guest-os
Matt Wolfe
281

Ubuntu 12.10 n’inclut plus Unity 2D , qui a été implémenté pour les plates-formes qui ne peuvent pas fournir une accélération 3D. Au lieu de cela, Ubuntu 12.10 a Unity exécuté sous LLVM, ce qui rend le code destiné au GPU exécuté sur le CPU. C'est beaucoup plus lent que d'utiliser le GPU.

Pour vérifier si votre invité Ubuntu 12.10 utilise l'accélération 3D, exécutez cette commande:

$ /usr/lib/nux/unity_support_test -p
Not software rendered:    no
Not blacklisted:          yes
GLX fbconfig:             yes
GLX texture from pixmap:  yes
GL npot or rect textures: yes
GL vertex program:        yes
GL fragment program:      yes
GL vertex buffer object:  yes
GL framebuffer object:    yes
GL version is 1.4+:       yes

Unity 3D supported:       no

Comme vous pouvez le constater, "pas de rendu logiciel" et "Unity 3D pris en charge" renvoient tous deux "non" dans cet exemple, ce qui signifie que Unity utilise LLVMpipe lent.

Comment activer l'accélération 3D (VirtualBox 4.2.x uniquement)

Ces instructions sont destinées à VirtualBox 4.2.4 ou 4.2.6, installé à partir du site Web de VirtualBox, et non à partir du référentiel Ubuntu. Les versions futures de VirtualBox pourraient résoudre ce problème automatiquement ou nécessiter une solution de contournement différente.

  1. Installez le pack d'extension Oracle VM VirtualBox de VirtualBox.
  2. Créez une instance de VirtualBox et installez Ubuntu 12.10 dessus.
  3. Installez certains packages requis pour les ajouts invités:

    sudo apt-get install linux-headers-$(uname -r) build-essential
    
  4. Installez les ajouts d'invités en cliquant sur Périphériques, Installer les ajouts d'invités et en exécutant cette commande à partir du répertoire du CD-ROM:

    sudo ./VBoxLinuxAdditions.run
    
  5. Ajoutez le vboxvideopilote à l'instance en exécutant:

    sudo bash -c 'echo vboxvideo >> /etc/modules'
    
  6. Arrêtez l'instance de VirtualBox.
  7. Ouvrez les paramètres de l'instance de Virtualbox, naviguez jusqu'à "Afficher" et cochez "Activer l'accélération 3D".
  8. Démarrez votre invité Ubuntu 12.10 et vérifiez que l'accélération 3D fonctionne en exécutant:

    /usr/lib/nux/unity_support_test -p
    

Si les fenêtres semblent disparaître , installez CompizConfig Settings Manager et désactivez FBO (Framebuffer Object) dans la section OpenGL:

  1. Installez le gestionnaire de paramètres CompizConfig:

    sudo apt-get install compizconfig-settings-manager
    
  2. Exécutez le gestionnaire de paramètres CompizConfig:

    ccsm
    
  3. Sélectionnez la section OpenGL puis décochez l'option Objet Framebuffer. Si cela résout le problème, il devrait être immédiatement visible. Aucun redémarrage n'est requis.
Flimm
la source
28
C'est une bonne solution et mérite plusieurs votes positifs.
ζ--
4
Sur ma nouvelle installation d’Ubuntu 12.10 (avec VirtualBox 4.2.4 sur Mac OS X 10.6), cela a vraiment accéléré les choses ... mais il y a beaucoup de bugs avec l’affichage. Windows disparaît, le lanceur n'apparaît que si le tableau de bord est ouvert, etc.
Benjamin Oakes
12
"Pas de logiciel rendu" est un nom de propriété très déroutant: S
Adam Harte
2
@reprogrammer: J'ai eu le même problème. Essayez les paquets supplémentaires du repo Ubuntu au lieu des derniers livrés avec VirtualBox. Pour ce faire, exécutez: sudo apt-get remove virtualbox-guest-additions(cela supprime ceux que vous avez installés) sudo apt-get install virtualbox-guest-additions(cela installe ceux du référentiel par défaut) Ouvrez ensuite les pilotes supplémentaires dans les paramètres (ou par le biais de sources de logiciels> pilotes supplémentaires sur les dernières versions d'Ubuntu) et sélectionnez le plus évident. .
Labsin
6
Je ne pouvais pas que cela fonctionne avec VirtualBox 4.3.12. La solution pour moi pour VirtualBox 4.3.12 consiste à installer une version plus récente de GuestAdditions, comme indiqué ici: virtualbox.org/ticket/12941 Plus précisément, virtualbox.org/download/testcase/…
Gordon Glas
7

Je ne connais pas les paramètres d'interface graphique nécessaires pour rendre Unity utilisable dans une machine virtuelle, mais je sais comment ajuster les machines virtuelles sous virtualbox, KVM et autres. Je n'ai jamais eu la moindre chance de faire en sorte qu'Unity fonctionne correctement dans n'importe quel environnement virtuel. N'essayez jamais trop, préférant utiliser WM pur ou un DE basé sur LXDE.

Des paramètres plus détaillés sont disponibles ici: http://blog.jdpfu.com/2012/09/14/solution-for-slow-ubuntu-in-virtualbox

Sommaire:

  • Les valeurs par défaut de la Vbox ne sont pas bonnes pour les versions d'Ubuntu qui ressemblent à un vrai GPU.
  • Sur les disques durs en rotation, préallouez l'intégralité du disque virtuel. Sur les SSD, peu importe.
  • Allouez uniquement le stockage dont vous avez besoin. Conservez des fichiers volumineux ailleurs, en dehors de vStorage.
  • Ne jamais allouer plus de processeurs ou de RAM que vous n'auriez dû. 1 vCPU est probablement suffisant.
  • Laissez 1 Go de RAM pour l’HostOS. Ne pas trop engager la RAM.
  • Utilisez les pilotes VirtIO pour le stockage et la mise en réseau. Les invités Linux modernes supportent cela.
  • Pour les invités Windows, utilisez les pilotes SATA (stockage) et Intel PRO / 1000 (réseau). Il est possible d’utiliser des pilotes virtio sous Windows, c’est un peu plus dur.
  • Activez ACPI et AHCI pour tous les invités à partir de 2003, WinXP et ultérieurs.
  • Les ordinateurs virtuels de bureau devraient obtenir tous les 128 Mo de vRAM d'affichage
  • Les machines virtuelles de serveur doivent rester avec 9 Mo de vRAM; ne le gaspille pas.
  • Évitez les réglages d'accélération 2D et 3D jusqu'à ce que tout fonctionne comme vous le souhaitez. Ubuntu / Unity fait de mauvaises choses quand ceci est activé. Il peut amener un Core i7 au sol.

Les autres réponses contiennent de nombreux conseils sur les performances de l'interface graphique. Ceux-ci sont probablement valables aussi. Ces mêmes conseils s'appliquent à KVM, VM-Player et aux autres hyperviseurs virtuels. Cela fonctionne aussi pour les serveurs.

Bonne chance.

JohnP
la source
2
Le blog que vous avez lié à est pour Ubuntu 12.04. Ubuntu 12.10 est très différent, car il n’inclut plus Unity 2D et Unity normal effectue le rendu sur LLVMPipe s’il ne détecte pas l’accélération matérielle.
Flimm
2
Mon invité Ubuntu Server est devenu beaucoup plus rapide après avoir changé la mémoire vidéo d'environ 8 Mo à 128 Mo. Je l'utilise pour le développement de Rails.
4

J'ai eu de bons résultats en revenant d'Unity vers le système de repli GNOME. Vous pouvez le faire en installant simplement GNOME-session-fallback à partir du centre logiciel, puis en le choisissant dans l'écran de connexion.

voir: http://www.psychocats.net/ubuntu/classicgnome pour un howto détaillé et aléatoire

Nanne
la source
Dans Ubuntu 16.04, le nom du paquet est gnome-session-flashback. C'est la seule chose qui semble faire une différence dans les performances de l'interface utilisateur pour moi. Merci!
Mustafa
1

Pour activer la 3D prise en charge, vous devez d'abord mettre à jour les en-têtes linux

$ uname -r
$ sudo apt-get install linux-headers-$(uname -r)
$ sudo apt-get autoremove
$ sudo apt-get install build-essential

Maintenant, insérez vitualbox guest iso à partir de périphériques et à installer manuellement

$ cd /media
$ ls
$ cd username
$ ls
$ cd VBOX*
$ ls
$ sudo ./VBoxLinuxAdditions.run

Insérer vboxvideo dans / etc / modules

$ sudo nano /etc/modules

Ajouter “vboxvideo” à la fin du fichier

loop
lp
vboxvideo

Redémarrer la machine

$ sudo reboot

Cochez "Non rendu par le logiciel" et "Unity 3D pris en charge" sont activés ou non après le redémarrage

$ /usr/lib/nux/unity_support_test -p

La prochaine chose que vous voulez faire est d’augmenter la mémoire vidéo. Rechercher le fichier .vbox

$ nano /home/username/VirtualBox VMs/ubuntu/ubuntu.vbox

Remplacer

<Display VRAMSize="128" monitorCount="1" accelerate3D="true" accelerate2DVideo="false"/>

À

<Display VRAMSize="256" monitorCount="1" accelerate3D="true" accelerate2DVideo="false"/>

source: comment réparer les performances lentes ubuntu 13.04 s'exécutant dans virtualbox


la source