Wie kann ich Leistungsprobleme vor / während des Anmeldevorgangs analysieren?

Antworten:

35

Prozessmonitor verwenden

Process Monitor ist ein Tool, mit dem Dateisystem-, Registrierungs- und Netzwerkereignisse für alle ausgeführten Prozesse erfasst werden. Die gesammelten Ereignisse können dann analysiert werden, um festzustellen, wie sich ein System (oder eine Anwendung) in bestimmten Situationen intern verhält.

In diesem Fall möchten wir mithilfe des Tools ermitteln, welche Ereignisse während des Startvorgangs lange Zeit in Anspruch genommen haben.

  1. Laden Sie Process Monitor herunter und führen Sie es aus.

  2. Aktivieren Sie im Menü Optionen die Option Startprotokollierung aktivieren .

    Startprotokollierung aktivieren

  3. Aktivieren Sie im daraufhin angezeigten Dialogfeld die Option Profilerstellungsereignisse generieren und klicken Sie auf OK .

    Generieren Sie Profiling-Ereignisse

  4. Starten Sie das System neu und replizieren Sie Ihr Problem. Starten Sie Process Monitor, sobald der Anmeldevorgang abgeschlossen ist.

  5. Process Monitor benachrichtigt Sie darüber, dass Startaktivitäten erfasst wurden, und fragt Sie, ob Sie diese Daten jetzt speichern möchten. Bestätigen Sie den Vorgang mit Ja .

    Speichern Sie die Startaktivität

  6. Wählen Sie einen geeigneten Speicherort für die .pmlDatei und warten Sie, bis die Daten konvertiert wurden. Zeigen Sie nach dem Laden der Daten die Spalte Dauer an , indem Sie das Kontextmenü in einer der Spaltenüberschriften öffnen und auf Spalten auswählen ... klicken.

    Spalten auswählen ...

    ... und aktivieren Sie das entsprechende Kontrollkästchen im daraufhin angezeigten Dialogfeld.

    Kontrollkästchen Dauer

  7. Erstellen Sie einen neuen Filter, indem Sie im Menü ** Filter die Option Filter ... * auswählen .

    Filtermenü

  8. Erstellen Sie einen Filter für die Dauer Spalte , wo es mehr als ein Wert von 1 , wobei in diesem Fall sollte der Eintrag wird inklusive . Klicken Sie auf Hinzufügen, um den Filter zur Liste hinzuzufügen und bestätigen Sie die Auswahl mit OK .

    Bildbeschreibung hier eingeben

  9. Zu diesem Zeitpunkt werden in der Ereignisliste in Process Monitor nur Ereignisse angezeigt, deren Abschluss länger als 1 Sekunde gedauert hat. Sie sollten in der Spalte Dauer nach Ereignissen suchen , deren Abschluss lange gedauert hat.

    Zu Demonstrationszwecken finden Sie hier eine Auswahl von Ereignissen, deren Abschluss länger als 10 Sekunden dauerte. Dies wurde zu Demonstrationszwecken in einer virtuellen Maschine erfasst.

    Beispielereignisse
    klicken um zu vergrößern

    Diese Ereignisse müssen nicht unbedingt die Ursache dafür sein, dass der Anmeldevorgang blockiert wurde, aber das Deaktivieren des Windows-Indexdienstes und von Avast Anti-Virus kann bei dieser Installation einen Versuch wert sein.

Verwenden von Xperf

xperf ist ein Leistungsanalysetool aus dem Windows Performance Toolkit. Die Verwendung und Analyse der gesammelten Daten kann eine Herausforderung sein. Dennoch werden wir sehen, wie die erforderlichen Daten gesammelt und relevante Abschnitte davon angezeigt werden.

Bitte beachten Sie, dass das hierfür erforderliche Windows Assessment and Deployment Kit (ADK) nur unter Windows 7 und höher funktioniert.

  1. Laden Sie das Windows ADK herunter und installieren Sie mindestens die Windows Performance Toolkit- Komponente.

  2. Öffnen Sie nach Abschluss der Installation eine Eingabeaufforderung mit erhöhten Rechten.

    Erhöhte Eingabeaufforderung

  3. Wechseln Sie in ein Verzeichnis, in dem sich Ihr Trace befinden soll. Wie der Desktop.

  4. Die empfohlene Methode (gemäß Verwenden von XBOOTMGR zum Erfassen langsamer Startvorgänge oder langsamer Anmeldungen, die durch langsame Startvorgänge verursacht werden ) zum Erfassen einer Ablaufverfolgung während des Startvorgangs lautet:

    xbootmgr -trace boot -traceflags base+latency+dispatcher -stackwalk profile+cswitch+readythread -notraceflagsinfilename -postbootdelay 10

    Das System startet nun den Trace und startet neu.

  5. Folgen Sie nach dem Neustart den Anweisungen auf dem Bildschirm. Sie werden aufgefordert, den Erfassungsvorgang zuzulassen. Nach Abschluss des Vorgangs finden Sie die resultierende Ablaufverfolgung in dem Ordner, von dem aus Sie die Ablaufverfolgung initiiert haben.

    In meinem Fall hat es einen boot_1.etl(und einen entsprechenden boot_1.cab) auf dem Desktop erstellt.

    Öffnen Sie die .etlDatei in Windows Performance Analyzer .

