J'ai utilisé plusieurs machines virtuelles avec VirtualBox, et l'utilisation de la mémoire a été rapportée sous différents angles, et j'ai du mal à déterminer la quantité de mémoire réellement utilisée par mes machines virtuelles. Voici un exemple:
Donc, clairement, il y a des différences énormes ici. Je ne comprends vraiment pas comment GuestOS peut utiliser plus de 400 Mo alors que le système d'exploitation hôte ne montre qu'environ 75 Mo alloués à la machine virtuelle. Existe-t-il d'autres processus utilisés par VirtualBox qui ne sont pas nommés de manière évidente?
De plus, j'aimerais savoir si j'utilise une machine de 1 Go, est-ce que cela va prendre 1 Go de mon système d'exploitation hôte ou uniquement la quantité de mémoire que la machine invitée utilise actuellement?
Mise à jour:
Une personne a exprimé sa méfiance vis-à-vis de mes chiffres d'utilisation de la mémoire, et je ne suis pas sûr si cette méfiance était dirigée contre moi ou les rapports du gestionnaire de tâches de mon système d'exploitation hôte (qui est peut-être le coupable), mais pour les sceptiques, voici une capture d'écran de ces processus sur la machine hôte:
Pour comprendre l'architecture de processus de VirtualBox, voir
L'architecture de VirtualBox :
Une fois que vous démarrez une machine virtuelle à partir de l'interface graphique, vous avez deux fenêtres (la fenêtre principale et la machine virtuelle), mais trois processus en cours d'exécution. En regardant votre système depuis Task Manager (Windows) ou un moniteur système (Linux), vous verrez:
- VirtualBox, l'interface graphique de la fenêtre principale;
- Un autre processus VirtualBox qui a été démarré avec le paramètre -startvm, ce qui signifie que son processus d'interface graphique agit comme un shell pour une machine virtuelle.
- VBoxSVC, le service mentionné ci-dessus, qui s'exécute en arrière-plan pour garder une trace de tous les processus impliqués. Cela a été démarré automatiquement par le premier processus d'interface graphique.
En ce qui concerne la mémoire, le Manuel de l'utilisateur indique:
mémoire de base
Ceci définit la quantité de RAM allouée et donnée à la VM lorsqu'elle est en cours d'exécution. La quantité de mémoire spécifiée sera demandée au système d’exploitation de l’hôte. Elle doit donc être disponible ou rendue disponible en tant que mémoire libre sur l’hôte lors de la tentative de démarrage de la VM. Elle ne sera pas disponible pour l’hôte tant que le VM est en cours d'exécution. Il s'agit du même paramètre que celui spécifié dans l'assistant "Nouvelle machine virtuelle", décrit dans les instructions de la section intitulée "Création d'une machine virtuelle" ci-dessus.
Cela signifie que l’invité sort de l’hôte:
Il est toujours possible que le manuel de VirtualBox ait plusieurs versions de retard et que les dernières techniques d’optimisation de la mémoire ne soient pas documentées.
En outre, VirtualBox peut optimiser l'utilisation de la mémoire en n'allouant pas toute la mémoire définie VM.
L'allocation de mémoire selon les besoins est une optimisation qui permet d'économiser beaucoup de mémoire physique, mais les processus gourmands en mémoire de la VM peuvent être ralentis par le besoin fréquent de VirtualBox de demander plus de mémoire hôte.
Le seul emplacement dans le Gestionnaire des tâches qui semble refléter le montant total se trouve sur l'onglet Performances - la valeur Total Commit Charge suit à peu près le montant alloué à la machine virtuelle. Je viens d'en fermer une avec 1536 Mo alloués et la charge de validation est passée d'environ 2,4 Go à 0,8 Go. Vous pouvez surveiller dans une certaine mesure ceci par rapport à Virtual Box à l'aide de l'Analyseur de performances et en choisissant les compteurs Process: Octets privés pour VirtualBox, VBoxSvc et également VirtualBox N ° 1, N ° 2, etc. (un pour chaque ordinateur virtuel en cours d'exécution). Il y a aussi le compteur Memory: Committed Bytes pour tout.
Cela semble être un problème de Windows. Voir le troisième article ici: http://forum.sysinternals.com/pe-is-not-showing-all-memory-used-by-virtualbox_topic23886.html
L'utilisation d'un programme tel que VMMap montre clairement que la mémoire que vous indiquez à la VBox d'utiliser est réellement utilisée. Aucune idée pourquoi ce n'est pas visible pour le gestionnaire de tâches ou l'explorateur de processus.
Les entrées que vous voyez dans TaskManager ne sont pas destinées à votre machine virtuelle, mais à l'interface graphique de VirtualBox. L'onglet Performances vous indiquera clairement la quantité de mémoire totale utilisée, mais sans aucun détail sur les processus. Personnellement, j'aimerais que la VBox utilise uniquement ce dont elle a besoin, mais je suis d'accord pour dire qu'il est important qu'elle puisse utiliser autant qu'elle le souhaite, d'où la distinction.
Donc, clairement, il y a des différences énormes ici. Je ne comprends vraiment pas comment GuestOS peut utiliser plus de 400 Mo alors que le système d'exploitation hôte ne montre qu'environ 75 Mo alloués à la machine virtuelle. Existe-t-il d'autres processus utilisés par VirtualBox qui ne sont pas nommés de manière évidente?
Vous regardez ce qui est utilisé sur l'hôte, pas ce qui est alloué . L'invité n'utilise pas plus de 400 Mo de l'hôte RAM de l'hôte.
De plus, j'aimerais savoir si j'utilise une machine de 1 Go, est-ce que cela va prendre 1 Go de mon système d'exploitation hôte ou uniquement la quantité de mémoire que la machine invitée utilise actuellement?
Il réservera 1 Go de RAM, mais il risque en fin de compte d’utiliser beaucoup moins que cela. Si l'invité n'utilise pas une partie de cette mémoire, l'hôte RAM peut être utilisé à de nombreuses autres fins (telle que la mise en cache de pages de disque vierge), même si elle est réservée à l'invité. Et même si l'invité utilise une partie de cette mémoire, s'il ne l'utilise pas suffisamment longtemps, il peut toujours être éjecté de la mémoire physique par un échange opportuniste.
Malheureusement, votre question est extrêmement complexe et il faudrait plusieurs pages pour l'expliquer réellement. Il y a beaucoup d'informations incorrectes dans les réponses à cette question.
Peut être lié aux ajouts d'invité VirtualBox.
Mon installation Ubuntu utilise actuellement environ 20 Mo, comme indiqué par WinXP. C'est avec VBoxAdditions.
Mon installation Lubuntu utilise actuellement environ 90 Mo, comme indiqué par WinXP. Je viens de l'installer; VBoxAdditions n'a pas été installé.
L'utilisation de la mémoire varie en fonction de ce que VM fait. J'ai mon installation Ubuntu en cours d'exécution ziproxy; lorsque je fais quelque chose qui parle à ziproxy, l'utilisation de la mémoire augmente de quelques mégaoctets à la mise en service du VM.
En général, cependant, la virtualisation a suffisamment progressé pour que les spécifications apparentes pour l'invité n'aient pas besoin d'être entièrement attribuées par l'hôte. Semble utiliser l'allocation dynamique et la pagination forte.