Woordenlijst/CPU, GPU en energie

Threads

Ook: aantal threads

Kort antwoord

Een thread is een aparte uitvoeringslijn binnen een proces, en een proces kan meerdere threads tegelijk op verschillende CPU-cores laten draaien. De kolom Threads in Activiteitenweergave laat zien hoeveel threads elk proces op dit moment heeft.

De meeste apps gebruiken veel threads: één om de interface te tekenen en klikken af te handelen, en andere voor netwerkverzoeken, bestandstoegang en werk op de achtergrond. Tientallen threads is normaal voor een grote app.

Het aantal threads zegt weinig over hoe druk een app is. De meeste threads zijn vooral aan het wachten. % CPU is een betere maat voor het werk dat echt gebeurt.

Waar je het aantal threads ziet

Klik in Activiteitenweergave op het tabblad CPU. De kolom Threads toont het aantal per proces, en onder in het venster zie je het totale aantal threads en processen op de Mac.

In Terminal toont ps -M -p <PID> de threads van één proces.

Wanneer een groeiend aantal threads ertoe doet

Een aantal threads dat urenlang blijft stijgen zonder af te vlakken, kan wijzen op een bug waarbij een app threads start en nooit beëindigt. Groeit die app ook in geheugen of wordt hij trager, dan is hem herstarten een redelijke eerste stap, en het helpt om het aan de ontwikkelaar te melden.

Waarom sommige apps honderden threads hebben

macOS geeft apps via Grand Central Dispatch een gedeelde pool van werkthreads. Geeft een app veel kleine taken uit handen, zoals afbeeldingen decoderen of bestanden lezen, dan kan de pool groeien om ze af te handelen en later weer krimpen. Dat alleen kan al tientallen threads toevoegen aan een drukke app.

Browsers, chatapps en code-editors draaien vaak meerdere processen, elk met eigen threads voor tekenen, netwerk, audio en scripts. Audio- en video-apps houden threads klaar, zodat het afspelen nooit hoeft te wachten. Tel dat op en een paar honderd threads in één grote app is niet ongewoon.

kernel_task toont vaak het hoogste aantal van allemaal. Het bevat de threads die de kernel van macOS en zijn drivers gebruiken, en dat is geen teken van een probleem.

Zo controleer je het aantal threads van één app

  1. Selecteer in Activiteitenweergave het proces en dubbelklik erop, of klik op de knop Info in de knoppenbalk.
  2. Het infovenster toont Threads, samen met Poorten en Context switches voor dat proces.
  3. Voer in Terminal top -l 1 -pid <PID> -stats pid,command,th uit en vervang <PID> door de proces-ID uit de kolom PID. De waarde #TH toont het totale aantal threads, en na de schuine streep de draaiende threads.
  4. Voer top -o th -stats pid,command,th uit om elk proces op aantal threads te sorteren, en druk op q om te stoppen.

Normale en zorgwekkende aantallen threads

Het totaal zegt minder dan de richting waarin het zich in de loop van de tijd beweegt.

  • Normaal: het aantal springt omhoog als je vensters opent, een download start of een export begint, en zakt weer als het werk klaar is.
  • Normaal: een stabiel, hoog aantal dat urenlang ongeveer gelijk blijft.
  • Zorgwekkend: een aantal dat de hele dag stijgt en nooit daalt, ook als de app niets doet.
  • Zorgwekkend: een stijgend aantal threads samen met groeiend geheugen of een groeiend aantal Poorten. Die combinatie wijst meestal op een lek in de app.
  • Zorgwekkend: veel draaiende threads, te zien na de schuine streep in top, in een app die je niet gebruikt. Hij doet werk waar je niet om hebt gevraagd.

Threads en CPU-cores

Meer threads dan cores is normaal. macOS wisselt cores vele keren per seconde tussen threads, en de meeste threads wachten toch. Alleen draaiende threads strijden om een core.

Het aantal threads dat op hetzelfde moment kan draaien, is gelijk aan je aantal logische cores uit sysctl -n hw.logicalcpu. Staan er meer threads klaar, dan wachten de rest, en dat wachten is wat de load average opdrijft.

Vragen die mensen stellen

Wat betekent Threads in Activiteitenweergave?

Het is het aantal threads dat een proces draait. Met threads kan één app meerdere dingen tegelijk doen, zoals zijn venster tekenen terwijl hij een bestand downloadt.

Is een hoog aantal threads slecht?

Meestal niet. Grote apps hebben vaak tientallen of honderden threads, en de meeste doen niets. Let op een aantal dat blijft groeien zonder te stoppen.

Wat hebben threads te maken met % CPU boven de 100?

Een proces kan alleen meer dan één core gebruiken als het meer dan één thread tegelijk laat werken. Zo komt % CPU boven de 100%.

Hoeveel threads kan een Mac tegelijk draaien?

Eén per logische core op hetzelfde moment. Voer sysctl -n hw.logicalcpu uit om het aantal te zien. Er kunnen er duizenden meer bestaan, maar die wisselen elkaar af.

Maakt het stoppen van een app zijn threads vrij?

Ja. Als een proces eindigt, eindigen al zijn threads mee. Een app herstarten is de snelste manier om een aantal threads dat te hoog is opgelopen terug te zetten.

Waarom heeft kernel_task zoveel threads?

kernel_task is de kernel van macOS, en zijn threads omvatten die van de kernel en zijn drivers. Een hoog aantal is daar normaal.

Gerelateerd

Op zoek naar iets beters dan Activiteitenweergave? Bekijk de beste alternatieven voor Activiteitenweergave op de Mac, of blader door alle begrippen in de woordenlijst.