Menu Fermer

Analyser l’utilisation mémoire de Windows 10 avec Process Explorer et VMMAP

Que vous rencontriez de problèmes de forte utilisation mémoire ou soyez un développeur, il peut parfois être nécessaire d’analyser l’utilisation mémoire de Windows.
En effet, il peut arriver qu’un processus ou pilote ait des fuites de mémoire.
Celle-ci gonfle provoquant de forte utilisation de la mémoire par le processus qui peut alors accaparer toute la mémoire du système.

Dans ce tutoriel, nous allons utiliser deux utilitaires Process Explorer et VMMAP pour analyser l’utilisation mémoire de Windows.

Analyser l'utilisation mémoire de Windows 10 avec Process Explorer et VMMAP

Introduction

La gestion de la mémoire dans Windows est complexe car on trouve plusieurs la mémoire physique (mémoire partagée, mémoire de travail, …) et la mémoire virtuelle (mémoire paginée).
Pour un aperçu du fonctionnement générale, je vous conseille de lire ce tutoriel :

A noter que Microsoft fournit aussi Windows Assessment Toolkit pour diagnostiquer, établir et trouver quel processus ou driver leak et utilisation fortement la mémoire de Windows :

Analyser l’utilisation mémoire de Windows 10 avec Process Explorer et VMMAP

Avec Process Explorer

Process Explorer est un gestionnaire de tâches avancé qui donne énormément d’information sur l’état du système.
Pour un aperçu complet, suivez ce tutoriel :

Analyser la mémoire globale de Windows

Process explorer permet de suivre l’état de la mémoire globale du système de deux manière :

  • En temps réel grâce a des compteurs
  • Dans le temps grâce à des graphiques

Pour cela :

  • Cliquez sur le graphique mémoire en haut ou Menu View et System Information
Analyser la mémoire globale de Windows
  • On obtient alors les graphiques de la mémoire système et physique, en dessous, les compteurs
Analyser la mémoire globale de Windows
  • Voici les informations systèmes principales données par cette page de Process Explorer :
    • Commit Charge (la charge de validation) : la quantité totale de mémoire virtuelle de tous les processus qui doit être sauvegardée soit par la mémoire physique, soit par le fichier d’échange. C’est en général taille actuelle du fichier d’échange + taille de la RAM.
    • Kernel Memory : La mémoire utilisée par le noyau Windows
    • Paging et Paging List : L’état de la mémoire de pagination lorsque Windows utilise des un stockage secondaire (comme le disque)

Analyser l’utilisation mémoire d’un processus

Ensuite il est possible d’obtenir des informations de l’utilisation mémoire par processus.
En clair, la quantité de mémoire privée, de travail, partagée, la pagination, etc.

  • Pour ajouter des colonnes à l’affichage de Process Explorer, : allez dans le menu View puis Select colomuns
  • Cliquez sur l’onglet Process Memory
  • Puis cochez les colonnes qui vous intéressent
Analyser l’utilisation mémoire d'un processus avec Process Explorer
  • Elles s’ajoutent alors à la fin. Vous pouvez les déplacer en laissant appuyer sur le bouton de gauche de la souris et la lâcher à l’emplacement souhaité
Analyser l’utilisation mémoire d'un processus avec Process Explorer

Voici un descriptif des principales valeurs et informations mémoires que l’on peut afficher sur Process Explorer :

Informations mémoireDescription
PeakWorkingSetSizeTaille maximale du jeu de travail, en octets
WorkingSetSizeLa taille actuelle du jeu de travail, en octets.
Elle indique la quantité de RAM nécessaire pour que la mémoire virtuelle utilisée soit en RAM
PagefileUsageLa valeur Commit Charge en octets pour ce processus. La charge de validation correspond à la quantité totale de mémoire privée que le gestionnaire de mémoire a engagée pour un processus en cours d’exécution.
PrivateUsageIdentique à PagefileUsage. La valeur Commit Charge en octets pour ce processus. La charge de validation correspond à la quantité totale de mémoire privée que le gestionnaire de mémoire a engagée pour un processus en cours d’exécution.
PeakPagefileUsageValeur de crête en octets de la charge de validation pendant la durée de vie de ce processus.
PageFaultCountLe nombre de défauts de page
QuotaPeakPagedPoolUsageUtilisation maximale du pool paginé, en octets
QuotaPagedPoolUsageUtilisation actuelle du pool paginé, en octets
QuotaPeakNonPagedPoolUsageUtilisation maximale du pool non paginé, en octets
QuotaNonPagedPoolUsageUtilisation actuelle du pool non paginé, en octets
Private WSLa quantité de mémoire physique affectée au type ou à la région
Shareable WSLa quantité de mémoire physique affectée au type ou à la région qui peut être partagée avec d’autres processus
Shared WSLa quantité de WS partageables actuellement partagée avec d’autres processus
Les informations mémoires de Process Explorer

Avec VMMAP

VMMap est un utilitaire d’analyse de la mémoire virtuelle et physique des processus. Il montre une ventilation des types de mémoire virtuelle validés d’un processus ainsi que la quantité de mémoire physique (ensemble de travail) attribuée par le système d’exploitation.

