Registra tracce

Per iniziare a registrare una traccia, scegli una configurazione di registrazione da uno dei menu a discesa sopra o sotto il Profiler CPU e fai clic su Registra.

Figura 1. Profiler CPU mostra lo stato, la durata e il tipo di registrazione in corso.

Interagisci con l'app e, al termine, fai clic su Interrompi. Profiler visualizza automaticamente le proprie informazioni di tracciamento nel riquadro della traccia, come mostrato nella Figura 2.

Figura 2. Profiler CPU dopo aver registrato la traccia del metodo.

  1. Intervallo selezionato: determina la parte di tempo registrata da ispezionare nel riquadro delle tracce. Quando registri per la prima volta una traccia, il Profiler CPU seleziona automaticamente l'intera durata della registrazione nella sequenza temporale della CPU. Per esaminare i dati di traccia solo per una parte dell'intervallo di tempo registrato, trascina i bordi dell'area evidenziata.
  2. Sezione Interazione: mostra gli eventi di interazione degli utenti e del ciclo di vita delle app lungo una sequenza temporale.
  3. Sezione Thread: mostra l'attività relativa allo stato dei thread (ad esempio, in esecuzione, sospensione e così via) e il grafico delle chiamate (o il grafico degli eventi di traccia in Traccia del sistema) per ogni thread lungo una sequenza temporale.
    • Utilizza il mouse e le scorciatoie da tastiera per spostarti nella sequenza temporale.
    • Fai doppio clic sul nome del thread o premi Invio mentre è selezionato un thread per espanderlo o comprimerlo.
    • Seleziona un thread per visualizzare ulteriori informazioni nel riquadro Analisi. Tieni premuto Maiusc o Ctrl (Comando su Mac) per selezionare più thread.
    • Seleziona una chiamata al metodo (o un evento di traccia in System Trace) per visualizzare ulteriori informazioni nel riquadro Analisi.
  4. Riquadro Analisi: visualizza i dati di traccia per l'intervallo di tempo e la chiamata al metodo o al thread selezionati. In questo riquadro puoi selezionare la modalità di visualizzazione di ogni analisi dello stack (utilizzando le schede di analisi) e la modalità di misurazione del tempo di esecuzione (utilizzando il menu a discesa Riferimento temporale).
  5. Schede del riquadro Analisi: scegli come visualizzare i dettagli delle tracce. Per maggiori dettagli su ciascuna opzione, consulta Ispezionare le tracce.
  6. Menu di riferimento temporale. Seleziona una delle seguenti opzioni per determinare come vengono misurate le informazioni sulle tempistiche di ogni chiamata (supportata solo nei metodi Java di esempio/traccia):
    • Tempo orologio interno: le informazioni sulle tempistiche rappresentano il tempo effettivo trascorso.
    • Tempo thread: le informazioni di temporizzazione rappresentano il tempo effettivo trascorso meno qualsiasi parte di quel tempo in cui il thread non consuma risorse della CPU. Per ogni chiamata, la durata del thread è sempre inferiore o uguale all'ora effettiva. L'uso del tempo di thread consente di capire meglio quanto dell'utilizzo effettivo della CPU di un thread viene consumato da un determinato metodo o funzione.
  7. Filtra: filtra i dati della traccia in base alla funzione, al metodo, alla classe o al nome del pacchetto. Ad esempio, se vuoi identificare rapidamente i dati di traccia relativi a una chiamata specifica, digita il nome nel campo di ricerca. Nella scheda Grafico a fiamme, gli stack di chiamate che includono una chiamata, un pacchetto o una classe corrispondente alla query di ricerca sono messi in evidenza. Nelle schede In alto verso il basso e Dal basso in alto, gli stack di chiamate hanno la priorità sugli altri risultati delle tracce. Puoi anche abilitare le seguenti opzioni selezionando la casella appropriata accanto al campo di ricerca:
    • Espressione regolare: utilizza questa opzione per includere espressioni regolari nella ricerca.
    • Maiuscole/minuscole: se la ricerca è sensibile alle maiuscole, utilizza questa opzione.
