Freigeben über


Übung 1: Identifizieren von Prozessen mit großen Arbeitssätzen

Die zum Analysieren der Daten verwendete Methode kann mehrere Vorgehensweisen umfassen und sich je nach den Umständen unterscheiden, unter denen die Untersuchung gestartet wurde. In dieser Übung werden einige Beispielmethoden erläutert und die verschiedenen Ansichten aufgrund unterschiedlicher Spaltenanordnungen vorgestellt.

Die als „Resident Set“ bezeichneten Daten sind die Seiten, die sich derzeit im physischen Arbeitsspeicher (RAM) befinden. Ein Resident Set ist eine Momentaufnahme des aktuellen Arbeitsspeicherzustands am Ende einer Ablaufverfolgungserfassung mit Windows Performance Recorder (WPR) oder der Arbeitsspeicherbewertung durch das Bewertungstoolkit. Es ist nicht möglich, mehrere Momentaufnahmen in einer einzelnen Ablaufverfolgung zu sammeln.

Resident Sets bieten eine ganzheitliche und sofortige Momentaufnahme der Arbeitsspeicherzusammensetzung im System. Untersuchungen zur Resident Set-Analyse werden in der Regel aus folgenden Gründen durchgeführt:

  • Um die Nutzung des physischen Arbeitsspeichers zu verstehen, insbesondere in Fällen, in denen diese Nutzung höher ist als erwartet.

  • Um die Quellen des privaten Prozessarbeitssatzes zu verstehen, insbesondere in Fällen, in denen dieser Arbeitssatz größer ist als erwartet.

  • Probleme mit der Reaktionsfähigkeit des Systems aufgrund von Auslagerungsaktivitäten.

Schritt 1: Sammeln von Daten mithilfe des Bewertungstoolkits

Das Windows-Bewertungstoolkit enthält einen Test, um den Arbeitsspeicherbedarf nach dem Start zu messen. Sie können die Ergebnisse der Bewertung des Arbeitsspeicherbedarfs verwenden, um eine Baseline für die Vorabladung der Imagesoftware zu erfassen. Viele Prozesse und Dienste werden immer verwendet und belegen Arbeitsspeicher. Mithilfe dieser Bewertung können Sie ermitteln, wie Treiber und Anwendungen (die immer ausgeführt werden) den Startprozess beeinflussen.

  1. Öffnen Sie die Windows-Bewertungskonsole im Startmenü.

  2. Öffnen Sie das Menü Optionen, und wählen Sie Neuer Auftrag… aus.

    1. Geben Sie MemoryTest als Auftragsnamen ein.

    2. Wählen Sie Benutzerdefinierten Auftrag erstellen aus.

  3. Klicken Sie auf Bewertungen hinzufügen.

    • Fügen Sie die Bewertung Arbeitsspeicherbedarf hinzu, indem Sie auf das Plussymbol (+) klicken.
  4. Klicken Sie auf die neu hinzugefügte Bewertung Arbeitsspeicherbedarf, um die Testkonfiguration einzugeben.

  5. Deaktivieren Sie die Option Empfohlene Einstellungen verwenden, und wählen Sie Schnelle Ausführung für die Konfiguration aus.

    • Schnelle Ausführung ermöglicht das Ausführen des Tests in kürzerer Zeit, allerdings auf Kosten der Datengenauigkeit.

    Screenshot: Windows-Bewertungskonsole

  6. Bei Auswahl von Schnelle Ausführung haben Sie zwei Optionen:

    1. Packen des Auftrags zum Erstellen eines Ordners mit allen Testressourcen und Kopieren des Ordners in ein anderes Testsystem. (Klicken Sie auf die Schaltfläche Packen… in der unteren rechten Ecke, um diese Option auszuwählen.)

    2. Ausführen des Auftrags direkt im System. (Klicken Sie auf die Schaltfläche Ausführen in der unteren rechten Ecke, um diese Option auszuwählen.)

      • Dadurch wird das System neu gestartet, um eine Ablaufverfolgung zu erfassen.

      • Es kann etwa 15-20 Minuten dauern, bis dieser Test abgeschlossen ist.

    Wir verwenden hier die Option Ausführen.

Schritt 2: Visualisieren der Bewertungsergebnisse für den Arbeitsspeicherbedarf mithilfe der Bewertungskonsole

Sobald die Bewertung abgeschlossen ist, können Sie die XML-Datei mit den Ergebnissen öffnen, die eine Zusammenfassung der Arbeitsspeichernutzung im System enthält.

