pourquoi Virtualbox utilise-t-il 15-20% de CPU lorsque la VM est en pause?

10

J'exécute VirtualBox 3.1 sur Ubuntu avec un invité Win XP. J'ai remarqué à ma grande surprise que lorsque je mets en pause la VM (son écran grise) VirtualBox continue à utiliser 15-20% du CPU de l'hôte.

Est-ce un comportement normal?

Existe-t-il un moyen de l'éviter? (Sans enregistrer l'état de la machine virtuelle et quitter VirtualBox.)

Merci pour tout aperçu!

~ lara

laramichaels
la source

Réponses:

8

Afin de réduire l'utilisation du processeur VirtualBox à tout moment, recourez à ce hack bizarre.

Créez une nouvelle machine virtuelle et n'y installez pas de système d'exploitation. Dites à VirtualBox qu'il exécutera DOS et lui donnera les ressources minimales absolues. N'installez pas d'O / S. Exécutez-le, laissez-le sortir de l'erreur au démarrage et minimisez-le.

Lors de l'exécution de votre véritable O / S dans une deuxième machine virtuelle, vous verrez votre utilisation du processeur Virtualbox inactif tomber à 3-5%.

Idée de jed4czar: http://ubuntuforums.org/showthread.php?s=58e862a814e65eb96f8fe8389b615366&t=838073&page=2

EDIT: Pour répondre directement à vos questions

pourquoi Virtualbox utilise-t-il 15-20% de CPU lorsque la VM est en pause?

C'est un bug. Il utilise toujours 15 à 20% de CPU de plus que nécessaire, lorsqu'une VM est en place, à moins que le hack fourni ne soit utilisé.

Existe-t-il un moyen de l'éviter?

Voir pirater ci-dessus.

kmarsh
la source
bon à savoir, que vbox alloue possibliy cpu-sources utilisées au démarrage
Diskilla
ooooh ça m'a arrangé aussi! Super merci. Pour info, j'utilise Windows 8.1, VM est centos et consommait au repos à environ 15% de CPU. VBox v4.3.12
Sebas
Étonnant, c'est toujours un problème.
kmarsh
4

J'ai essayé le hack décrit ci-dessus avec la machine virtuelle DOS, mais sans succès (en exécutant des invités Ubuntu 12.04 sur un MacBook Pro avec OS X). J'ai également essayé les changements de paramètres du noyau mentionnés dans le thread Oracle , encore une fois aucun changement. Peu importe ce que je faisais, mes invités semblaient manger 15-20% de CPU chacun. Cependant, j'ai remarqué que le seul invité à qui j'avais assigné 2 processeurs ne mâchait pas 15-20% - il se comportait comme prévu.

Effectivement, quand j'ai changé les autres en 2 CPU, le problème a disparu. Par expérience, je sais que le passage à 2 processeurs permet également l'option IO APIC dans la section de la carte mère, donc je soupçonnais que c'était le changement vraiment intéressant. Autrement dit, celui-ci:

IOAPIC activé

Notez que vous devez éteindre la machine pour modifier ce paramètre, sinon elle est grisée. Une fois que j'avais activé cela sur les invités et redémarré, cela n'avait pas d'importance si j'avais un ou plusieurs processeurs, l'utilisation du processeur de 15 à 20% avait disparu, alors j'ai pensé partager ma solution ici.

Adam C
la source
1

J'ai eu le même problème sur une boîte Windows 7 Quad exécutant Oracle 5 dans la machine virtuelle.

En suivant les conseils d'Adam, j'ai vérifié l'option Enabled IO APIC mais en vain. J'ai donc suivi l'idée de kmarsh, qui a probablement pris moins d'une minute à essayer, et l'utilisation du processeur est passée de 15-20% à 4-5%.

Les paramètres utilisés étaient, Nom: Memory Hack, Type: Autre, Version: DOS. Taille de la mémoire: 4 Mo, disque dur: n'ajoutez pas de disque dur virtuel. Cliquez sur [Créer]. Le démarrage de la VM demande un disque de démarrage, j'ai utilisé: Host Drive 'D:', cliquez sur [Démarrer]. La machine virtuelle indique: "FATAL: impossible de lire à partir du support de démarrage! Système arrêté." À ce stade, l'utilisation du processeur a chuté, j'ai donc minimisé la fenêtre. Le démarrage d'une deuxième machine virtuelle ne fait aucune différence.

veuillez me supprimer
la source
Il semble que ce problème soit si complexe que personne ne le réglera.
kmarsh
0

J'ai rencontré ce problème VirtualBox sur une machine P4 à 2 processeurs avec 3 Go de RAM exécutant l'hôte CentOS 5.5.

Je n'ai pas rencontré ce problème sur une machine i720 8cpu avec 8 concerts exécutant Win7 64 bits. J'ai exécuté 3 machines virtuelles VMWare plus la VirtualBox, toutes avec 2 Go de mémoire, et je n'ai eu aucun problème de CPU.

Cela suggère que soit en cours d'exécution sur une machine "smallish" ou sur un hôte Linux.

Votre solution a bien fonctionné, merci.

Je note que ces messages antérieurs datent d'un an et que ma VirtualBox est la version la plus récente 4.0.4, Oracle n'a donc pas encore corrigé ce bogue.

Wayne Linton
la source
2
Je m'attends à ce que cette pénalité de performance soit associée au fait que les nouveaux processeurs disposent de VT-x et similaires pour permettre la virtualisation assistée par matériel, ce qui signifierait que le programme VirtualBox ne fait pas le travail et donc une utilisation moindre du processeur. Un P4 n'aurait probablement pas la technologie VT-x et devrait donc traduire les appels système via un logiciel et utiliser plus de CPU en conséquence.
Mokubai
Cela doit avoir été corrigé maintenant. en utilisant l'hôte Ubuntu et l'invité XP exécutant VirtualBox v4.3.6 lorsque je mets en pause l'invité, l'utilisation du processeur baisse de 1%
Seeker
0

Les autres réponses n'expliquent pas ou ne corrigent pas le bogue pour moi (hôte Debian, invité Ubuntu suspendu). Oracle a une section pour cela:

Certains invités Linux peuvent provoquer une charge CPU élevée même si le système invité semble être inactif. Cela peut être dû à une fréquence de temporisation élevée du noyau invité. Certaines distributions Linux, par exemple Fedora, livrent un noyau Linux configuré pour une fréquence de temporisation de 1000 Hz. Nous vous recommandons de recompiler le noyau invité et de sélectionner une fréquence de temporisation de 100 Hz.

Les noyaux Linux fournis avec Red Hat Enterprise Linux, ainsi que les noyaux des distributions Linux associées, telles que CentOS et Oracle Linux, prennent en charge un diviseur de paramètres de noyau = N. Par conséquent, ces noyaux prennent en charge une fréquence de temporisation inférieure sans recompilation. Nous vous suggérons d'ajouter le diviseur de paramètres du noyau = 10 pour sélectionner une fréquence de temporisation du noyau invité de 100 Hz.

Source: les invités Linux peuvent provoquer une charge CPU élevée

mayeulk
la source