Je hebt een processor met zestien cores, maar je game gebruikt er maar vier — en Windows plant je render-taak doodleuk op precies diezelfde cores. Het resultaat: haperingen, lagere framerates en een systeem dat trager aanvoelt dan de specificaties beloven. CPU-pinning, ook wel processoraffiniteit genoemd, lost dit op door taken handmatig aan specifieke cores toe te wijzen. In dit artikel leer je wat CPU-pinning is, wanneer het verschil maakt en hoe je het in Windows en Linux instelt.
Wat is CPU-pinning precies?
Elke moderne processor bestaat uit meerdere cores, en het besturingssysteem beschikt over een scheduler die bepaalt welke thread op welke core draait. Normaal gesproken doet die scheduler zijn werk uitstekend: hij verdeelt de belasting, houdt rekening met thermische grenzen en parkeert ongebruikte cores om energie te besparen. Toch is de scheduler niet perfect. Hij weet namelijk niets over jouw prioriteiten.
CPU-pinning — in Windows-termen processoraffiniteit — overschrijft die automatische verdeling. Je vertelt het besturingssysteem expliciet: dit proces mag alleen op deze cores draaien. Daarmee voorkom je dat een zware achtergrondtaak, zoals een render of een virusscan, de cores kaapt die je game of je realtime audiotoepassing nodig heeft.
Het begrip komt oorspronkelijk uit de serverwereld, waar beheerders virtuele machines aan fysieke cores koppelen voor voorspelbare prestaties. Maar ook op een desktop of workstation kan pinning verrassend nuttig zijn, vooral bij hybride processors met P-cores en E-cores, waar de scheduler soms de verkeerde keuze maakt.
Wanneer loont CPU-pinning?
Voor de gemiddelde gebruiker die browst, mailt en af en toe een document bewerkt, voegt pinning niets toe. De scheduler is daarvoor ruim goed genoeg. Er zijn echter scenario’s waarin handmatige controle wél merkbaar verschil maakt:
- Gaming terwijl je streamt of opneemt: wijs je game toe aan een set P-cores en je encoder (OBS, bijvoorbeeld) aan de overige cores. Zo bijten ze elkaar niet.
- Realtime audio (DAW’s): muziekproductiesoftware is extreem gevoelig voor latency-pieken. Door je DAW aan geïsoleerde cores te pinnen, voorkom je dat Windows er plots een achtergrondtaak tussen plant.
- Benchmarken en testen: voor reproduceerbare resultaten wil je dat een benchmark altijd op dezelfde cores draait, zonder inmenging van andere processen.
- Virtuele machines: pin een VM aan een vaste set cores, zodat de host en de gast elkaar niet in de weg zitten.
- Oudere software op hybride CPU’s: sommige oudere games of applicaties presteren slechter op E-cores. Pin ze aan P-cores en het probleem is opgelost.
Wanneer kun je het beter laten?
Pinning heeft ook nadelen. Je neemt de scheduler flexibiliteit af: als een gepinde taak meer cores nodig heeft dan je hebt toegewezen, kan hij niet uitwijken en verlies je prestaties. Bovendien moet je bij elke reboot of herstart van de applicatie de instelling vaak opnieuw toepassen, tenzij je een script of tool gebruikt. Zie pinning daarom als een precisie-instrument, niet als een standaardoplossing voor alles.
Zo stel je processoraffiniteit in op Windows
Windows biedt een ingebouwde, zij het wat verborgen, manier om affiniteit in te stellen via Taakbeheer:
- Open Taakbeheer met Ctrl + Shift + Esc en ga naar het tabblad Details.
- Klik met de rechtermuisknop op het proces dat je wilt pinnen en kies Affiniteit instellen.
- Vink de cores aan waarop het proces mag draaien en bevestig met OK.
Let op: deze instelling is tijdelijk en vervalt zodra het proces stopt. Voor een permanente oplossing kun je een snelkoppeling maken met het start-commando. Bijvoorbeeld: start /affinity 3F “C:\Games\game.exe” start een programma met affiniteit voor de eerste zes cores (3F is hexadecimaal voor het bitmasker 00111111). Er bestaan ook gratis tools zoals Process Lasso, die affiniteitsregels automatisch toepassen zodra een proces start — ideaal als je dezelfde configuratie dagelijks gebruikt.
CPU-pinning op Linux
Op Linux is pinning een eersteklas burger dankzij het taskset-commando. Zo start je een applicatie op cores 0 tot en met 3:
taskset -c 0-3 ./mijn-applicatie
Voor een al draaiend proces gebruik je taskset -cp 0-3 [PID], waarbij je met de vlag -p de affiniteit van een bestaand proces wijzigt. Wil je het nog grondiger aanpakken, dan kun je met isolcpus als kernelparameter cores volledig reserveren, zodat de scheduler er helemaal niets meer op plant behalve wat jij expliciet toewijst. Dat is de aanpak die in de wereld van high-frequency trading en professionele audio wordt gebruikt, waar elke microseconde telt.
Systemd-gebruikers kunnen affiniteit ook per service instellen met de richtlijn CPUAffinity= in een unit-bestand — handig voor servers die een database of webserver op vaste cores willen draaien.
Hybride processors: P-cores, E-cores en de scheduler
Sinds Intel met zijn hybride architectuur (P-cores voor prestaties, E-cores voor efficiëntie) en AMD met vergelijkbare concepten experimenteert, is pinning relevanter geworden. De Windows-scheduler gebruikt de Intel Thread Director om threads naar het juiste coretype te sturen, maar die heuristiek is niet feilloos. Vooral oudere games zonder kennis van hybride architecturen belanden soms op E-cores, met merkbaar lagere framerates als gevolg.
De snelste oplossing is dan om in Taakbeheer de affiniteit van zo’n game te beperken tot de P-cores. Controleer eerst met een tool als HWiNFO64 welke logische processors bij de P-cores horen — door hyperthreading heeft elke fysieke P-core twee threads — en vink alleen die aan. Het verschil kan oplopen tot tientallen procenten in 1%-lows, juist de haperingen die je het meest voelt.
Belangrijkste punten
- CPU-pinning (processoraffiniteit) wijst taken handmatig toe aan specifieke cores en overschrijft de automatische scheduler.
- Het loont bij gamen + streamen, realtime audio, benchmarks, virtuele machines en oudere software op hybride CPU’s.
- Op Windows stel je het in via Taakbeheer (tijdelijk) of met het start /affinity-commando en tools als Process Lasso (permanent).
- Op Linux gebruik je taskset; met isolcpus reserveer je cores volledig voor kritieke taken.
- Pin met verstand: te strak pinnen neemt de scheduler flexibiliteit af en kan prestaties juist kosten.
Methoden vergeleken
| Methode | Platform | Permanent? | Moeilijkheidsgraad | Beste gebruik |
|---|---|---|---|---|
| Taakbeheer → Affiniteit instellen | Windows | Nee | Laag | Snelle tests en eenmalige sessies |
| start /affinity in snelkoppeling | Windows | Ja | Gemiddeld | Games of apps die je vaak start |
| Process Lasso | Windows | Ja | Laag | Automatische regels voor meerdere apps |
| taskset | Linux | Per commando | Gemiddeld | Scripts en servers |
| isolcpus kernelparameter | Linux | Ja | Hoog | Realtime audio en HFT-systemen |
| CPUAffinity in systemd | Linux | Ja | Gemiddeld | Services op servers |
Conclusie
CPU-pinning is geen magische snelheidstruc, maar een gericht instrument voor situaties waarin de standaardscheduler tekortschiet. Voor gamers die tegelijk streamen, muzikanten met een DAW en iedereen die reproduceerbare benchmarks wil, kan het het verschil maken tussen een haperende en een vloeiende ervaring. Begin klein — pin één applicatie, meet het effect met een frametime-tool of latency-monitor — en breid pas uit als je echt winst ziet. Zo haal je het maximale uit de cores waar je voor betaald hebt.