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.
Table des matières
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
- On obtient alors les graphiques de la mémoire système et physique, en dessous, les compteurs
- 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
- 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é
Voici un descriptif des principales valeurs et informations mémoires que l’on peut afficher sur Process Explorer :
Informations mémoire | Description |
PeakWorkingSetSize | Taille maximale du jeu de travail, en octets |
WorkingSetSize | La 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 |
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. |
PrivateUsage | Identique à 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. |
PeakPagefileUsage | Valeur de crête en octets de la charge de validation pendant la durée de vie de ce processus. |
PageFaultCount | Le nombre de défauts de page |
QuotaPeakPagedPoolUsage | Utilisation maximale du pool paginé, en octets |
QuotaPagedPoolUsage | Utilisation actuelle du pool paginé, en octets |
QuotaPeakNonPagedPoolUsage | Utilisation maximale du pool non paginé, en octets |
QuotaNonPagedPoolUsage | Utilisation actuelle du pool non paginé, en octets |
Private WS | La quantité de mémoire physique affectée au type ou à la région |
Shareable WS | La quantité de mémoire physique affectée au type ou à la région qui peut être partagée avec d’autres processus |
Shared WS | La quantité de WS partageables actuellement partagée avec d’autres processus |
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.
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
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
- 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
Timeline
Timeline se présente sous la forme d’un graphique avec l’utilisation mémoire du processus.
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.
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.
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.
Liens
- Mesurer l’utilisation mémoire sur Windows
- Mon PC utilise trop de RAM sur Windows 10 : comment libérer de la mémoire
- Diagnostiquer les fortes utilisation mémoire de Windows
- Défragmenteur de mémoire RAM : est-ce vraiment utile ?
- Résoudre forte utilisation mémoire sur Windows 10 : 100% mémoire
- Combien faut-il de RAM pour Windows 10
- Analyseur de performances de Windows
- Analyseur de performances Windows : diagnostic système et performances
- Moniteur de fiabilité de Windows
- Les différentes types de mémoire sur Windows et ordinateur