Ordlista/CPU, GPU och energi

Trådar

Andra namn: antal trådar, threads

Kort svar

En tråd är ett separat körflöde inne i en process, och en process kan köra flera trådar samtidigt på olika processorkärnor. Kolumnen Trådar i Aktivitetskontroll visar hur många trådar varje process har just nu.

De flesta appar använder många trådar: en för att rita gränssnittet och hantera klick, och andra för nätverksförfrågningar, filåtkomst och bakgrundsarbete. Ett trådantal på några dussin är normalt för en stor app.

Antalet trådar säger lite om hur upptagen en app är. De flesta trådar tillbringar tiden med att vänta. % processor är ett bättre mått på verkligt arbete.

Var du ser antalet trådar

Klicka på fliken Processor i Aktivitetskontroll. Kolumnen Trådar visar antalet per process, och längst ned i fönstret visas det totala antalet trådar och processer på datorn.

I Terminal listar ps -M -p <PID> trådarna i en enskild process.

När ett växande trådantal spelar roll

Ett trådantal som fortsätter att öka i timmar utan att plana ut kan tyda på en bugg där en app startar trådar och aldrig avslutar dem. Om appen också växer i minne eller blir långsammare är det rimligt att börja med att starta om den, och det hjälper att rapportera det till utvecklaren.

Varför vissa appar har hundratals trådar

macOS ger appar en delad pool av arbetstrådar via Grand Central Dispatch. När en app lämnar över många små uppgifter, som att avkoda bilder eller läsa filer, kan poolen växa för att hantera dem och krympa igen senare. Bara det kan lägga till dussintals trådar i en upptagen app.

Webbläsare, chattappar och kodredigerare kör ofta flera processer, var och en med egna trådar för ritning, nätverk, ljud och skript. Ljud- och videoappar håller trådar redo så att uppspelningen aldrig behöver vänta. Lägg ihop det, och några hundra trådar i en stor app är inte ovanligt.

kernel_task visar ofta det högsta antalet av alla. Den innehåller trådarna som kärnan i macOS och dess drivrutiner använder, och det är inte ett tecken på problem.

Så kontrollerar du antalet trådar i en app

  1. Markera processen i Aktivitetskontroll och dubbelklicka på den, eller klicka på infoknappen i verktygsfältet.
  2. Infofönstret visar Trådar tillsammans med Portar och Kontextbyten för processen.
  3. Kör top -l 1 -pid <PID> -stats pid,command,th i Terminal och byt ut <PID> mot process-ID:t från kolumnen PID. Värdet #TH visar det totala antalet trådar och sedan, efter snedstrecket, trådarna som körs.
  4. Om du vill sortera alla processer efter antal trådar kör du top -o th -stats pid,command,th och trycker på q för att avsluta.

Normala och oroande trådantal

Summan spelar mindre roll än åt vilket håll den rör sig över tid.

  • Normalt: antalet hoppar upp när du öppnar fönster, startar en hämtning eller påbörjar en export, och sjunker igen när arbetet är klart.
  • Normalt: ett jämnt, högt antal som ligger ungefär still i timmar.
  • Oroande: ett antal som ökar hela dagen och aldrig sjunker, även när appen är overksam.
  • Oroande: ett växande trådantal tillsammans med växande minne eller ett växande antal Portar. Den kombinationen pekar oftast på en läcka i appen.
  • Oroande: många trådar som körs, visade efter snedstrecket i top, i en app som du inte använder. Den utför arbete som du inte har bett om.

Trådar och processorkärnor

Det är normalt att ha fler trådar än kärnor. macOS växlar kärnorna mellan trådar många gånger i sekunden, och de flesta trådar väntar ändå. Bara trådar som körs konkurrerar om en kärna.

Antalet trådar som kan köras i samma ögonblick är lika med antalet logiska kärnor från sysctl -n hw.logicalcpu. Om fler trådar är redo än så får de extra vänta, och det är den väntan som höjer den genomsnittliga belastningen.

Frågor som folk ställer

Vad betyder Trådar i Aktivitetskontroll?

Det är antalet trådar som en process kör. Trådar låter en app göra flera saker samtidigt, som att rita sitt fönster medan den hämtar en fil.

Är ett högt antal trådar dåligt?

Oftast inte. Stora appar har ofta dussintals eller hundratals trådar, och de flesta är overksamma. Det mönster du ska hålla utkik efter är ett antal som växer utan att stanna.

Hur hänger trådar ihop med % processor över 100?

En process kan bara använda mer än en kärna när den har mer än en tråd som arbetar samtidigt. Det är så % processor går över 100 %.

Hur många trådar kan en Mac köra samtidigt?

En per logisk kärna i samma ögonblick. Kör sysctl -n hw.logicalcpu för att se antalet. Tusentals fler kan finnas, men de turas om.

Frigörs en apps trådar när jag avslutar den?

Ja. När en process avslutas avslutas alla dess trådar med den. Att starta om en app är det snabbaste sättet att nollställa ett trådantal som har vuxit för mycket.

Varför har kernel_task så många trådar?

kernel_task är kärnan i macOS, och dess trådar omfattar dem som kärnan och dess drivrutiner använder. Ett högt antal där är normalt.

Relaterat

Letar du efter något bättre än Aktivitetskontroll? Läs om de bästa alternativen till Aktivitetskontroll för Mac, eller bläddra bland alla begrepp i ordlistan.