Thema: profiling
-
Continuous Profiling in Produktion: permanent laufende Sampling-Profile und was sie beantworten
Continuous Profiling erstellt systematisch über die Zeit CPU- und Speicherprofile und speichert sie als beschriftete Serien, sodass ein Team fragen kann, welche Funktion gestern über die gesamte Flotte hinweg am meisten CPU verbraucht hat oder was sich zwischen zwei Versionen geändert hat; Sampling-Profiler machen es günstig genug, um dauerhaft eingeschaltet zu bleiben, und Laufzeit-Endpunkte wie Gos /debug/pprof/ oder eBPF-Agenten liefern die Profile.
-
Ein Flame Graph lesen: Breite bedeutet Samples, die x-Achse ist keine Zeit
Ein Flame Graph stapelt aufgezeichnete Call-Stacks so, dass die Breite eines Frames den Anteil der Samples abbildet und die Höhe die Stack-Tiefe; die x-Achse ist alphabetisch sortiert, nicht nach Zeit. Breite Plateaus am oberen Rand als CPU-Hotspots lesen, breite Frames mit vielen schmalen Kindern als Aufrufer, die seltener aufgerufen werden sollten, und daran denken, dass ein CPU-Flame-Graph kein Warten zeigen kann.
-
CPU- und GPU-Frame-Profiling: die limitierende Arbeit finden
Mit Frame-Time-Budgets, CPU- und GPU-Timelines sowie kontrollierten Captures lässt sich der Engpass der Spielperformance bestimmen, ohne Warten mit nützlicher Arbeit zu verwechseln.
-
Unity SRP Batcher: CPU-Vorbereitung optimieren, ohne ihn mit Instancing zu verwechseln
Erläutert den Zweck des SRP Batchers auf der CPU-Seite, die Prüfung der Kompatibilität von Materialien und Shadern sowie die getrennte Messung gegenüber GPU Instancing.
-
CPU-Profiling mit perf: perf top, perf record -g, perf report und perf_event_paranoid
perf top liefert sofort ein Live-Profil; perf record -g speichert ein Call-Graph-Profil auf der Festplatte, das perf report später auswertet. Die Kernel-Einstellung perf_event_paranoid legt fest, was unprivilegierte Benutzer dürfen, und die Symbolauflösung braucht für jeden Frame im Stack passende Debug-Informationen.
Maschinenlesbar: JSON