Thread
Anche: numero di thread
In breve
Un thread è una linea di esecuzione separata dentro un processo, e un processo può eseguire più thread contemporaneamente su core diversi. La colonna Thread di Monitoraggio Attività mostra quanti thread ha ogni processo in questo momento.
Quasi tutte le app usano molti thread: uno per disegnare l’interfaccia e gestire i clic, altri per le richieste di rete, l’accesso ai file e il lavoro in background. Qualche decina di thread è normale per un’app grande.
Il numero di thread dice poco su quanto un’app sia impegnata. Quasi tutti i thread passano il tempo ad aspettare. % CPU misura meglio il lavoro reale.
Dove vedere il numero di thread
In Monitoraggio Attività, fai clic sul pannello CPU. La colonna Thread mostra il numero per ogni processo, e in fondo alla finestra trovi il totale di thread e processi sul Mac.
Nel Terminale, ps -M -p <PID> elenca i thread di un singolo processo.
Quando conta un numero di thread in crescita
Un numero di thread che continua a salire per ore, senza stabilizzarsi, può indicare un bug per cui un’app avvia thread e non li chiude mai. Se quell’app cresce anche in memoria o rallenta, riavviarla è un buon primo passo, e segnalarlo allo sviluppatore aiuta.
Perché alcune app hanno centinaia di thread
macOS dà alle app un gruppo condiviso di thread di lavoro tramite Grand Central Dispatch. Quando un’app affida molte piccole attività, come decodificare immagini o leggere file, il gruppo può crescere per gestirle e poi ridursi. Già questo può aggiungere decine di thread a un’app impegnata.
Browser, app di chat ed editor di codice eseguono spesso più processi, ognuno con i suoi thread per il disegno, la rete, l’audio e gli script. Le app audio e video tengono thread pronti perché la riproduzione non debba mai aspettare. Sommando tutto, qualche centinaio di thread in una grande app non è strano.
kernel_task mostra spesso il numero più alto di tutti. Contiene i thread usati dal kernel di macOS e dai suoi driver, e non è segno di un problema.
Come controllare il numero di thread di una sola app
- In Monitoraggio Attività, seleziona il processo e fai doppio clic, oppure fai clic sul pulsante Informazioni nella barra strumenti.
- La finestra di informazioni elenca Thread insieme a Porte e Commut. contesto per quel processo.
- Nel Terminale, esegui
top -l 1 -pid <PID> -stats pid,command,th, sostituendo <PID> con l’ID del processo preso dalla colonna PID. Il valore #TH mostra il totale dei thread, poi quelli in esecuzione dopo la barra. - Per ordinare tutti i processi per numero di thread, esegui
top -o th -stats pid,command,the premi q per uscire.
Numero di thread normale e preoccupante
Il totale conta meno della direzione in cui si muove nel tempo.
- Normale: il numero salta quando apri finestre, avvii un download o un’esportazione, poi riscende quando il lavoro è finito.
- Normale: un numero alto e stabile, che resta più o meno uguale per ore.
- Preoccupante: un numero che sale tutto il giorno e non scende mai, anche quando l’app è inattiva.
- Preoccupante: un numero di thread in crescita insieme a memoria o a Porte in crescita. Quella combinazione di solito indica una perdita di memoria nell’app.
- Preoccupante: molti thread in esecuzione, indicati dopo la barra in
top, in un’app che non stai usando. Sta facendo un lavoro che non le hai chiesto.
Thread e core della CPU
Avere più thread che core è normale. macOS passa i core da un thread all’altro molte volte al secondo, e quasi tutti i thread sono comunque in attesa. Solo i thread in esecuzione si contendono un core.
Il numero di thread che possono girare nello stesso istante è pari al numero di core logici ottenuto con sysctl -n hw.logicalcpu. Se ci sono più thread pronti, quelli in più aspettano, ed è quell’attesa che alza il carico medio.
Domande frequenti
Cosa significa Thread in Monitoraggio Attività?
È il numero di thread che un processo sta eseguendo. I thread permettono a un’app di fare più cose insieme, come disegnare la finestra mentre scarica un file.
Un numero alto di thread è un problema?
Di solito no. Le app grandi hanno spesso decine o centinaia di thread, e quasi tutti sono inattivi. Il segnale da tenere d’occhio è un numero che cresce senza fermarsi.
Che rapporto c’è tra i thread e % CPU oltre il 100?
Un processo può usare più di un core solo quando ha più di un thread al lavoro nello stesso momento. È così che % CPU supera il 100%.
Quanti thread può eseguire un Mac contemporaneamente?
Uno per core logico nello stesso istante. Esegui sysctl -n hw.logicalcpu per vedere il numero. Ne possono esistere migliaia in più, ma si danno il turno.
Chiudere un’app libera i suoi thread?
Sì. Quando un processo termina, tutti i suoi thread terminano con lui. Riavviare un’app è il modo più rapido per azzerare un numero di thread cresciuto troppo.
Perché kernel_task ha così tanti thread?
kernel_task è il kernel di macOS, e i suoi thread comprendono quelli usati dal kernel e dai suoi driver. Un numero alto lì è normale.
Correlati
Cerchi qualcosa di meglio di Monitoraggio Attività? Leggi le migliori alternative a Monitoraggio Attività per Mac, oppure sfoglia tutti i termini del glossario.