Stimare i tempi di elaborazione dei frame della CPU e della GPU (durata frame) è essenziale per comprendere le prestazioni dell'app e individuare i colli di bottiglia. Quando profili un'app con AGI, System Profiler fornisce dati di traccia che puoi utilizzare per stimare la durata frame.
Tempi della CPU
In AGI, puoi visualizzare la durata frame totale e attiva della CPU nella traccia della CPU di un profilo di sistema.
Tempo di CPU totale
Per misurare il tempo di CPU totale trascorso,
seleziona l'intervallo di tempo
che include il tempo tra gli eventi di invio dei frame successivi. Gli eventi di invio dei frame sono eglSwapBuffers (per OpenGL) e vkQueuePresentKHR (per Vulkan).
eglSwapBuffer.
vkQueuePresentKHR.Questa misurazione è una stima del tempo di CPU totale,ma non rappresenta necessariamente il tempo di CPU attivo. Ad esempio, nelle app con vincoli di GPU, la CPU potrebbe attendere il completamento del lavoro della GPU prima di inviare un nuovo frame. Questo accade spesso quando un evento dequeueBuffer, eglSwapBuffer (per OpenGL) o vkQueuePresent (per Vulkan) occupa una parte significativa del tempo di CPU.
Il tempo di attesa è incluso nel tempo di CPU totale, ma non nel tempo di CPU attivo.
dequeueBuffer e eglSwapBuffer eventi.
Tempo di CPU attivo
Il tempo di CPU attivo determina quando la CPU esegue il codice dell'app senza essere in uno stato di inattività.
Per misurare il tempo di CPU attivo, visualizza le sezioni In esecuzione appena sopra gli eventi della CPU. Conta tutte le parti della traccia tra i due eventi di invio dei frame che si trovano nello stato In esecuzione. Assicurati di includere i thread di lavoro.
Un altro modo per misurare il tempo di CPU attivo è visualizzare le sezioni dell'app nelle tracce della CPU. Queste sezioni indicano quando la CPU è in esecuzione e corrispondono alle sezioni In esecuzione.
Per identificare le sezioni dell'app, puoi aggiungere indicatori ATrace all' app. Questi indicatori verranno visualizzati nella traccia della CPU di System Profiler.
Stimare la durata frame della GPU
Per stimare la durata frame della GPU, puoi utilizzare le sezioni della GPU o i contatori della GPU in System Profiler. La stima è più precisa quando si utilizzano le sezioni della GPU.
Sezioni della GPU
Se System Profiler dispone di informazioni sulle sezioni della GPU, puoi ottenere informazioni molto precise sulla durata frame della GPU misurando la quantità totale di tempo che l'app dedica all'esecuzione delle attività associate a un singolo frame.
Dispositivi Mali
Sui dispositivi Mali, le sezioni della GPU hanno tracce frammento, non frammento e occasionalmente non frammento supplementare. Per i frame meno complessi, il lavoro di frammento e non frammento è sequenziale, quindi è possibile distinguere il lavoro di un frame da un altro cercando le lacune tra il lavoro attivo della GPU.
In alternativa, se hai familiarità con il lavoro inviato alla GPU, l'identificazione del pattern dei passaggi di rendering inviati fornisce informazioni su quando inizia e termina un frame.
Per le app con un flusso di lavoro della GPU più parallelizzato, puoi ottenere la durata frame della GPU cercando tutti i frame con lo stesso submissionID nel riquadro Selezione per ogni sezione.
Per le app basate su Vulkan, è possibile utilizzare più invii per comporre un frame. Tieni traccia degli ID di invio utilizzando la traccia Eventi Vulkan, che contiene una sezione per ogni invio. Selezionando una sezione di invio, verranno evidenziate tutte le sezioni di attività della GPU corrispondenti all'invio.
Dispositivi Adreno
Sui dispositivi Adreno, le sezioni della GPU vengono visualizzate nella traccia Coda GPU 0 e sono sempre rappresentate in sequenza, quindi puoi esaminare tutte le sezioni che rappresentano i passaggi di rendering per un frame e utilizzarle per misurare la durata frame della GPU.
Analogamente allo scenario Mali descritto in precedenza, se l'app utilizza Vulkan, la traccia Eventi Vulkan fornisce informazioni sul lavoro inviato per eseguire il frame. Per evidenziare i passaggi di rendering, fai clic sulle sezioni Eventi Vulkan associate al frame.
In alcuni scenari, i limiti dei frame della GPU sono più difficili da distinguere perché l'app è fortemente vincolata alla GPU. In questi scenari, se hai familiarità con il lavoro inviato alla GPU, puoi identificare il pattern con cui vengono eseguiti i passaggi di rendering e determinare i limiti dei frame da queste informazioni.
Contatori della GPU
Se le informazioni sulle sezioni della GPU non sono disponibili in una traccia, puoi stimare la durata frame della GPU utilizzando le tracce del contatore della GPU.
Dispositivi Mali
Sui dispositivi Mali, puoi utilizzare la traccia Utilizzo GPU per stimare la durata frame della GPU per un'app che non è a uso intensivo della GPU. Quando le app sono meno a uso intensivo della GPU, hanno periodi regolari di attività della GPU alta e bassa, anziché un'attività costantemente elevata. Per stimare la durata frame della GPU utilizzando la traccia Utilizzo GPU, misura la durata dei periodi di attività elevata nella traccia.
Se l'app è più a uso intensivo della GPU, l'utilizzo della GPU può essere costantemente molto elevato. In questo caso, puoi utilizzare le tracce Utilizzo coda frammenti e Utilizzo coda non frammenti per monitorare l'attività della GPU e stimare la durata frame della GPU. Cercando i pattern nelle tracce frammenti e non frammenti , puoi ottenere una stima approssimativa dei limiti di un frame e utilizzarla per misurare la durata frame della GPU.
Dispositivi Adreno
Sui dispositivi Adreno, se l'app non è a uso intensivo della GPU, puoi stimare la durata frame della GPU nello stesso modo in cui puoi farlo con i dispositivi Mali nella sezione precedente.
Se l'app è più a uso intensivo della GPU e la percentuale di utilizzo della GPU è costantemente elevata, puoi utilizzare le tracce Istruzioni vertici/secondo e Istruzioni frammenti / secondo per stimare la durata frame della GPU. Cercando i pattern nei livelli di attività di queste tracce, puoi ottenere una stima approssimativa dei limiti di un frame e utilizzarla per misurare la durata frame della GPU.
Queste altre tracce potrebbero fornire informazioni simili:
- Vertici ombreggiati / secondo
- Frammenti ombreggiati / secondo
- % di tempo per ombreggiare i vertici
- % di tempo per ombreggiare i frammenti