Schritt 2.1: Öffnen des Arbeitsspeicherberichts

  1. Öffnen Sie in der Windows-Bewertungskonsole das Menü Optionen, und wählen Sie Ergebnisse öffnen… aus.

    • Sie können auch die Tastenkombination STRG+R auf der Tastatur drücken.
  2. Klicken Sie auf die Schaltfläche Durchsuchen….

  3. Navigieren Sie zu dem Ordner, in dem Sie die in Schritt 1 erstellte Bewertung gespeichert haben.

  4. Öffnen Sie die in Schritt 1 erstellte Bewertung.

    Der Bericht enthält verschiedene Kategorien, sodass Sie besser verstehen, wie Treiber und Prozesse zum Gesamtbedarf des Arbeitsspeichers beitragen.

    Der Bericht sollte in etwa wie folgt aussehen.

    Beispielbericht aus der Windows-Bewertungskonsole mit der Arbeitsspeichernutzung

  5. Nehmen Sie sich die Zeit, sich mit dem Bericht vertraut zu machen, indem Sie sich die Kategorien Treiber und Private Seiten verarbeiten ansehen.

Im obigen Beispiel werden 1487 MB von 4 GB physisch vorhandenem Arbeitsspeicher verwendet.

  • Genutzter Arbeitsspeicher = Prozessarbeitssätze + Arbeitsspeicher ohne Auslagerung + geänderte Seiten

  • Verfügbarer Arbeitsspeicher = Standbyarbeitsspeicher + freier Arbeitsspeicher

Im obigen Beispiel sind Treiberzuordnungen die größten Consumer in Bezug auf die Arbeitsspeichernutzung: 267 MB für nicht ausgelagerte Prozesse und 613 MB für die Verarbeitung privater Seiten (private Arbeitssätze).

Weitere Informationen zu den Metriken finden Sie im Thema Ergebnisse der Überprüfung des Arbeitsspeicherbedarfs auf MSDN.

Schritt 2.2: Überprüfen von nicht ausgelagerten Treiberzuordnungen

Diese Metrik ähnelt den ausgelagerten Zuordnungen, außer dass diese Zuordnungen physischen Arbeitsspeicher verwenden, der nicht ausgelagert werden kann. Dies spiegelt den physischen Arbeitsspeicher wider, der fixiert und daher für den ausgelagerten Arbeitsspeicher oder für die Verwendung durch andere Prozesse und Dienste nicht verfügbar ist. Durch den Erwerb von zu viel nicht ausgelagertem Arbeitsspeicher wird die Menge des Arbeitsspeichers reduziert, der vom gesicherten Arbeitsspeicher verwendet werden kann.

  1. Erweitern Sie die Kategorie Treiber - nicht ausgelagerte Zuordnungen, indem Sie auf den Pfeil links klicken.

  2. Erweitern Sie die Kategorie DriverLockedSystemPages.

    • Dies ist Arbeitsspeicher, der aus dem ausgelagerten Arbeitsspeicher geladen und dann vom Treiber gesperrt wird, bis er nicht mehr benötigt wird.
  3. Identifizieren Sie den Treiber mit der größten Arbeitsspeichernutzung.

    Beispielbericht der Windows-Bewertungskonsole, der die Nutzung nicht ausgelagerter Zuordnungen für Treiber zeigt

Sie können diese Metrik beeinflussen, indem Sie Hardware- oder Softwaretreiber austauschen, die niedrigere Arbeitsspeicheranforderungen haben.

Der Treiberanbieter hat durch die Art des Treiberentwurfs den größten Einfluss auf diese Metrik. Suchen Sie in den Ergebnissen der Windows-Bewertungskonsole nach umfangreichen Arbeitsspeicherzuordnungen. Darüber hinaus können die Treiberanbieter Leistungsablaufverfolgungen dieser Bewertung erhalten (die im gleichen Verzeichnis gespeichert werden wie die Bewertungsergebnisse und mit Windows Performance Analyzer analysiert werden können), um Bereiche mit hoher Arbeitsspeicherzuordnung zu finden, für die sich eine Untersuchung zur Verringerung der Arbeitsspeichernutzung lohnen könnte.

Schritt 2.3: Überprüfen von privaten Prozessarbeitssätzen

Die größten Nutzer des Arbeitsspeicherbedarfs insgesamt sind Apps, die möglicherweise ohne Wissen des Benutzers immer im Hintergrund ausgeführt werden. Um die Menge an Arbeitsspeicher anzuzeigen, die von Prozessen verwendet wird, können Sie die Kategorie Private Seiten verarbeiten im Bericht verwenden.

  1. Erweitern Sie die Kategorie Private Seiten verarbeiten, indem Sie auf den Pfeil links klicken.

  2. Erweitern Sie die Kategorie Aktiv. Die Liste zeigt die Binärdateien und deren Nutzung des aktiven Arbeitsspeichers.

    Die Ansicht sieht etwa wie folgt aus:

    Beispielbericht aus der Windows-Bewertungskonsole mit der Arbeitsspeichernutzung durch Prozesse

  3. Identifizieren Sie den Prozess, der den meisten Arbeitsspeicher nutzt.

