Die Schätzung der CPU- und GPU-Frame-Verarbeitungszeiten (Frame-Times) ist entscheidend, um die Leistung Ihrer App zu verstehen und Engpässe zu finden. Wenn Sie eine App mit AGI profilieren, stellt der System Profiler Trace-Daten bereit, mit denen Sie Frame-Zeiten schätzen können.
CPU-Zeiten
In AGI können Sie die Gesamt- und aktiven CPU-Frame-Zeiten im CPU-Track eines Systemprofils aufrufen.
CPU-Gesamtzeit
Wenn Sie die gesamte CPU-Zeit messen möchten, wählen Sie den Zeitraum aus, der die Zeit zwischen aufeinanderfolgenden Frame-Einreichungsereignissen umfasst. Die Ereignisse für die Frame-Einreichung sind eglSwapBuffers
(für OpenGL) und vkQueuePresentKHR
(für Vulkan).

eglSwapBuffer
-Ereignissen.
vkQueuePresentKHR
-Ereignissen.Diese Messung ist eine Schätzung der gesamten CPU-Zeit,entspricht aber nicht unbedingt der aktiven CPU-Zeit. In GPU-gebundenen Apps wartet die CPU beispielsweise möglicherweise, bis die GPU ihre Arbeit abgeschlossen hat, bevor ein neuer Frame gesendet wird. Das geschieht häufig, wenn ein dequeueBuffer
-, eglSwapBuffer
- (für OpenGL) oder vkQueuePresent
-Ereignis (für Vulkan) einen großen Teil der CPU-Zeit in Anspruch nimmt.
Die Wartezeit ist in der CPU-Gesamtzeit enthalten, aber nicht in der aktiven CPU-Zeit.

dequeueBuffer
- und eglSwapBuffer
-Ereignissen häufig inaktiv.
Aktive CPU-Zeit
Die aktive CPU-Zeit gibt an, wann die CPU den App-Code ausführt, ohne sich im Inaktivitätsmodus zu befinden.
Wenn Sie die aktive CPU-Zeit messen möchten, sehen Sie sich die Aktuell ausgeführten-Scheiben direkt über den CPU-Ereignissen an. Zählen Sie alle Teile des Tracings zwischen den beiden Frame-Einreichungsereignissen, die sich im Status Running befinden. Achten Sie darauf, dass Sie Arbeitsthreads angeben.


Eine weitere Möglichkeit, die aktive CPU-Zeit zu messen, besteht darin, sich die App-Slices in den CPU-Tracks anzusehen. Diese Segmente geben an, wann die CPU ausgeführt wird, und entsprechen den Segmenten Aktiv.

Sie können Ihrer App ATrace-Markierungen hinzufügen, um App-Slices leichter zu identifizieren. Die Markierungen werden dann im CPU-Track des Systemprofilers angezeigt.

GPU-Framezeiten schätzen
Sie können entweder GPU-Scheiben oder GPU-Zähler im Systemprofiler verwenden, um GPU-Framezeiten zu schätzen. Die Schätzung ist bei der Verwendung von GPU-Scheiben genauer.
GPU-Scheiben
Wenn im Systemprofiler Informationen zu GPU-Scheiben verfügbar sind, können Sie sehr genaue Informationen zur GPU-Frame-Zeit erhalten, indem Sie die Gesamtzeit messen, die Ihre App für Aufgaben aufwendet, die mit einem einzelnen Frame verknüpft sind.
Mali-Geräte
Auf Mali-Geräten haben GPU-Slices Fragment-, Nicht-Fragment- und gelegentlich zusätzliche Nicht-Fragment-Tracks. Bei weniger komplexen Frames werden die Fragment- und Nicht-Fragment-Arbeiten nacheinander ausgeführt. Die Arbeit eines Frames lässt sich also von der eines anderen unterscheiden, indem nach Lücken zwischen aktiven GPU-Arbeiten gesucht wird.
Wenn Sie mit der Arbeit vertraut sind, die an die GPU gesendet wird, können Sie anhand des Musters der gesendeten Renderingpässe Informationen dazu erhalten, wann ein Frame beginnt und endet.


