Ein Audioglitch und eine VPN-Pause fallen in dieselben zehn Sekunden, und ein Hilfsprogramm meldet einen hohen Wert mit der Bezeichnung DPC-Latenz. Es liegt nahe, daraus zu schließen, der Treiber bremse den Tunnel oder der Tunnel belaste den Treiber. Keine der beiden Schlussfolgerungen folgt aus dieser Zahl.

Drei Messungen sind hier im Spiel, und sie teilen keine gemeinsame Grenze.

Drei Zahlen, drei Grenzen

Ein zurückgestellter Prozeduraufruf ist Arbeit, die ein Treiber aus seinem Interrupt-Handler verschiebt, und die Zeit in diesen Routinen ist eine prozessorlokale Messung, die Modulen und Funktionen zugerechnet wird. Ein Echo-Roundtrip ist eine Zeitbeobachtung am Socket, erzeugt von einem Netzwerk-Stack und einem entfernten Antwortenden. Ein Trennungsereignis ist ein Zustandswechsel, den der Client aufzeichnet. Jede beantwortet eine Frage, die die anderen nicht beantworten können, und gleiche Einheiten machen sie nicht austauschbar.

Die nützliche Disziplin besteht darin, die Grenze zu benennen, bevor man den Wert liest. Schreiben Sie Einheit und Grenze nebeneinander. Meldet ein Werkzeug Millisekunden, fragen Sie Millisekunden wovon: Zeit in einer Routine, Zeit bis zur Ausführung oder Zeit bis zur Ankunft einer Antwort.

Ein hoher Wert in einer Kategorie ist ein Hinweis, nie eine Diagnose.

Lesen Sie die Definition hinter der Überschrift

Hilfsprogramme unterscheiden sich darin, was sie Latenz nennen. Manche melden die Dauer von Treiberroutinen, andere die Planungsverzögerung, und beide Größen können sich auf derselben Maschine gegenläufig bewegen. Ein Dashboard, das eine davon einfach DPC-Latenz nennt, hat Ihnen weniger gesagt, als es scheint. Zwei Dashboards können sich daher über eine Maschine uneinig sein, die sich überhaupt nicht verändert hat.

Dieselbe Vorsicht gilt innerhalb eines einzelnen Analysewerkzeugs. Die inklusive Dauer folgt einer Routine vom Eintritt bis zum Austritt, während die exklusive Dauer nur die Abschnitte summiert, in denen die Routine selbst ausführte. Die falsche Spalte zu wählen macht aus einem Aufrufer einen Schuldigen.

Lokale Treiberarbeit und Netzwerkverzögerung wirken auch zusammen, ohne zu verschmelzen. Übermäßige interruptbezogene Aktivität kann zeitkritische Arbeit auf der Maschine verzögern, und ein überlasteter Pfad kann Pakete verzögern, und beides kann während einer sichtbaren Pause zutreffen.

Legen Sie jede Beobachtung in ein Zeitfenster

Eine Ablaufverfolgung ist nur nützlich, wenn Sie das Intervall lesen, das das Symptom enthält. Zeichnen Sie die Ablaufverfolgung, das Ereignis des Clients und den Fehler der Anwendung mit Zeitstempeln auf und betrachten Sie dann dieselben Sekunden in allen drei. Ein Maximum aus einer stundenlangen Ablaufverfolgung und eine Trennung später am Nachmittag sind zwei unzusammenhängende Fakten.

wpr -start CPU -filemode
wpr -stop vpn-trace.etl
xperf -i vpn-trace.etl -a dpcisr -o dpc.txt

Öffnen Sie dann die Ablaufverfolgung im Analysewerkzeug und sortieren Sie nach Dauer innerhalb dieses Fensters statt nach der gesamten Aufzeichnung. Die Anleitung zur CPU-Analyse beschreibt die DPC/ISR-Daueransicht, die Zeit Modulen und Funktionen zurechnet.

Bestätigen Sie, was tatsächlich mit dem Tunnel geschah, während Sie dort sind. Kurzzeitig Anwendungsverkehr zu verlieren heißt nicht, dass der Client eine neue Aushandlung begonnen hat, und eine erfolgreiche kleine Probe beweist nicht, dass alles andere weiterlief.

Tauschen Sie die Komponente, die die Belege nennen

Ein beschäftigtes Modul ist ein Ort zum Untersuchen, kein Urteil. Es verrichtet vielleicht Arbeit, die eine andere Komponente oder die von Ihnen erzeugte Last verursacht. Halten Sie Modulname, Gerät, Treiberversion und das beobachtete Intervall zusammen, denn genau dieser Satz ist es, auf den ein Anbieter reagieren kann.

Eine Änderung pro Experiment ist der einzige Weg, aus dem Ergebnis zu lernen. Ein kabelgebundener Vergleich grenzt den Umfang ein, ändert aber gleichzeitig den Funkpfad und die Treiberaktivität, behandeln Sie ihn also als Hinweis und nicht als Beweis.

Behandeln Sie die Ablaufverfolgung als sensibel. Sie kann Prozessnamen und Umgebungsdetails enthalten, gehört daher in den unterstützten Aufzeichnungskanal und nicht in einen öffentlichen Anhang. Sagen Sie, welche Beobachtung die Ablaufverfolgung beantworten sollte.

Ähnliche Artikel