Sie können diese Metrik beeinflussen, indem Sie die Anzahl von immer ausgeführten Anwendungen reduzieren. Dies sind Anwendungen im Registrierungsschlüssel Ausführen oder im Ordner Start. Analysieren Sie die Auswirkungen hinzugefügter Apps.

Treiber- und Softwareanbieter haben durch die Art des Codedesigns den größten Einfluss auf diese Metrik. Suchen Sie in den Ergebnissen der Windows-Bewertungskonsole nach umfangreichen Arbeitsspeicherzuordnungen. Darüber hinaus können die Softwareanbieter Leistungsablaufverfolgungen dieser Bewertung erhalten (die im gleichen Verzeichnis gespeichert werden wie die Bewertungsergebnisse), um Bereiche mit hoher Arbeitsspeicherzuordnung zu finden, für die sich eine Untersuchung zur Verringerung der Arbeitsspeichernutzung lohnen könnte. Eine sorgfältige Analyse der Zuordnungen – auch geringfügiger – kann Entwicklern helfen, Zuordnungen zu finden, die sich unterm Strich summieren.

Schritt 3: Sammeln von Resident Set-Daten mithilfe von WPR

In den Schritten 1 und 2 haben Sie gelernt, wie Sie Ablaufverfolgungen für den Arbeitsspeicher mithilfe der Bewertung Bewertungstoolkit: Arbeitsspeicherbedarf sammeln. Diese Bewertung kann nur eine Ablaufverfolgung für das Startszenario erfassen. Sie können mithilfe von Windows Performance Recorder (WPR) Ablaufverfolgungen für jedes Szenario erfassen (App-Start, Browsen im Web usw.).

Führen Sie die folgenden Schritte aus, um eine Ablaufverfolgung mit Resident Set-Daten zu sammeln.

  1. Öffnen Sie Windows Performance Recorder im Menü Start.

  2. Wählen Sie die Aufzeichnungsprofile Selektierung auf erster Ebene und Resident Set-Analyse aus, behalten aber die Standardwerte für die anderen Optionen bei.

  3. Klicken Sie auf Start, und warten Sie einige Sekunden.

    Screenshot: Bildschirm zum Aufzeichnen von Systeminformationen der Windows-Bewertungskonsole; gezeigt wird der Status „Aufzeichnung nicht gestartet“

  4. Klicken Sie auf Speichern, und speichern Sie die ETL-Ablaufverfolgung auf einem Datenträger.

Sie verfügen jetzt über eine Momentaufnahme der Systemspeicherzusammensetzung.

Schritt 4: Interpretieren von Resident Set-Daten mithilfe von WPA

Gehen Sie folgendermaßen vor:

  1. Starten Sie Windows Performance Analyzer über das Menü Start.

  2. Öffnen Sie die soeben erfasste ETL-Ablaufverfolgung (Menü Datei, Öffnen…).

  3. Erweitern Sie die Gruppe Arbeitsspeicher im Graph-Explorer.

    Screenshot: WPA-Graph-Explorer

  4. Ziehen Sie den Graph Resident Set per Drag & Drop auf die Registerkarte „Analyse“.

Die Ansicht sieht etwa wie folgt aus:

Screenshot: WPA mit Registerkarte „Analyse“

Sehen Sie sich an, wie die Daten dargestellt werden. Hier sind einige Definitionen der hilfreichsten Spalten, wenn Sie eine allgemeine Analyse durchführen möchten:

Column Definition
MMList

Die Arbeitsspeicherverwaltungsliste, die die Seiten enthält.

  • Aktiv: Seiten, die sich derzeit in einem privaten Prozessarbeitssatz oder einem Kernelarbeitssatz befinden.

  • Standby: Nicht modifizierte Seiten in der Standbyliste. Sie sind Teil des verfügbaren Arbeitsspeichers.

  • Modifiziert: Private Prozessseiten oder gesicherte Dateiseiten, die seit der letzten Speicherung im dauerhaften Speicher geändert wurden.

  • ModifiedNoWrite: Seiten, die geändert wurden, aber nicht im dauerhaften Speicher gespeichert werden.

  • Übergang: Seiten im Übergang zwischen Listen.

Prozess

Der Name des Prozesses, der der Besitzer der Seiten ist. Diese Informationen sind nur für private Prozessseiten verfügbar. Alle freigabefähigen Seiten sind dem Prozess „Unbekannt“ (-1) zugeordnet, selbst wenn sie nicht freigegeben sind.

