J'exécute VirtualBox sur une machine Windows XP avec 2 Go de RAM. J'ai créé une machine virtuelle Ubuntu et lui ai alloué une mémoire de base de 750 Mo.
Juste pour le tester, j'ai exécuté 20 choses à la fois sur la machine virtuelle. Selon "top" dans ubuntu, 750 Mo de mémoire étaient utilisés, ainsi qu'un espace de swap considérable.
Cependant, de retour dans le Gestionnaire des tâches de Windows, VitrualBox utilisait seulement 45 000 Ko de mémoire. Comme j'ai demandé à la machine virtuelle d'en faire de plus en plus, l'utilisation du processeur du processus VirtualBox a augmenté (sous Windows) mais l'utilisation de la mémoire est restée la même.
Comment une machine virtuelle qui utilise 750 Mo de mémoire ne peut-elle consommer que 45 Mo de mémoire sur une machine physique?
Je suppose que la réponse est que la machine virtuelle n'utilise pas de mémoire réelle, mais de la mémoire simulée (c'est-à-dire de l'espace d'échange), mais elle semble vraiment accrocheuse comme si elle fonctionnait en RAM.
MISE À JOUR: J'ai joué avec perfmon comme suggéré. Même en résumant tout ce à quoi je peux penser, cela semble encore prendre moins de 300 Mo ... donc c'est toujours un mystère.
Process VirtualBox VirtualBox#1 Total
PoolNonpagedBytes 5,840 42,552 48,392
PoolPagedBytes 119,796 166,892 286,688
PrivateBytes 8,884,224 52,719,616 61,603,840
VirtualBytes 75,939,840 161,202,176 237,142,016
Sum 84,949,700 214,131,236 299,080,936
la source
Avec certaines solutions de virtualisation sous Linux, la façon dont ils allouent la mémoire le fait apparaître au noyau hôte comme un fichier mappé en mémoire spécial (un peu comme le
/proc/kcore
fichier spécial) donc il est compté dans le compte "mis en cache" dans la sortie defree
, pas le nombre "utilisé".Je suppose que quelque chose de similaire se produit avec votre environnement Windows: les 45 Mo seront utilisés par les processus de gestion de VirtualBox, et les 750 alloués à la VM elle-même seront comptés ailleurs.
la source
Il peut s'agir de mémoire virtuelle, de fichiers mappés en mémoire ou de quelque chose de similaire.
Avez-vous essayé d'afficher d'autres colonnes dans le Gestionnaire des tâches?
la source
Ne croyez pas le gestionnaire de tâches. Il ne peut pas tout voir.
Ce problème est plus commun avec SQL Server, par exemple avec SQL, je n'ai jamais trouvé personne qui m'ait dit un moyen d'obtenir des informations précises du Gestionnaire des tâches qui me feraient croire que le chiffre n'est pas caché dans l'un des d'autres colonnes.
la source