Bei Apps mit einem stärker parallelisierten GPU-Workflow können Sie die GPU-Frame-Zeiten abrufen, indem Sie im Bereich Auswahl für jeden Frame nach allen Frames mit derselben submissionID suchen.
Bei Vulkan-basierten Apps können mehrere Einreichungen verwendet werden, um einen Frame zu erstellen. Verwende den Vulkan-Ereignis-Track, um die Einreichungs-IDs im Blick zu behalten. Er enthält einen Snippet für jede Einreichung. Wenn Sie einen Beitragsausschnitt auswählen, werden alle GPU-Aktivitätsausschnitte hervorgehoben, die dem Beitrag entsprechen.


Adreno-Geräte
Auf Adreno-Geräten werden GPU-Slices im Track GPU-Queue 0 angezeigt und immer sequenziell dargestellt. Sie können sich also alle Slices ansehen, die die Rendering-Pässe für einen Frame darstellen, und damit die GPU-Frame-Zeiten messen.


Ähnlich wie beim zuvor beschriebenen Mali-Szenario: Wenn die App Vulkan verwendet, enthält der Track Vulkan-Ereignisse Informationen zur Arbeit, die zur Ausführung des Frames gesendet wird. Wenn Sie die Renderingpässe hervorheben möchten, klicken Sie auf die Vulkan-Ereignisse-Scheiben, die mit dem Frame verknüpft sind.

In einigen Fällen ist es aufgrund der starken GPU-Bindung der App schwieriger, die GPU-Frame-Grenzen zu unterscheiden. Wenn Sie mit der Arbeit vertraut sind, die an die GPU gesendet wird, können Sie in diesen Fällen das Muster ermitteln, mit dem die Renderingpässe ausgeführt werden, und anhand dieser Informationen die Framegrenzen bestimmen.

GPU-Zähler
Wenn in einem Trace keine Informationen zu GPU-Scheiben verfügbar sind, können Sie die GPU-Framezeit anhand der GPU-Zähler schätzen.
Mali-Geräte
Auf Mali-Geräten können Sie mit dem Messwert GPU-Auslastung die GPU-Framezeit für eine App schätzen, die nicht GPU-intensiv ist. Bei weniger GPU-intensiven Apps gibt es regelmäßige Phasen mit hoher und niedriger GPU-Aktivität, anstatt einer konstant hohen Aktivität. Wenn Sie die GPU-Frame-Zeiten anhand des GPU-Nutzungs-Tracks schätzen möchten, messen Sie die Dauer der Zeiträume mit hoher Aktivität im Track.

Wenn die App GPU-intensiver ist, kann die GPU-Auslastung durchgehend sehr hoch sein. In diesem Fall können Sie die Tracks Fragment Queue Utilization (Auslastung der Fragmentwarteschlange) und Non-Fragment Queue Utilization (Auslastung der Warteschlange ohne Fragmente) verwenden, um die GPU-Aktivität zu überwachen und GPU-Frame-Zeiten zu schätzen. Wenn Sie nach Mustern in Fragment- und Nicht-Fragment-Tracks suchen, können Sie eine grobe Schätzung der Grenzen eines Frames erhalten und damit die GPU-Framezeit messen.

Adreno-Geräte
Wenn die App auf Adreno-Geräten nicht GPU-intensiv ist, können Sie die GPU-Frameraten auf die gleiche Weise schätzen wie bei Mali-Geräten im vorherigen Abschnitt.

Wenn die App GPU-intensiver ist und die GPU-Auslastung konstant hoch ist, können Sie die Tracks Vertex-Anweisungen/Sekunde und Fragment-Anweisungen / Sekunde verwenden, um die GPU-Frame-Zeiten zu schätzen. Wenn Sie nach Mustern in den Aktivitätsniveaus dieser Tracks suchen, können Sie eine grobe Schätzung der Grenzen eines Frames erhalten und damit die GPU-Framezeit messen.

Diese anderen Datensätze enthalten möglicherweise ähnliche Informationen:
- Schattierte Eckpunkte pro Sekunde
- Schattierte Fragmente pro Sekunde
- % der Zeit, in der schattende Vertice verwendet wird
- % der Zeit, in der Fragmente schattiert werden