Beschreibung

Der dargestellte Wert variiert je nach Seitenkategorie. Beispiel:

  • Für Images, Treiber, Dateien usw. wird der vollständige Dateipfad und -name angezeigt.

  • Für den Pool mit Arbeitsspeicher wird der Name des Treiberpooltags angezeigt.

Seitenkategorie

Die Art der Daten auf der Seite, wie unten definiert. Einige der möglichen Kategorien sind folgende:

  • CopyOnWriteImage: Private Prozessseiten, die durch Patchen einer Adresstabelle für den Import ausführbarer Images oder durch einen Rebasevorgang für ein ausführbares Image erstellt werden.

  • Treiber: Codepages für einen Treiber.

  • DriverFile: Codepages, die aus der ausführbaren Treiberdatei gelesen und als Daten zugeordnet wurden.

  • DriverLockedSystemPage: Kernelmodusseiten, die im Arbeitsspeicher gesperrt oder fixiert sind, in der Regel durch Treiber oder den Kernel.

  • Image: Seiten aus DLL- und EXE-Dateien, die als ausführbare Images geladen wurden.

  • MapFile: Seiten von Datendateien oder Images, die als Daten geladen wurden.

  • NonPagedPool: Seiten, die Daten für den nicht zuordnungsfähigen Systempool enthalten.

  • PagedPool: Seiten, die Daten für den zuordnungsfähigen Systempool enthalten.

  • PFMappedSection: Seiten aus im Arbeitsspeicher zugeordneten Abschnitten, die durch die Seitendatei gesichert sind.

  • SystemPage: Seiten, die Einträge der Systemseitentabelle enthalten, um Systemseiten wie E/A-Bereich, Kernelstacks und Beschreibungslisten für den Arbeitsspeicher zuzuordnen.

  • UserStack: Seiten, die die Benutzermodusdaten für jeden Thread enthalten.

  • VirtualAlloc: Seiten, die von den VirtualAlloc-APIs zugewiesen werden.

  • Win32Heap: Heapseiten.

Größe (MB)

Die Gesamtgröße der in jeder Kategorie aggregierten Seiten.

Schritt 6: Identifizieren von Prozessarbeitssätzen, die sich auf den Arbeitsspeicherbedarf auswirken

Resident Set-Daten können auf viele verschiedene Weise basierend auf den Spaltenanordnungen in der Zusammenfassungstabelle angezeigt werden. Die Zusammenfassungstabelle verfügt über mehrere vordefinierte Spaltenanordnungen, die Sie als Ausgangspunkt für eine Untersuchung verwenden können.

  1. Wählen Sie die Voreinstellung Privater Prozessarbeitssatz aus.

    Screenshot: WPA-Dropdownliste mit privatem Prozessarbeitssatz

  2. Erweitern Sie die Gruppe Active MMList.

    1. Konzentrieren Sie sich auf die Kategorie Aktiv, da diese sich derzeit auf die Arbeitsspeichernutzung auswirkt.

    2. Standby-Seiten könnten bei hoher Arbeitsspeicherauslastung freigegeben werden.

    3. Geänderte Seiten könnten auf einen Datenträger geschrieben und freigegeben werden.

  3. Sortieren Sie die Liste nach Größe, indem Sie auf die Spaltenüberschrift Größe (MB) klicken.

  4. Identifizieren Sie die Prozesse mit der höchsten Nutzung. Möglicherweise werden Einträge wie n/v und Unbekannt (-1) als Prozessnamen angezeigt.

    • n/v enthält Seiten, die keinem Prozess zugeordnet sind, beispielsweise im Treiberpoolarbeitsspeicher.

    • Unbekannt (-1) enthält Seiten, die freigegeben werden können.

  5. Erweitern Sie die Prozesse, um die Seitenkategorie anzuzeigen.

    1. Damit können Sie die Zusammensetzung des Prozessarbeitssatzes in der folgenden Abbildung sehen.

    2. Ganz oben sollten die Kategorien „VirtualAlloc“ oder „Win32Heap“ angezeigt werden, die wir in Übung 2 analysieren werden.

    3. Im folgenden Beispiel verwendet SearchIndexer.exe 21,7 MB aktiven Arbeitsspeicher durch Heap-Zuordnungen und 12,4 MB durch VirtualAlloc-API-Aufrufe.

    Beispieltabelle mit der Prozessnutzung

Konzentrieren Sie sich auf Drittanbieterprozesse, und ermitteln Sie, ob diese im Rahmen der vorab geladenen Software gestartet werden müssen. Als Entwickler sollten Sie die dynamischen Zuordnungen analysieren, die von Ihrem Prozess vorgenommen werden, um zu verstehen, wo Optimierungen erfolgen können.