Glossario/Quando qualcosa va storto

Campiona processo

Anche: campionare un’app, campione di un processo, Sample Process

In breve

Campiona processo è uno strumento di Monitoraggio Attività che registra cosa fa il processo selezionato per qualche secondo e produce un rapporto di testo su dove i suoi thread passano il tempo. Gli sviluppatori usano questi rapporti per capire perché un’app è lenta, occupata o bloccata.

Apple descrive Campiona processo come la creazione di un rapporto su un processo selezionato nell’arco di 3 secondi. Il rapporto elenca ogni thread e le funzioni che stava eseguendo, con dei conteggi che mostrano quante volte è comparsa ciascuna.

Non devi leggere il rapporto da solo. È utile soprattutto quando un’app è bloccata o usa molta CPU e vuoi mandare allo sviluppatore qualcosa di concreto.

Come campionare un processo in Monitoraggio Attività

Seleziona il processo, poi fai clic sul pulsante Altro (i tre puntini) in alto nella finestra e scegli Campiona processo. Puoi anche fare doppio clic sul processo e fare clic su Campiona nella finestra che si apre.

Quando compare il rapporto, puoi salvarlo come file di testo e allegarlo a una segnalazione di bug o a una richiesta di assistenza.

Come campionare un processo dal Terminale

Esegui sample <PID> 5 per campionare un processo per 5 secondi. Al posto del PID puoi usare parte del nome del processo. Il rapporto viene stampato e salvato in un file, e alla fine viene mostrato il percorso.

Come leggere il rapporto di un campione

Il rapporto inizia con un’intestazione: nome e PID del processo, il suo percorso, il processo padre, il tipo di codice e la versione di macOS. La parte che conta viene dopo, sotto Call graph.

Il call graph elenca ogni thread. Il thread principale, quello che gestisce clic e tasti premuti, è indicato come com.apple.main-thread. Sotto ogni thread, le funzioni sono rientrate per mostrare quale funzione ha chiamato quale. Il numero all’inizio di una riga indica quante volte quella funzione era nello stack quando è stato preso un campione.

  • Segui le righe con i numeri più alti fino al rientro più profondo. È lì che il thread ha passato la maggior parte del tempo.
  • Se le righe più profonde del thread principale sono chiamate di attesa come mach_msg, __psynch_cvwait o __semwait_signal, il thread era bloccato ad aspettare qualcos’altro.
  • Se le righe più profonde sono funzioni dell’app stessa con conteggi alti, il thread era occupato a lavorare.
  • La sezione “Sort by top of stack” verso la fine elenca le funzioni in esecuzione più spesso, un riassunto rapido degli stessi dati.
  • L’elenco Binary Images alla fine indica i framework e le librerie caricati nel processo.

Come salvare un campione in un file dal Terminale

Il comando sample ti dà più controllo di Monitoraggio Attività. La durata predefinita è 10 secondi, e puoi cambiarla.

  1. Apri il Terminale da Applicazioni > Utility.
  2. Trova l’ID del processo con pgrep -lx Safari, sostituendo Safari con il nome del processo.
  3. Esegui sample <PID> 10 -file ~/Desktop/sample.txt mentre il problema è in corso.
  4. Apri il file sulla Scrivania, o allegalo a una segnalazione di bug.

Quando un campione aiuta e quando no

Un campione è un’istantanea di un solo processo. Usalo quando sai già quale app è il problema.

  • Utile: un’app è bloccata, un processo tiene sempre alta la % CPU, o un’app è lenta in un’operazione precisa che puoi ripetere.
  • Meno utile: tutto il Mac è lento e non sai perché. Uno spindump, che copre ogni processo, è più adatto.
  • Inutile: il problema è già passato. Un campione mostra solo cosa è successo mentre era in corso.

Come mandare un campione a uno sviluppatore

Un campione da solo è utile, ma una breve nota lo rende molto più facile da usare.

  1. Prendi il campione mentre l’app è bloccata o occupata, non dopo che si è ripresa.
  2. Salva il rapporto come file di testo invece di copiarne una parte. Gli sviluppatori hanno bisogno di tutto il call graph e dell’elenco Binary Images.
  3. Annota cosa stavi facendo quando è iniziato il problema, per esempio il file che hai aperto o il pulsante su cui hai fatto clic.
  4. Indica la versione dell’app e la tua versione di macOS. Compaiono entrambe anche nell’intestazione del rapporto, accanto a Version e OS Version.
  5. Invialo tramite la pagina di assistenza o il bug tracker dell’app, oppure ad Apple tramite Assistente Feedback se l’app è di Apple.

Domande frequenti

Cosa fa Campiona processo in Monitoraggio Attività?

Registra cosa fa un processo per circa 3 secondi e mostra un rapporto dei suoi thread e del codice che stavano eseguendo. Gli sviluppatori lo usano per diagnosticare blocchi e CPU alta.

Campionare un processo è sicuro?

Sì. Il campionamento osserva soltanto il processo. Non lo modifica e non lo ferma.

Quando conviene campionare un processo?

Campiona mentre il problema è in corso, per esempio quando un’app è bloccata o usa molta CPU. Un campione preso dopo che si è ripresa non mostrerà la causa.

Quanto dura Campiona processo?

In Monitoraggio Attività registra circa 3 secondi. Il comando sample nel Terminale registra 10 secondi di default, oppure il numero di secondi che indichi.

Il rapporto di un campione contiene dati personali?

Contiene il nome del processo, i percorsi dei file e le librerie caricate, e i percorsi possono includere il tuo nome utente. Rileggilo prima di pubblicarlo da qualche parte.

Perché il campione mostra punti interrogativi invece dei nomi delle funzioni?

Per quelle parti dell’app i nomi dei simboli non erano disponibili. Lo sviluppatore può comunque associare gli indirizzi al proprio codice, quindi invia il rapporto così com’è.

Correlati

Cerchi qualcosa di meglio di Monitoraggio Attività? Leggi le migliori alternative a Monitoraggio Attività per Mac, oppure sfoglia tutti i termini del glossario.