Exercice 1 - Identifier les processus avec des ensembles de travail volumineux
La méthodologie utilisée pour analyser les données peut adopter plusieurs approches et diffère selon les circonstances dans lesquelles l’enquête a été lancée. Cet exercice traite et présente quelques exemples de méthodologies ainsi que les différents points de vue présentés par les différentes dispositions de colonnes.
Les données appelées Ensemble résident sont l’ensemble de pages qui résident actuellement dans la mémoire physique (RAM). L’ensemble résident est un instantané de l’état actuel de la mémoire à la fin d’une capture de trace avec l’enregistreur de performances Windows (WPR) ou l’évaluation de la mémoire du Kit d’évaluation. Il n’est pas possible de collecter plusieurs instantanés dans une seule trace.
Les ensembles résidents fournissent une instantané holistique et instantanée de la composition de la mémoire sur le système. Les enquêtes sur l’analyse des ensembles de résidents sont généralement effectuées pour les raisons suivantes :
Pour comprendre l’utilisation de la mémoire physique, en particulier lorsque l’utilisation de la mémoire physique est plus élevée que prévu.
Pour comprendre les sources de l’ensemble de travail privé de processus, en particulier lorsque l’ensemble de travail privé de processus est plus grand que prévu.
Problèmes de réactivité du système en raison de l’activité de pagination.
Étape 1 : Collecter des données à l’aide du Kit de ressources d’évaluation
Le Kit de ressources d’évaluation Windows contient un test pour mesurer l’empreinte mémoire après le démarrage. Vous pouvez utiliser les résultats de l’évaluation de l’empreinte mémoire pour collecter une base de référence du préchargement du logiciel d’image. De nombreux processus et services sont toujours utilisés et occupent de la mémoire. Cette évaluation vous aide à voir comment les pilotes et les applications (qui s’exécutent toujours) impactent le processus de démarrage.
Ouvrez la console d’évaluation Windows (WAC) à partir du menu Démarrer .
Ouvrez le menu Options et sélectionnez Nouveau travail...
Entrez MemoryTest comme nom du travail.
Sélectionnez Créer un travail personnalisé.
Cliquez sur Ajouter des évaluations.
- Ajoutez l’évaluation de l’empreinte mémoire en cliquant sur le symbole « + »
Cliquez sur l’évaluation d’empreinte mémoire nouvellement ajoutée pour entrer dans la configuration de test.
Désélectionnez Utiliser les paramètres recommandés , puis sélectionnez Exécution rapide pour la configuration.
- L’exécution rapide permet au test de se terminer dans un délai plus court, au détriment de la précision des données.
Une fois l’exécution rapide sélectionnée, vous disposez de deux options :
Empaquetez le travail afin de créer un dossier contenant toutes les ressources de test et de le copier dans un autre système de test. (Cliquez sur le bouton Package... dans le coin inférieur droit pour choisir cette option.)
Exécutez le travail directement sur le système. (Cliquez sur le bouton Exécuter dans le coin inférieur droit pour choisir cette option.)
Cela redémarre le système pour collecter une trace.
Ce test peut prendre entre 15 et 20 minutes.
Nous voulons l’option Exécuter .
Étape 2 : Visualiser les résultats de l’évaluation de l’empreinte mémoire à l’aide de WAC
Une fois l’évaluation effectuée, vous pouvez ouvrir le fichier XML des résultats qui contient un résumé de l’utilisation de la mémoire sur le système.
Étape 2.1 : Ouvrir le rapport mémoire
Dans WAC, ouvrez le menu Options et sélectionnez Ouvrir les résultats...
- Vous pouvez également appuyer sur Ctrl+R sur le clavier.
Cliquez sur le bouton Parcourir...
Accédez au dossier dans lequel vous avez stocké l’évaluation que vous avez créée à l’étape 1.
Ouvrez l’évaluation que vous avez créée à l’étape 1.
Le rapport contient différentes catégories pour vous aider à comprendre le pilote et le processus contributions à l’empreinte mémoire globale.
Le rapport doit ressembler à ceci.
Prenez le temps de vous familiariser avec le rapport en examinant les catégories Pilotes et Pages privées de processus .
Dans l’exemple précédent, 1 487 Mo de mémoire sont utilisés sur 4 Go de RAM physique.
Mémoire en cours d’utilisation = Traiter les ensembles de travail + mémoire non paginée + pages modifiées
Mémoire disponible = Mémoire de secours + mémoire libre
Dans l’exemple précédent, les plus grands consommateurs d’utilisation de la mémoire sont les allocations de pilotes avec 267 Mo pour les pages non paginées et 613 Mo pour les pages privées de traitement (jeux de travail privés).
Pour plus d’informations sur les métriques, consultez la rubrique Résultats de l’évaluation de l’empreinte mémoire sur MSDN.
Étape 2.2 : Passer en revue les allocations non paginées du pilote
Cette métrique est similaire aux allocations paginées, sauf que ces allocations utilisent de la mémoire physique qui ne peut pas être paginée. Cela reflète la mémoire physique épinglée et donc indisponible pour la mémoire paginée ou l’utilisation par d’autres processus et services. L’acquisition de trop de mémoire non paginée réduit la quantité de mémoire que la mémoire sauvegardée peut utiliser.
Développez la catégorie Allocations non paginées du pilote en cliquant sur la flèche à gauche.
Développez la catégorie DriverLockedSystemPages .
- Il s’agit de la mémoire chargée dans à partir de la mémoire paginée, puis verrouillée par le pilote jusqu’à ce qu’elle ne soit plus utile.
Identifiez le pilote avec la plus grande utilisation de la mémoire.
Vous pouvez influencer cette métrique en échangeant des pilotes matériels ou logiciels qui ont des besoins en mémoire inférieurs.
Le fournisseur de pilotes a le plus d’influence sur cette métrique par la façon dont le pilote est conçu. Recherchez les allocations de mémoire volumineuses dans les résultats présentés dans WAC. En outre, les fournisseurs de pilotes peuvent recevoir des suivis de performances (stockés dans le même répertoire que les résultats de l’évaluation et peuvent être analysés avec WPA) de cette évaluation pour trouver des zones d’allocation de mémoire intensive qui sont des candidats pour des enquêtes sur la réduction de l’utilisation de la mémoire.
Étape 2.3 : Passer en revue les ensembles de travail privés du processus
Les plus grands utilisateurs de l’empreinte mémoire globale sont les applications qui peuvent toujours s’exécuter en arrière-plan à l’insu de l’utilisateur. Pour afficher la quantité de mémoire utilisée par les processus, vous pouvez utiliser la catégorie Traiter les pages privées dans le rapport.
Développez la catégorie Traiter les pages privées en cliquant sur la flèche à gauche.
Développez la catégorie Actif . La liste affiche les fichiers binaires et leur utilisation de la mémoire active.
Votre vue doit ressembler à ceci :
Identifiez le processus qui utilise le plus de mémoire.
Vous pouvez influencer cette métrique en réduisant le nombre d’applications « Exécuter toujours », qui sont des applications dans le dossier Exécuter la clé de Registre ou Démarrage . Analysez l’impact des applications ajoutées.
Les fournisseurs de pilotes et de logiciels ont le plus d’influence sur cette métrique par la façon dont leur code est conçu. Recherchez des allocations de mémoire importantes dans les résultats présentés dans le WAC. En outre, les éditeurs de logiciels peuvent recevoir des traces de performances (stockées dans le même répertoire que les résultats de l’évaluation) de cette évaluation pour trouver des zones d’allocations de mémoire intensives qui sont des candidats pour des enquêtes sur la réduction de l’utilisation de la mémoire. Des analyses minutieuses des allocations, même de petite taille, peuvent aider le développeur à trouver des allocations qui s’additionner.
Étape 3 : Collecter des données d’ensemble de résidents à l’aide de WPR
Aux étapes 1 et 2, vous avez appris à collecter des traces de mémoire à l’aide de l’évaluation de l’empreinte mémoire du kit d’outils d’évaluation . Cette évaluation peut uniquement capturer une trace pour le scénario de démarrage. Vous pouvez capturer des traces pour n’importe quel scénario (lancement d’application, navigation web, etc.) à l’aide de l’enregistreur de performances Windows (WPR)
Suivez ces étapes pour collecter une trace avec des données d’ensemble de résidents.
Ouvrez l’Enregistreur de performances Windows à partir du menu Démarrer .
Sélectionnez les profils d’enregistrement « First Level Triage » et « Resident Set Analysis », mais conservez les valeurs par défaut pour les autres options.
Cliquez sur Démarrer et attendez quelques secondes.
Cliquez sur Enregistrer et enregistrez la trace ETL sur le disque.
Vous disposez maintenant d’une instantané de la composition de la mémoire système.
Étape 4 : Interpréter les données d’ensemble de résidents à l’aide de WPA
Suivez cette procédure :
Lancez Windows Analyseur de performances à partir du menu Démarrer.
Ouvrez la trace ETL que vous venez de recueillir (menu Fichier , Ouvrir...).
Développez le jeu de mémoire dans le Explorer Graph.
Faites glisser et déposez le graphique Ensemble résident dans l’onglet Analyse.
Votre vue doit ressembler à ceci :
Passez en revue la façon dont les données sont présentées. Voici quelques définitions des colonnes les plus utiles pour effectuer une analyse de niveau supérieur :
Colonne | Définition |
---|---|
MMList | Liste de gestion de la mémoire qui contient les pages.
|
Processus | Nom du processus qui est le propriétaire des pages. Ces informations sont disponibles uniquement pour les pages privées de traitement. Même si elles ne sont pas partagées, toutes les pages partageables sont associées au processus « Inconnu » (-1). |
Description | La valeur représentée varie en fonction de la catégorie de page. Par exemple :
|
Catégorie de page | Type de données contenues dans la page, tel que défini ci-dessous. Voici quelques-unes des catégories possibles :
|
Taille (Mo) | Taille totale des pages agrégées dans chaque catégorie. |
Étape 6 : Identifier les groupes de travail de processus qui ont un impact sur l’empreinte mémoire
Les données de l’ensemble de résidents peuvent être affichées de différentes manières en fonction des dispositions de colonne dans la table récapitulative. La table récapitulative a plusieurs dispositions de colonnes prédéfinies que vous pouvez utiliser comme points de départ pour une investigation.
Sélectionnez la présélection Traiter le jeu de travail privé .
Développez le groupe MMList actif .
Concentrez-vous sur la catégorie Actif , car c’est ce qui affecte actuellement l’utilisation de la mémoire.
Les pages de secours peuvent être libérées sous la pression de la mémoire.
Les pages modifiées peuvent être écrites sur le disque et libérées.
Triez par taille en cliquant sur l’en-tête de colonne Taille (Mo).
Identifiez les processus dont l’utilisation est la plus importante. Vous pouvez voir N/A et « Inconnu (-1) » comme noms de processus.
N/A contient des pages non associées à des processus tels que la mémoire du pool de pilotes.
« Inconnu (-1) » contient des pages partageables.
Développez les processus pour examiner Catégorie de page.
Vous pouvez maintenant voir la composition de l’ensemble de travail du processus dans la figure suivante.
Les principales catégories doivent être VirtualAlloc ou Win32Heap, que nous analyserons dans l’exercice 2.
Dans l’exemple ci-dessous, SearchIndexer.exe utilise 21,7 Mo de mémoire active via les allocations de tas et 12,4 Mo via les appels d’API VirtualAlloc .
Concentrez-vous sur les processus tiers et déterminez s’ils doivent être lancés au démarrage dans le cadre du logiciel préchargé. En tant que développeur, vous devez analyser les allocations dynamiques que votre processus effectue pour comprendre où les optimisations peuvent être effectuées.