Die Arbeitsspeichernutzung einer App ist ein grundlegender Aspekt ihrer Leistung. Mit dem System Profiler können Sie diese Merkmale anhand der verfügbaren GPU-Zählerinformationen analysieren.
Adreno-Geräte
Markieren Sie auf Adreno-Geräten zuerst einen Zeitraum, der einem einzelnen GPU-Frame entspricht, wie unter CPU- und GPU-Frame-Verarbeitungszeiten schätzen beschrieben. Verwenden Sie die auf dieser Seite beschriebene Methode, bei der die GPU-Auslastung in % oder ein ähnlicher Zähler-Track für Ihre Frame-Time-Grenzwerte verwendet wird. Bei allen Zähler-Tracks wird dieselbe Timing-Methode verwendet, sodass genauere Schätzungen der Arbeitsspeicherauslastung möglich sind (im Vergleich zur Verwendung der Frame-Time-Grenzwerte, die aus den GPU-Slices abgeleitet werden, deren Daten unabhängig von den Zähler-Track-Daten erfasst werden).

Lese-/Schreibvorgänge insgesamt
Nachdem Sie einen einzelnen Frame im Profiler markiert haben, sehen Sie sich zuerst die Zähler Read Total (Bytes/sec) und Write Total (Bytes/sec) an. Diese Zähler geben einen guten Überblick darüber, wie viele Daten im Laufe eines einzelnen Frames über den Speicherbus übertragen werden. Versuchen Sie, die Menge der Daten, die Sie über den Bus senden, so gering wie möglich zu halten, da die Speicherbandbreite eine große Quelle für den Akkuverbrauch auf Mobilgeräten ist.

Sie können auch die Zähler Vertex Memory Read (Bytes/Second) und Texture Memory Read (Bytes/Second) untersuchen, um den Teil der Bandbreite zu ermitteln, der für Vertex- und Texturdaten verwendet wird.

Was Sie für diese Werte als „gut“ betrachten, hängt von der Art der Arbeitslasten ab, die in Ihrer App auftreten. Bei 2D-Anwendungen kann beispielsweise eine relativ große Bandbreite für das Lesen von Texturspeicher (~2 GB/s) verwendet werden, die Bandbreite für den Vertex-Arbeitsspeicher kann jedoch sehr gering sein (~50 MB/s). Weitere Informationen finden Sie in der Dokumentation zu Vertex-Speicherbandbreite analysieren und Nutzung der Texturspeicherbandbreite analysieren.
Abruf-Stalls
Sehen Sie sich die Zähler % Vertex Fetch Stall, % Texture Fetch Stall und % Stall on System Memory an, da diese Hinweise auf die allgemeine Speicherleistung Ihrer Anwendung geben. Wenn die Werte höher als etwa 5 % sind, deutet das darauf hin, dass Ihre App Daten entweder nicht effizient im Speicher anordnet oder nicht effizient auf ihre Daten zugreift, um den Cache zu nutzen. Weitere Informationen zur Verbesserung der Arbeitsspeichernutzung für diese Arten von Assets finden Sie unter Vertex-Arbeitsspeicherbandbreite analysieren und Textur-Arbeitsspeicherbandbreitennutzung analysieren.

Mali-Geräte
Markieren Sie auf Mali-Geräten zuerst einen Zeitraum, der einem einzelnen GPU-Frame entspricht, wie unter CPU- und GPU-Frame-Verarbeitungszeiten schätzen beschrieben. Verwenden Sie die auf dieser Seite beschriebene Methode, bei der die GPU-Auslastung in % oder ein ähnlicher Zähler-Track für Ihre Frame-Time-Grenzwerte verwendet wird. Bei allen Zähler-Tracks wird dieselbe Timing-Methode verwendet, sodass genauere Schätzungen der Arbeitsspeicherauslastung möglich sind (im Vergleich zur Verwendung der Frame-Time-Grenzwerte, die aus den GPU-Slices abgeleitet werden, deren Daten unabhängig von den Zähler-Track-Daten erfasst werden).

Externe Summen ausgeben
Nachdem Sie im Systemprofiler einen einzelnen Frame markiert haben, sehen Sie sich zuerst die Zähler Output External Read bytes (Externe Ausgabelesebytes) und Output External Write bytes (Externe Ausgabeschreibbytes) an. Diese Zähler geben einen guten Überblick darüber, wie viele Daten im Laufe eines einzelnen Frames über den Speicherbus übertragen werden. Versuchen Sie, die Menge der Daten, die Sie über den Bus senden, so gering wie möglich zu halten, da die Speicherbandbreite eine große Quelle für den Akkuverbrauch auf Mobilgeräten ist.

Interne Gesamtsummen eingeben
Es gibt auch Zähler, die Informationen zu den Caches selbst liefern. Die Zähler, die Sie interessieren, sind „Input internal [read|write] stall cycles“. Höhere Werte für diese Zähler bedeuten, dass Sie den Cache erfolgreich nutzen, aber zu viele Leseanfragen gestellt werden. Infolgedessen wird der Shader-Code angehalten, bis er Zugriff auf den Speicher erhält.

Abruf-Stalls
Als Nächstes können Sie sich die Zähler Vertex Prefetcher Stall Cycles und Texture Fetch Stall ansehen, da diese Hinweise auf die allgemeine Speicherleistung Ihrer Anwendung geben. Wenn Sie Werte über etwa 5% sehen, bedeutet das, dass Sie unsere Daten entweder nicht effizient im Arbeitsspeicher anordnen oder nicht effizient darauf zugreifen, um den Cache zu nutzen. In den Artikeln zur Analyse der [Vertex|Texture]-Speicherbandbreite finden Sie Informationen dazu, wie Sie die Arbeitsspeichernutzung für diese Arten von Assets verbessern können.
