L'utilisation de la mémoire de la machine virtuelle n'apparaît pas dans TaskManager

28

Il y a quelque chose dans la gestion de la mémoire Windows et sa relation avec TaskManager que je ne comprends pas et j'espère que quelqu'un pourra m'éclairer.

Si j'exécute une machine virtuelle (peu importe qu'il s'agisse de Virtual PC 2007, Virtual Server 2005 ou VirtualBox car ils agissent de la même manière) et que j'affiche TaskManager, je peux voir sur l'onglet processus certaines entrées pour la machine virtuelle, mais le les valeurs de la mémoire sont assez petites (environ 30 Mo). Évidemment, cela n'inclut pas la mémoire réellement consommée par la machine virtuelle elle-même. Aucune des différentes colonnes liées à la mémoire que vous pouvez rendre visibles ne semble fonctionner différemment. L'utilisation de la mémoire dans l'onglet Performances semble être correcte pour l'utilisation totale de la mémoire, y compris la machine virtuelle.

Ma question est donc pourquoi l'utilisation de la mémoire de la machine virtuelle (qui sera de 100 Mo) n'apparaît-elle pas dans l'onglet Processus?

Scott Bussinger
la source

Réponses:

30

VirtualPC, HyperV et probablement des produits similaires utilisent quelque chose appelé mémoire verrouillée par le pilote, qui n'est pas visible dans Process Explorer, le Gestionnaire des tâches, etc. RAMMap vous montrera la mémoire verrouillée du pilote utilisée par un processus.

Sajee
la source
1
Pour mémoire, RAMMap est Vista ou supérieur uniquement.
Tim Abell
1
RAMMap n'a pas montré de mémoire verrouillée pour un processus, il a montré la mémoire verrouillée totale réfléchie
NeDark
Juste pour le signaler aux autres, il n'a pas dit de mémoire verrouillée par processus. Il a dit que le conducteur avait verrouillé la mémoire. C'est ainsi que fonctionne la mémoire dynamique. Si vous ne l'aimez pas ou si vous pensez qu'il dérange votre application, vous pouvez simplement configurer la machine virtuelle pour la mémoire statique au lieu de dynamique. J'ai vu que certaines applications Java rencontraient des problèmes lors de l'utilisation de la mémoire dynamique dans une machine virtuelle, les réglant sur statique corrigeait le problème .
John C
Quel processus alloue réellement cette mémoire? J'ai essayé le VMMap de SysInternals et lorsque vous choisissez le bon VBoxHeadless.exeprocessus (c'est une feuille sur la branche d'arbre de processus, c'est-à-dire qu'il n'a pas d'autre enfant, vous pouvez utiliser par exemple Process Explorer pour le trouver), cette mémoire "perdue" apparaît sous les octets privés et l' ensemble de travail de ce processus (même si Process Explorer affiche beaucoup moins pour les deux valeurs). Je suis donc un peu confus pourquoi ils affichent des valeurs différentes, mais VMMap semble montrer le vrai nombre .
Dawid Ferenczy Rogožan
6

Tout système de virtualisation hébergé comme ceux que vous avez répertoriés comprendra un pilote de périphérique qui s'exécute dans le noyau du système d'exploitation hôte. Cela est nécessaire car les programmes en mode utilisateur ne peuvent pas émettre les instructions nécessaires pour créer une machine virtuelle.

La raison pour laquelle vous ne voyez pas la mémoire dans le gestionnaire de tâches est que vous regardez la mémoire pour les programmes en mode utilisateur associés aux machines virtuelles, et non le pilote de périphérique en mode noyau qui a réellement alloué la mémoire pour les machines virtuelles.

Jake Oshins
la source
Quel processus alloue réellement cette mémoire? J'ai essayé le VMMap de SysInternals et lorsque vous choisissez le bon VBoxHeadless.exeprocessus (c'est une feuille sur la branche d'arbre de processus, c'est-à-dire qu'il n'a pas d'autre enfant, vous pouvez utiliser par exemple Process Explorer pour le trouver), cette mémoire "perdue" apparaît sous les octets privés et l' ensemble de travail de ce processus (même si Process Explorer affiche beaucoup moins pour les deux valeurs). Je suis donc un peu confus pourquoi ils affichent des valeurs différentes, mais VMMap semble montrer le vrai nombre .
Dawid Ferenczy Rogožan
5

Pour afficher la quantité de mémoire utilisée par une machine virtuelle, vous devez vous assurer que la colonne Ensemble de travail est visible dans votre Gestionnaire des tâches. Souvent, seul l'ensemble privé est visible.

Pour activer cette colonne:

1) Démarrez le Gestionnaire des tâches

2) Allez dans l'onglet Processus

3) Affichage> Sélectionner les colonnes

4) Assurez-vous que "Mémoire - Ensemble de travail" est coché

Par exemple, l'ensemble privé de la machine virtuelle que j'utilise actuellement est de 43 Mo, tandis que l'ensemble de travail est de 2,3 Go.

Mark Henderson
la source
1
Quelle est la quantité totale d’utilisation de l’application mémoire? Ensemble de travail + ensemble privé ou tout simplement ensemble de travail?
zendar
2
C'est peut-être différent dans différentes versions de Windows, mais sous Windows 7, ce n'est pas ce que je vois. Les nombres "Working Set" sont plus grands que les nombres "Private Working Set", mais pas assez à distance pour tenir compte de la mémoire de la VM. J'ai essayé toutes les colonnes liées à la mémoire et aucune ne le fait. C'est avec Windows Virtual PC et VirtualBox. Quelle version de Windows et quel hôte VM utilisez-vous?
Scott Bussinger
Malheureusement, il n'y a pas de chiffre unique qui indique «combien de mémoire» un processus utilise, car vous rencontrez des complications comme la mémoire partagée, la mémoire mappée par fichier, la mémoire paginée et quelques autres. Voici une bonne explication de quelques concepts: stackoverflow.com/questions/1984186/…
tylerl
Je ne pense pas que l' ensemble de travail vous dise quoi que ce soit d'utile dans ce cas. À l'intérieur de la machine virtuelle, il indique qu'il utilise environ 6 Go de mémoire tandis que les processus de VirtualBox ne consomment pas plus de 100 Mo dans leurs ensembles de travail .
Dawid Ferenczy Rogožan