Das PIX-Team von Microsoft hat im PIX-on-Windows-Entwicklerblog am 14. Dezember 2021 eine Critical-Path-Analyse für Timing Captures vorgestellt. Ausgeliefert wurde sie mit dem nachfolgenden Release 2201.24. Die Funktion greift auf die CPU-Context-Switch-Daten zu, die während einer Timing Capture erfasst werden, und berechnet daraus für ein ausgewähltes PIX-Event den kritischen Pfad. Damit nimmt sich das Werkzeug eines Dauerproblems bei der CPU-Profilierung von Spielen an: Welche Abhängigkeiten zwischen Threads bestimmen die Gesamtdauer eines Events, und wo schlagen Optimierungen wirklich auf die Laufzeit durch?
Wie der kritische Pfad berechnet wird
Der kritische Pfad ist jene Abfolge von Events und Thread-Abhängigkeiten, deren Verkuerzung die Gesamtdauer des ausgewählten Events senkt. PIX leitet ihn aus den Context-Switch-Daten ab, die der Betriebssystem-Scheduler während der Aufnahme liefert. Gestartet wird die Auswertung per Rechtsklick auf ein PIX-Event und Auswahl von „Calculate Critical Path for Selected PIX event“. Das Ergebnis landet in einer eigenen Timeline-Spur, beschriftet mit „Critical path“ und dem Namen des Events. Dort fuellt PIX die Zeitabschnitte, die bisher als Stillstand zu sehen waren, mit Angaben darüber, welche Events, Threads und CPU-Kerne während der Verzögerung aktiv waren.
Abhängigkeitspfeile zeigen, welcher Thread einen anderen lauffaehig gemacht hat. Hinweise auf Kernkonkurrenz kommen hinzu, wenn mehrere Threads um denselben CPU-Kern konkurrieren. Tooltips nennen den Grund für einen Stillstand, etwa dass ein Loader-Thread anlief, weil er vom AppMain-Thread bereitgestellt wurde. Farbwechsel in den Thread-Indikatorlinien markieren die Übergänge zwischen verschiedenen Threads innerhalb der Luecken. Damit lässt sich die komplette Ursachenkette eines Stalls nachvollziehen, nicht nur dessen Dauer ablesen.
Was Release 2201.24 sonst noch bringt
Die Critical-Path-Analyse steckt im PIX-on-Windows-Build 2201.24, der am 25. Januar 2022 erschien. Neben der neuen Analysefunktion bringt das Release eine Graphendarstellung konsolidierter PIX-Events: Das Werkzeug gruppiert Events mit fortlaufenden Namensmustern wie „Frame 123“ und „Frame 124“ und behandelt sie in der Metrics View gemeinsam. Dazu kamen Fehlerbehebungen und Optimierungen, etwa an der NVIDIA-Plugin-Anbindung, an der HLSL-Fehlersuche und an den Shader-Breakpoints.
Teams, die DirectX-12-Titel auf Windows und Xbox profilieren, bekommen mit der Funktion eine kausale Sicht auf die Thread-Synchronisation. Zeigten Timing Captures bisher vor allem, wie sich Arbeit zeitlich auf Kerne und Threads verteilt, weist die Critical-Path-Analyse die Wartezeiten nun ihren auslösenden Threads zu. Die passende Dokumentation für das Microsoft Game Development Kit beschreibt das Verfahren analog für die Xbox-Toolkette.