VMMap décompose l’utilisation de la mémoire pour distinguer l’espace utilisé par les images de fichier chargées dans l’espace d’adressage du processus, la mémoire partagée, la mémoire utilisée par les fichiers mappés, le tas, la pile, l’espace libre, etc.

Ce la fait de VMMap un outil idéal pour les développeurs souhaitant comprendre et optimiser l’utilisation des ressources mémoire de leur application.

Analyser l'utilisation mémoire d'un processus sur Widnows

Les types de mémoire

Puis on trouve la répartition de deux trois mémoires :

  • Working set (La mémoire de travail ou espace de travail) : l’utilisation du jeu de travail du processus par type de mémoire. L’ensemble de travail représente la quantité de mémoire virtuelle validée qui se trouve dans la mémoire physique et appartient au processus.
  • Private Bytes (La mémoire privée) : Ce graphique montre la mémoire virtuelle privée engagée dans le fichier d’échange de Windows
  • Commited (La mémoire engagée) : Ce graphique montre l’utilisation de la mémoire validée (mémoire qui représente des données ou du code) du processus par type. L’échelle du graphique correspond à l’utilisation totale de la mémoire virtuelle engagée du processus
Les types de mémoire d'un processus sur Windows

La répartition de la mémoire dans un processus

  • Free : Les régions de mémoire libre sont des espaces dans l’espace d’adressage de processus qui ne sont pas alloués.
  • heap (le tas) : zone de stockage principal pré-réservé qu’un processus peut utiliser
  • Image : La mémoire représenté par un fichier exécutable tel qu’un .exe ou .dll chargée dans un processus par le chargeur d’image
  • Manage heap (Le tas managé/géré) : Le tas managé représente la mémoire privée allouée et utilisée par le garbage collector .NET et, comme le type de mémoire privée
  • Mapped file (Fichier mappé) : Le tas managé représente la mémoire privée allouée et utilisée par le garbage collector .NET avec les données d’application
  • Private data : La mémoire privée est la mémoire allouée par VirtualAlloc et non sous-allouée par le Heap Manager ou le runtime .NET. Elle ne peut être partagée
  • Shareable : La mémoire partageable est la mémoire qui peut être partagée avec d’autres processus, est sauvegardée par le fichier d’échange
  • Stack (Les piles) : Les piles sont de la mémoire privée utilisée pour stocker les paramètres de fonction, les variables de fonction locales et les enregistrements d’invocation de fonction pour les threads individuels

Puis vous avez les colonnes avec les tailles de la région, privée ou partagée.

Enfin utilisez la touche F5 pour actualiser l’affichage

Analyser les modifications de mémoire d’un processus

On peut donc suivre l’utilisation mémoire d’un processus mais aussi comparer l’utilisation dans le temps afin par exemple d’enquêter sur des fuites mémoires.

Pour cela :

  • Ouvrez VMMAP
  • Cliquez sur le menu File puis Select Process ou CTRL+P
  • Ensuite cliquez sur l’onglet launch and trace a new process
  • Dans application, cliquez à droite sur […] et sélectionnez le processus à exécuter
Tracer et analyser les modifications mémoires d'un processus sur Windows avec VMMAP
  • Cela donne accès en bas à droite à quatre : options :
  • Timeline : montre l’évolution de l’occupation mémoire du processus dans le temps
  • Heap Allocations : affiche les fonctions de tas et d’allocation virtuelle exécutées par le processus
  • Call Tree :
  • Trace : capture une trace des opérations liées à la mémoire effectuées par le processus
Tracer et analyser les modifications mémoires d'un processus sur Windows avec VMMAP
Timeline

Timeline se présente sous la forme d’un graphique avec l’utilisation mémoire du processus.

Timeline des modifications mémoires d'un processus sur VMMAP

On peut dessiner une fenêtre dans le temps avec un point de départ et fin.
Cela va alors afficher les modifications de la mémoire dans VMMAP avec les ajouts en verts et les suppressions en rouge.

Timeline des modifications mémoires d'un processus sur VMMAP
Call tree et trace

VMMAP est capable de capturer les opérations mémoires d’un processus et affiche les fonctions de tas et d’allocation virtuelle exécutées par le processus.
Il peut aussi prendre des images (snapshot) dans le temps afin de comparer les opérations effectuées.

Le bouton Calltree affichera les piles d’appels de tous les endroits du processus à partir desquels les allocations de mémoire enregistrées ont été faites.
Tout comme pour les instantanés manuels, vous pouvez ouvrir la fenêtre Chronologie pour voir l’historique de l’exécution du processus, sélectionner des instantanés particuliers à afficher ou sélectionner deux instantanés pour voir les différences.

L'historique des opérations mémoires d'un processus sur Widnows

Depuis Trace, vous pouvez aussi afficher l’historique de toutes les opérations enregistrées en ouvrant la boîte de dialogue Historique de trace à l’aide du bouton Trace de la fenêtre principale.

L'historique des opérations mémoires d'un processus sur Widnows