Le caratteristiche di utilizzo della memoria di un'app sono un aspetto fondamentale delle sue prestazioni. Puoi utilizzare System Profiler per analizzare queste caratteristiche esaminando le informazioni disponibili sul contatore della GPU.
Dispositivi Adreno
Sui dispositivi Adreno, inizia evidenziando un periodo di tempo coerente con un singolo frame della GPU, come descritto in Stimare i tempi di elaborazione dei frame della CPU e della GPU. Utilizza la tecnica descritta in quella pagina che prevede l'utilizzo del contatore Percentuale di utilizzo della GPU o di un contatore simile per i limiti di durata frame, in quanto tutti i contatori utilizzano la stessa tecnica di temporizzazione e consentono stime più accurate dell'utilizzo della memoria (rispetto all'utilizzo dei limiti di durata frame derivati dalle sezioni della GPU i cui dati vengono raccolti indipendentemente dai dati del contatore).
Totali di lettura/scrittura
Dopo aver evidenziato un singolo frame nel profiler, inizia esaminando i contatori Lettura totale (byte/sec) e Scrittura totale (byte/sec). Questi contatori forniscono una buona panoramica della quantità di dati che attraversano il bus di memoria nel corso di un singolo frame. Fai del tuo meglio per ridurre al minimo la quantità di dati inviati tramite il bus, poiché la larghezza di banda della memoria è una delle principali cause di consumo eccessivo della batteria sui dispositivi mobili.
Puoi anche esaminare i contatori Lettura memoria vertici (byte/secondo) e Lettura memoria texture (byte/secondo) per determinare la porzione di larghezza di banda utilizzata per i dati di vertici e texture.
Ciò che consideri "buono" per questi valori dipende dal tipo di carichi di lavoro visualizzati nella tua app. Ad esempio, le applicazioni 2D potrebbero utilizzare quantità relativamente grandi (~2+ GB/s) di larghezza di banda di lettura della memoria delle texture, ma la larghezza di banda della memoria dei vertici potrebbe essere molto ridotta (~50 MB/s). Per ulteriori dettagli, consulta la documentazione relativa ad Analizza la larghezza di banda della memoria dei vertici e ad Analizza l'utilizzo della larghezza di banda della memoria delle texture.
Recupera stalli
Esamina i contatori % Vertex Fetch Stall, % Texture Fetch Stall e % Stall on System Memory, in quanto forniscono indicazioni sul rendimento complessivo della memoria della nostra applicazione. Se i valori sono superiori a circa il 5%, significa che la tua app non organizza i dati in memoria in modo efficiente o accede ai dati in modo efficiente per sfruttare la cache. Consulta le sezioni Analizzare la larghezza di banda della memoria dei vertici e Analizzare l'utilizzo della larghezza di banda della memoria delle texture per informazioni dettagliate su come migliorare l'utilizzo della memoria per questi tipi di asset.
Dispositivi in Mali
Sui dispositivi Mali, inizia evidenziando un periodo di tempo coerente con un singolo frame della GPU, come descritto in Stimare i tempi di elaborazione dei frame della CPU e della GPU. Utilizza la tecnica descritta in quella pagina che prevede l'utilizzo del contatore Percentuale di utilizzo della GPU o di un contatore simile per i limiti di durata frame, in quanto tutti i contatori utilizzano la stessa tecnica di temporizzazione e consentono stime più accurate dell'utilizzo della memoria (rispetto all'utilizzo dei limiti di durata frame derivati dalle sezioni della GPU i cui dati vengono raccolti indipendentemente dai dati del contatore).
Output External Totals
Dopo aver evidenziato un singolo frame in System Profiler, inizia esaminando i contatori Output External Read bytes e Output External Write bytes. Questi contatori forniscono una buona panoramica complessiva della quantità di dati che attraversano il bus di memoria nel corso di un singolo frame. Fai del tuo meglio per ridurre al minimo la quantità di dati che invii tramite il bus, poiché la larghezza di banda della memoria è una delle principali cause di consumo della batteria sui dispositivi mobili.
Inserisci totali interni
Sono presenti anche contatori che forniscono informazioni sulle cache stesse. I contatori che ti interessano sono "Input internal [read|write] stall cycles". Valori più alti indicano che stai accedendo correttamente alla cache, ma vengono effettuate troppe richieste di lettura e di conseguenza il codice shader si blocca in attesa di accedere alla memoria.
Recupera stalli
Il successivo set di contatori che puoi esaminare sono Vertex Prefetcher Stall Cycles e Texture Fetch Stall, che ti daranno alcuni suggerimenti sul rendimento complessivo della memoria della nostra applicazione. Se visualizzi valori superiori al 5% circa, significa che non stai disponendo i nostri dati in memoria in modo efficiente o che non stai accedendo ai nostri dati in modo efficiente per sfruttare la cache. Consulta gli articoli Analisi della larghezza di banda della memoria [Vertex|Texture] per informazioni dettagliate su come migliorare l'utilizzo della memoria per questi tipi di asset.