Analyse

Nachdem Sie den Trace geöffnet haben, sehen Sie bereits mögliche Anzeichen dafür, dass Ihr Problem an die Hardware gebunden ist. Ein kurzer Blick auf die Übersichten zu Berechnung , Speicherung und Speicher im Graph Explorer würde Peaks anzeigen, die weiter analysiert werden sollten.

Schauen wir uns zu Demonstrationszwecken das Diagramm Auslastung nach Prozess an . Um den Inhalt anzuzeigen, doppelklicken Sie einfach auf das Diagramm, um es der Analyseansicht hinzuzufügen .

Windows Performance Analyzer - Übersicht
klicken um zu vergrößern

Beachten Sie, dass in keinem der Diagramme Spitzenwerte angezeigt werden. Die blauen Peaks am Start gehören zum Systemprozess und werden voraussichtlich zu diesem Zeitpunkt auftreten.

Die anderen Peaks im CPU-Auslastungsdiagramm werden möglicherweise im Kontext besser angezeigt. Fügen wir also der Analyseansicht ein weiteres Diagramm hinzu. Das Diagramm, nach dem wir suchen, ist das Diagramm " Startphasen" , das sich im Abschnitt " Systemaktivität " befindet.

Boot-Phasen
klicken um zu vergrößern

Im obigen Screenshot habe ich außerdem das Diagramm " Allgemeine Ereignisse" unten hinzugefügt , um zusätzlichen Kontext bereitzustellen. Hierbei ist jedoch zu beachten, dass der erste sichtbare Spitzenwert der CPU-Auslastung vom Avast-Dienst verursacht wurde. In der Prozessmonitor-Analyse haben wir bereits festgestellt, dass dieser Prozess einer der Prozesse ist, die beim Booten viel Zeit in Anspruch genommen haben.

Was wir auch hier sehen, jetzt, da wir es im Kontext der Startphasen sehen können, ist, dass der Peak nach der Winlogon Init- Phase (und sogar in der Post Boot- Phase, wenn Sie den Desktop bereits sehen können) aufgetreten ist. Es kann daher als unwahrscheinlich angesehen werden, dass dieser Prozess tatsächlich ein Problem in der Phase verursacht, bevor der Desktop angezeigt wird.

Was wir suchen würden, sind Ereignisse, die in oder um die Winlogon Init- Phase stattfinden. Um dies zu vereinfachen, können Sie die Phase im Diagramm "Startphasen" auswählen. Dadurch werden alle Einträge in allen Diagrammen hervorgehoben, die in dieser Phase aufgetreten sind.

Ein Diagramm, das Sie genauer betrachten sollten, ist sicherlich das Diagramm " Dienste" , da die meisten von ihnen während der Winlogon Init-Phase gestartet werden.

Wie bereits in der Einleitung erwähnt, kann die Analyse dieser Daten kompliziert sein, es sei denn, das Problem tritt sofort auf, wenn Sie den Trace öffnen. Dies ist jedoch definitiv das richtige Werkzeug, um das Problem zu analysieren. Je nach Situation möchten Sie möglicherweise sogar Stapelspuren sammeln, um noch tiefer zu bohren. Dieser Vorgang liegt jedoch weit außerhalb des Rahmens dieses Beitrags.

Weitere Lektüre

Der Hochstapler
quelle
xbootmgr von WPT ( msfn.org/board/index.php?showtopic=158252 ) ist das bessere Tool für den Einstieg. Ich verwende die ProcMon-Protokollierung nur, um eine bestimmte Phase des Startvorgangs genauer zu betrachten.
magicandre1981
@ magicandre1981: Der Post war noch nicht fertig;) Wenn du mehr Details zu xperf hinzufügen möchtest, kannst du ihn gerne bearbeiten.
Der Hochstapler