Suggerimento:quando esamini la sequenza temporale Thread, sono disponibili le seguenti scorciatoie:
  • Aumento dello zoom: premi W o fai scorrere la rotellina del mouse tenendo premuto Ctrl (Command su Mac).
  • Per diminuire lo zoom: premi S o fai scorrere la rotellina del mouse indietro tenendo premuto Ctrl (Command su Mac).
  • Spostati a sinistra: premi A o trascina il mouse verso destra tenendo premuto la barra spaziatrice.
  • Spostati a destra: premi D o trascina il mouse verso sinistra tenendo premuto la barra spaziatrice.
  • Espandi o comprimi un thread:fai doppio clic sul nome del thread o premi Invio mentre è selezionato un thread.

Scegli una configurazione di registrazione

Prima di iniziare a registrare le informazioni di traccia, scegli la configurazione di registrazione appropriata per le informazioni di profilazione che vuoi acquisire:

  • Metodi Java di esempio: acquisisce lo stack di chiamate della tua app a intervalli frequenti durante l'esecuzione del codice basato su Java dell'app. Il profiler confronta i set di dati acquisiti per ricavare informazioni sulle tempistiche e sull'utilizzo delle risorse relative all'esecuzione del codice basato su Java della tua app.

    Un problema intrinseco del tracciamento basato su campionamento è che se l'app inserisce un metodo dopo un'acquisizione dello stack di chiamate ed esce dal metodo prima dell'acquisizione successiva, la chiamata al metodo non viene registrata dal profiler. Se ti interessa tracciare metodi con cicli di vita così brevi, dovresti utilizzare il tracciamento strumentato.

  • Trace Java Methods: consente di strumentare la tua app in fase di runtime per registrare un timestamp all'inizio e alla fine di ogni chiamata al metodo. I timestamp vengono raccolti e confrontati per generare dati di tracciamento dei metodi, incluse informazioni sulle tempistiche e sull'utilizzo della CPU.

    Tieni presente che l'overhead associato all'implementazione di ciascun metodo influisce sulle prestazioni di runtime e potrebbe influire sui dati di profilazione. Ciò è ancora più evidente per i metodi con cicli di vita relativamente brevi. Inoltre, se la tua app esegue un numero elevato di metodi in un breve periodo di tempo, il profiler potrebbe superare rapidamente il limite di dimensioni dei file e potrebbe non essere in grado di registrare ulteriori dati di tracciamento.

  • Esempio di funzioni C/C++: acquisisce tracce campionate dei thread nativi dell'app. Per utilizzare questa configurazione, devi eseguire il deployment della tua app su un dispositivo con Android 8.0 (livello API 26) o versioni successive.

    Internamente, questa configurazione utilizza simpleperf per tracciare il codice nativo dell'app. Se vuoi specificare opzioni aggiuntive per simpleperf, ad esempio il campionamento di CPU specifiche del dispositivo o la specifica delle durate di campionamento con alta precisione, puoi utilizzare simpleperf dalla riga di comando.

  • Trace di chiamate di sistema: acquisisce dettagli granulari che ti consentono di ispezionare il modo in cui la tua app interagisce con le risorse di sistema. Puoi controllare tempistiche e durate esatte degli stati dei thread, visualizzare dove si trovano i colli di bottiglia della CPU in tutti i core e aggiungere eventi di traccia personalizzati da analizzare. Queste informazioni possono essere fondamentali per la risoluzione dei problemi di prestazioni. Per utilizzare questa configurazione, devi eseguire il deployment della tua app su un dispositivo con Android 7.0 (livello API 24) o versioni successive.

    Durante l'utilizzo di questa configurazione della traccia, puoi contrassegnare visivamente le routine di codice importanti nella sequenza temporale del profiler utilizzando il tuo codice. Per implementare il codice C/C++, usa l'API di tracciamento nativo fornita da trace.h. Per instrumentare il codice Java, utilizza la classe Trace. Per maggiori informazioni, consulta la pagina Implementare il codice dell'app.

    Questa configurazione della traccia si basa su systrace. Puoi utilizzare l'utilità a riga di comando systrace per specificare opzioni diverse da quelle fornite nel Profiler CPU. I dati aggiuntivi a livello di sistema forniti da systrace possono aiutarti a ispezionare i processi di sistema nativi e risolvere i problemi relativi a frame interrotti o in ritardo.

    Sui dispositivi con Android 9 (livello API 28) o versioni successive, puoi utilizzare un'app di sistema denominata System Tracciamento per registrare le tracce di sistema su un dispositivo.

Creare, modificare o visualizzare la configurazione di una registrazione

Puoi creare, modificare e visualizzare le configurazioni di registrazione nella finestra di dialogo Configurazioni di registrazione CPU, che puoi aprire selezionando Modifica configurazioni dal menu a discesa delle configurazioni di registrazione nella parte superiore del Profiler CPU.

