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.

  1. Ouvrez la console d’évaluation Windows (WAC) à partir du menu Démarrer .

  2. Ouvrez le menu Options et sélectionnez Nouveau travail...

    1. Entrez MemoryTest comme nom du travail.

    2. Sélectionnez Créer un travail personnalisé.

  3. Cliquez sur Ajouter des évaluations.

    • Ajoutez l’évaluation de l’empreinte mémoire en cliquant sur le symbole « + »
  4. Cliquez sur l’évaluation d’empreinte mémoire nouvellement ajoutée pour entrer dans la configuration de test.

  5. 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.

    Capture d’écran de la console d’évaluation Windows.

  6. Une fois l’exécution rapide sélectionnée, vous disposez de deux options :

    1. 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.)

    2. 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

  1. Dans WAC, ouvrez le menu Options et sélectionnez Ouvrir les résultats...

    • Vous pouvez également appuyer sur Ctrl+R sur le clavier.
  2. Cliquez sur le bouton Parcourir...

  3. Accédez au dossier dans lequel vous avez stocké l’évaluation que vous avez créée à l’étape 1.

  4. 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.

    Exemple de rapport de la console d’évaluation Windows montrant l’utilisation de la mémoire.

  5. 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.

  1. Développez la catégorie Allocations non paginées du pilote en cliquant sur la flèche à gauche.

  2. 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.
  3. Identifiez le pilote avec la plus grande utilisation de la mémoire.

    Exemple de rapport de la console d’évaluation Windows montrant l’utilisation de l’allocation non paginée du pilote.

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.

  1. Développez la catégorie Traiter les pages privées en cliquant sur la flèche à gauche.

  2. 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 :

    Exemple de rapport de la console d’évaluation Windows montrant l’utilisation de la mémoire de processus.

  3. 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.

  1. Ouvrez l’Enregistreur de performances Windows à partir du menu Démarrer .

  2. Sélectionnez les profils d’enregistrement « First Level Triage » et « Resident Set Analysis », mais conservez les valeurs par défaut pour les autres options.

  3. Cliquez sur Démarrer et attendez quelques secondes.

    Capture d’écran de l’écran Informations système d’enregistrement de la console d’évaluation Windows montrant l’enregistrement d’état non démarré

  4. 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 :

  1. Lancez Windows Analyseur de performances à partir du menu Démarrer.

  2. Ouvrez la trace ETL que vous venez de recueillir (menu Fichier , Ouvrir...).

  3. Développez le jeu de mémoire dans le Explorer Graph.

    Capture d’écran de l’affichage de l’explorateur de graphiques WPA.

  4. Faites glisser et déposez le graphique Ensemble résident dans l’onglet Analyse.

Votre vue doit ressembler à ceci :

Capture d’écran de WPA montrant l’affichage onglet Analyse.

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.

  • Actif : pages actuellement au sein d’un groupe de travail privé de processus ou d’un groupe de travail du noyau.

  • Veille : pages non modifiées dans la liste de secours. Ils font partie de la mémoire disponible.

  • Modifié : traitez les pages privées ou sauvegardées par des fichiers qui ont été modifiées depuis la dernière conservation dans le stockage permanent.

  • ModifiedNoWrite : pages qui ont été modifiées, mais qui ne seront pas conservées dans le stockage permanent.

  • Transition : pages en transition entre les listes.

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 :

  • Pour les images, les pilotes, les fichiers, etc., il affiche le chemin d’accès et le nom complets du fichier.

  • Pour mémoire du pool , il affiche le nom de la balise du pool de pilotes.

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 :

  • CopyOnWriteImage : traitez les pages privées créées par la mise à jour corrective d’une table d’adresses d’importation d’images exécutables ou le rebasage d’un fichier exécutable.

  • Pilote : pages de code pour un pilote.

  • DriverFile : pages de code lues à partir de l’exécutable du pilote et mappées en tant que données.

  • DriverLockedSystemPage : pages en mode noyau verrouillées ou épinglées en mémoire, généralement par les pilotes ou le noyau.

  • Image : pages de fichiers .dll et .exe chargés en tant qu’images exécutables.

  • MapFile : pages de fichiers de données ou d’images chargés en tant que données.

  • NonPagedPool : pages qui contiennent des données pour le pool système non paginable.

  • PagedPool : pages qui contiennent des données pour le pool système paginable.

  • PFMappedSection : pages de sections mappées en mémoire soutenues par le fichier de page.

  • SystemPage : pages qui contiennent des entrées de table de pages système utilisées pour mapper des pages système telles que l’espace d’E/S, les piles de noyau et les listes de descripteurs de mémoire.

  • UserStack : pages qui contiennent les données de mode utilisateur pour chaque thread.

  • VirtualAlloc : pages allouées par les API VirtualAlloc.

  • Win32Heap : pages de tas.

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.

  1. Sélectionnez la présélection Traiter le jeu de travail privé .

    Capture d’écran de la liste déroulante Ensemble de travail privé du processus WPA.

  2. Développez le groupe MMList actif .

    1. Concentrez-vous sur la catégorie Actif , car c’est ce qui affecte actuellement l’utilisation de la mémoire.

    2. Les pages de secours peuvent être libérées sous la pression de la mémoire.

    3. Les pages modifiées peuvent être écrites sur le disque et libérées.

  3. Triez par taille en cliquant sur l’en-tête de colonne Taille (Mo).

  4. 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.

  5. Développez les processus pour examiner Catégorie de page.

    1. Vous pouvez maintenant voir la composition de l’ensemble de travail du processus dans la figure suivante.

    2. Les principales catégories doivent être VirtualAlloc ou Win32Heap, que nous analyserons dans l’exercice 2.

    3. 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 .

    Exemple de tableau montrant l’utilisation des processus.

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.