Per visualizzare le impostazioni di una configurazione di registrazione esistente, selezionala nel riquadro a sinistra della finestra di dialogo CPU Recording Configurations (Configurazioni di registrazione CPU).

Per creare una nuova configurazione di registrazione:

  1. Fai clic su Aggiungi in alto a sinistra della finestra di dialogo. Viene creata una nuova configurazione con alcune impostazioni predefinite.
  2. Assegna un nome alla configurazione.
  3. Seleziona una tecnologia di traccia.
  4. Per le configurazioni di registrazioni campionate, specifica l'intervallo di campionamento in microsecondi (μs). Questo valore rappresenta il tempo tra ogni esempio dello stack di chiamate della tua app. Più breve è l'intervallo specificato, più velocemente raggiungi il limite di dimensione del file per i dati registrati.
  5. Specifica il Limite di dimensioni del file in megabyte (MB) per i dati registrati scritti sul dispositivo connesso. Quando interrompi la registrazione, Android Studio analizza questi dati e li visualizza nella finestra del profiler. Pertanto, se aumenti il limite e registri una grande quantità di dati, Android Studio impiega molto più tempo per analizzare il file e potrebbe non rispondere più.

    Nota: se utilizzi un dispositivo connesso con Android 8.0 (livello API 26) o versioni successive, non sono previsti limiti alle dimensioni dei file di traccia e questo valore viene ignorato. Devi però comunque fare attenzione alla quantità di dati raccolti dal dispositivo dopo ogni registrazione: Android Studio potrebbe avere difficoltà ad analizzare file di traccia di grandi dimensioni. Ad esempio, se stai registrando una traccia campionata con un breve intervallo di campionamento o una traccia strumentata mentre l'app chiama molti metodi in breve tempo, verranno generati rapidamente file di traccia di grandi dimensioni.

  6. Per accettare le modifiche e continuare ad apportare modifiche ad altre configurazioni, fai clic su Applica. Per accettare tutte le modifiche applicate e chiudere la finestra di dialogo, fai clic su OK.

Registra l'attività della CPU con l'API Debug

Puoi utilizzare l'API Debug per consentire alla tua app di avviare e interrompere la registrazione dell'attività della CPU nel Profiler CPU.

Il Profiler CPU inizia a registrare quando la tua app chiama startMethodTracing(String tracePath), mentre il Profiler CPU interrompe la registrazione quando la tua app chiama stopMethodTracing(). Durante la registrazione dell'attività della CPU attivata utilizzando questa API, il profiler CPU mostra l'API Debug come configurazione di registrazione della CPU attiva.

Per controllare la registrazione dell'attività della CPU con l'API Debug, esegui il deployment dell'app instrumentata su un dispositivo con Android 8.0 (livello API 26) o versioni successive. La registrazione avviata tramite API è supportata nelle app profilabili, ma i profiler Android Studio richiedono un'app di cui è possibile eseguire il debug per visualizzare lo stato della registrazione nell'interfaccia utente.

Importante: l'API Debug è destinata a essere utilizzata separatamente da altri mezzi per avviare e arrestare la registrazione dell'attività della CPU, ad esempio i pulsanti nella Graphic User Interface di CPU Profiler e l'impostazione nella configurazione della registrazione per la registrazione automatica all'avvio dell'app.

A causa del limite di dimensione del buffer di 8 MB, il metodo startMethodTracing(String tracePath) nell'API Debug è progettato per intervalli brevi o per scenari in cui è difficile avviare/interrompere la registrazione manualmente. Per periodi di registrazione più lunghi, usa l'UI del profiler in Android Studio.

Per maggiori informazioni, consulta Generare log di traccia mediante la strumentazione dell'app.

Registra l'attività della CPU durante l'avvio dell'app

Per iniziare a registrare automaticamente l'attività della CPU durante l'avvio dell'app:

  1. Seleziona Esegui > Modifica configurazioni.
  2. Nella scheda Profilazione, seleziona la casella accanto a Avvia la registrazione di una traccia del metodo all'avvio.
  3. Seleziona una configurazione di registrazione della CPU dal menu.
  4. Fai clic su Applica.
  5. Esegui il deployment della tua app su un dispositivo con Android 8.0 (livello API 26) o versioni successive selezionando Esegui > Profilo.