Je hebt de lijst afgewerkt. Er draait niets, de temperaturen zijn in orde, de schijf is snel, de game staat op een SSD, en de machine schokt nog steeds. Taakbeheer laat een systeem zien dat niets doet. De frametime-grafiek laat het late frame zien maar zegt niets over waarom het te laat was.
Er is één oorzaak die precies deze vorm verklaart, en die is onzichtbaar in elk hulpmiddel waar de meeste mensen naar grijpen, omdat hij eronder gebeurt.
Eerst de eerlijke zin. De oplossing voor een stuurprogramma dat een kern vasthoudt, is dat stuurprogramma, van de fabrikant. Het deel van w0a is de meting, de bestandsnaam en het herstellen van waarden die oudere programma's hebben achtergelaten. De enige schakelaar die het hier vroeger aanbood, de interrupts van een apparaat naar gekozen kernen sturen, is sinds 8 oktober 2026 alleen-lezen, omdat geen enkele A/B-test in een game ooit een frame liet zien dat erdoor werd gewonnen.
Wat er werkelijk gebeurt
Een apparaat — een netwerkkaart, een schijfcontroller, een geluidschip, een USB-controller — heeft de aandacht van de processor nodig. Het geeft een interrupt af, en Windows draait meteen de interrupt service routine van het stuurprogramma. Die routine draait boven elke threadprioriteit die er is: niet "hoge prioriteit", maar volledig buiten de threadplanner om. Er kan niets anders op die kern worden ingepland tot hij terugkeert.
Omdat dat een dure plek is om te zijn, horen stuurprogramma's daar het minimale te doen en de rest uit te stellen naar een uitgestelde aanroep — een DPC — die een moment later draait, nog steeds vóór elke thread op die kern.
Zolang een van beide draait, tekent die kern niets en leest hij geen invoer. Zat je renderthread erop, dan is je frame te laat. Stond je muisrapport erachter in de wachtrij, dan is je invoer te laat. En geen van beide gebeurtenissen duikt in een taakbeheerder op, want er is geen proces om ze aan toe te schrijven.
Waarom een milliseconde hier veel is
Het rekenwerk is wat dit de moeite van het najagen waard maakt:
- Bij een pollrate van 1000 Hz komt er elke milliseconde een rapport binnen. Een vasthoudtijd van 1 ms kost een rapport.
- Bij 240 Hz duurt een frame 4,2 ms. Een vasthoudtijd van 1 ms is ongeveer een kwart van het budget van een frame, aan niets besteed.
- Vanaf 4 ms kan de machine geen stabiele frametijd vasthouden, wat je verder ook verandert — en daarom hoort dit vóór elk ander punt op je lijst, niet erna.
Het meten, en de twee manieren waarop de meting mislukt
De Latencytest van w0a opent een kerneltracesessie en legt twaalf seconden lang, tijdens echte muisbeweging, vast hoe lang elk stuurprogramma een kern vasthield. Hij heeft beheerdersrechten nodig. Waarom de test twaalf seconden muisbeweging vraagt gaat over de lengte; De latencytest lezen gaat over de kleuren.
Twee uitslagen zijn geen antwoord, en beide worden ook zo gemeld in plaats van naar "schoon" te worden afgerond:
- De sessie kon niet worden geopend. Een anti-cheatdriver kan kerneltracing voor zichzelf hebben opgeëist. Sluit de game en meet opnieuw.
- De sessie ging open en leverde niets op. Geen draaiend Windows heeft nul stuurprogramma-uitvoeringen in twaalf seconden, dus dit is een meting die niet heeft plaatsgevonden. Voer hem opnieuw uit.
Er is een derde, subtielere: een sessie die gebeurtenissen heeft laten vallen kan de ergste uitvoering helemaal hebben gemist, en daarom zegt de pagina dat het getal misschien niet het echte maximum is. Dit is hetzelfde principe dat de stotterscan overal toepast — een regel die niet kon draaien telt als niet gecontroleerd, nooit als schoon.
De getallen, precies
| Getal | De regel |
|---|---|
| Duur van de test | Standaard twaalf seconden: lang genoeg om een stuurprogramma te betrappen dat één keer per seconde misgaat, en kort genoeg dat je de muis echt de hele tijd blijft bewegen. |
| Genoeg muisgegevens | Twee seconden van de eigen rapporten van het apparaat, en nooit minder dan 250 metingen; voor een muis van 1000 Hz is dat 2.000. Daaronder is het 99e percentiel de op een na of op twee na slechtste meting, geen statistiek. |
| Oordeel over het stuurprogramma | De slechtste enkele uitvoering van een stuurprogramma wordt vanaf 1 ms als waarschuwing gemarkeerd en vanaf 4 ms als kritiek. Dat zijn de grenzen die dit vakgebied al twintig jaar gebruikt; ze zijn een afspraak, geen meting die w0a op jouw machine heeft gedaan. |
| Een volledige meting | De getallen van de stuurprogramma's tellen alleen als volledig wanneer de kerneltracesessie heeft gedraaid en geen gebeurtenissen heeft laten vallen. Een teller die weigert te antwoorden, wordt behandeld als een run met verlies, niet als een schone. |
| Ondergrens systeem | Het 99e percentiel van de muis, plus een half verversingsinterval, plus de slechtste uitvoering van een stuurprogramma — dat laatste alleen als het kerneldeel is gemeten, want nul optellen voor een niet-gemeten kernel zou een mooier getal tonen precies wanneer het hulpmiddel het minst weet. Het is een ondergrens, nooit een totaal: de eigen invoerbemonstering van de game, de renderwachtrij, het werk van de GPU en de reactie van het paneel vallen er allemaal buiten. De invoervertraging die geen software oplost is de rest van de keten. |
De lijst lezen
Elk stuurprogramma verschijnt met zijn bestandsnaam, zijn langste enkele vasthoudtijd, zijn aandeel in de gemeten tijd, en hoe vaak het heeft gedraaid. Sorteer op langste vasthoudtijd; dat is het getal dat je een frame kost.
Twee dingen die mensen verkeerd lezen:
- Een oranje regel is geen probleem dat je moet oplossen. Het is een kandidaat. Zonder klacht verklaart hij niets, en heel wat gezonde machines hebben er een.
- Een lange interrupthandler is erger dan een even lange uitgestelde aanroep. Tijdens een uitgestelde aanroep kunnen andere interrupts nog worden afgehandeld; tijdens een interrupthandler komt er op die kern helemaal niets meer tussen. De pagina markeert het wanneer het ergste geval van een stuurprogramma een interrupt was.
Welk bestand bij wat hoort, en wat je aan elk doet
De bestandsnaam is de hele aanwijzing, en de familie waar hij bij hoort bepaalt de oplossing:
| Familie | Wat het is | Wat werkelijk helpt |
|---|---|---|
| Draadloos netwerk | De driver van de wifi-adapter | De eigen driver van de fabrikant in plaats van de generieke die Windows Update levert. Een kabel haalt de regel helemaal weg. |
| Bekabeld netwerk | Netwerkkaart op het moederbord of een insteekkaart | De driver van de moederbordfabrikant. Interruptmoderatie uitzetten verhelpt deze regel niet: zonder moderatie worden pakketten niet meer gebundeld, geeft elk ontvangen pakket een eigen interrupt en draait de driver niet minder vaak, maar vaker. Daarom laat de pagina Verbinding interruptmoderatie met rust op machines met minder dan zes fysieke kernen — zie Netwerk-tweaks. |
| Opslag | De controller op het pad naar je schijf | Probeer op NVMe de eigen driver van Windows en die van de fabrikant, en houd de driver die in de latencytest lager uitkomt. Een opslagdriver van derden is het weghalen waard. |
| USB | Hostcontroller | Chipsetdrivers, en de muis verplaatsen naar een poort op het moederbord in plaats van achter een hub. |
| Audio | De codec, en alles wat erbovenop is gelegd | De driver van de fabrikant; blijft het, dan verlaagt de generieke audiodriver van Windows het meestal. RGB- en audiohulpprogramma's draaien over dit pad. |
| Beeldscherm | De GPU-driver | De site van de fabrikant zelf. Begon het na een update, ga dan terug naar de vorige versie. |
| Windows' eigen onderdelen | Tijd die namens een ander stuurprogramma is besteed | Op zichzelf niets om bij te werken — de stuurprogramma's hierboven oplossen verlaagt deze regel ook. |
| Energiebeheer | Het pad dat klok- en rusttoestanden wijzigt | De minimale processorstatus verhogen en de C-state-diepte in de firmware verlagen korten het allebei in, en verhogen allebei het verbruik in rust. Dat is een ruil, geen oplossing. |
Een filterstuurprogramma verdient hier een eigen regel. Programma's die verkeer vormgeven of verbindingen omleiden, sturen elk pakket door een eigen driver, en netwerkhaperingen van meerdere seconden zijn hun bekendste bijwerking; de stotterscan noemt ze bij naam als hij ze vindt. Hetzelfde geldt voor macropakketten en verlichtingsprogramma's die een filter in het pad van muis en toetsenbord installeren.
De oplossing, en de niet-oplossingen
De oplossing is dat ene stuurprogramma bijwerken, bij de hardwarefabrikant. Niet het hele systeem, niet met een driver-updatertool, en niet door Windows opnieuw te installeren. De pagina noemt het bestand precies, zodat je kunt opzoeken bij welk apparaat het hoort.
Wat dit niet oplost, en om die reden hier wordt geweigerd: het overschrijven van de timerresolutie, kernelwaarden voor geheugenbeheer (DisablePagingExecutive, LargeSystemCache), en de registerlijsten die onder het woord "latency" rondgaan. Geen daarvan verandert hoe lang een stuurprogramma een kern vasthoudt, want het is de code van dat stuurprogramma die vasthoudt. Apparaten lukraak uitschakelen is ook geen diagnose — al is één apparaat bij wijze van test uitschakelen, met een meting ervoor en erna, een prima experiment. Hetzelfde geldt voor de waarden op apparaatniveau die samen met deze lijsten rondgaan: MSISupported wisselt de interruptmodus van een apparaat, en verkeerd gezet kan het resultaat een zwart scherm zijn, dus w0a schrijft hem nooit, en de reparatiekaart voor de interruptsturing hieronder laat hem met rust.
De twee instellingen in de buurt die w0a aanraakt
Interruptbeleid van een apparaat: alleen-lezen, met een reparatiekaart
Waar Windows het bewaart: per apparaat, onder HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\<device>\<instance>\Device Parameters\Interrupt Management\Affinity Policy. DevicePolicy (DWORD) kiest hoe de interrupts van het apparaat worden geplaatst; staat die op 4, "opgegeven processors", dan is AssignmentSetOverride het masker van de processors die ze mogen gebruiken.
Windows-standaard: geen van beide waarden is aanwezig. Windows berekent de plaatsing dan zelf, en Microsoft raadt het standaardbeleid aan overal waar het van toepassing is.
Wat w0a doet: het leest deze waarden en schrijft ze niet. Sinds 8 oktober 2026 is de sturing die het vroeger vanaf de pagina Latencytest aanbood verdwenen, om drie redenen: geen enkele A/B-test in een game liet een frame zien dat erdoor werd gewonnen, Microsoft raadt de plaatsing aan die Windows berekent, en een verkeerd masker is een apparaat dat niet start.
Terug: heeft een programma de interrupts van een apparaat vastgepind en is er iets stukgegaan — een muis die wegvalt, een "Code 10" in Apparaatbeheer —, dan verwijdert de kaart Interruptsturing van apparaten beide waarden van elk PCI-apparaat, ook de sturing die oudere versies van w0a hebben achtergelaten. Hij vraagt alleen om een herstart als hij echt iets heeft verwijderd, en hij laat MSISupported met rust.
"Onder belasting: flow control, interrupt moderation en segmentsamenvoeging uit" (pagina Verbinding)
Wat het schrijft: 0 in het sleutelwoord *FlowControl van de netwerkadapter, op elke adapter die het opgeeft. *InterruptModeration, *RscIPv4 en *RscIPv6 worden alleen geschreven op machines met minstens zes fysieke kernen, en alleen op adapters waarvan bekend is dat ze onder 2,5 Gbit/s draaien; op die machines zet het vakje ook de segmentsamenvoeging op het niveau van de netwerkstack uit, tenzij die al uit staat.
Waarom de moderatie op kleinere machines aan blijft: met moderatie en samenvoeging allebei uit wordt elk ontvangen pakket een eigen interrupt in plaats van één per moderatie-interval, en de last van uitgestelde aanroepen komt terecht op de kern die ontvangt. Interruptmoderatie uitzetten is dus geen manier om de regel van het netwerkstuurprogramma in de Latencytest korter te maken: volgens de eigen beschrijving van w0a haalt het de wachttijd van tientallen tot honderden microseconden weg die een pakket in de adapter doorbrengt tot de timer van de bundel afloopt, en voegt het een interrupt per pakket toe. Het effect ervan op de lijst met stuurprogramma's is niet gemeten. Is het netwerkstuurprogramma jouw regel, voer de test dan uit met het vakje toegepast en zonder.
Wat het vakje zelf belooft: microseconden, bij de ping onder belasting. De melding ervan zegt dat de gemiddelde ping niet verandert.
Wanneer het ingaat: wanneer de adapter opnieuw start; w0a vraagt om een herstart zodra het iets heeft geschreven.
Terug: de kaart Offloads van de netwerkadapter zet de hardware-offloads, interruptmoderatie, Energy Efficient Ethernet, selectieve onderbreking en ontvangstbuffers terug op de standaarden van het stuurprogramma zelf, zoals het stuurprogramma ze opgeeft.
Controleer het zelf
Deze opdrachten lezen alleen. In de opdrachtprompt of in PowerShell:
reg query "HKLM\SYSTEM\CurrentControlSet\Enum\PCI" /s /v DevicePolicy
reg query "HKLM\SYSTEM\CurrentControlSet\Enum\PCI" /s /v AssignmentSetOverride
Een antwoord dat zegt dat de zoekactie zonder enige overeenkomst eindigde (in een Engelstalige Windows End of search: 0 match(es) found.), betekent dat geen enkel apparaat een overschrijving heeft: de Windows-standaard. Een overeenkomst wordt getoond onder de sleutel waarin ze is gevonden, en het PCI-deel van dat pad wijst het apparaat aan.
In PowerShell, voor de netwerkadapter:
Get-NetAdapterAdvancedProperty -Name "*" -RegistryKeyword "*FlowControl","*InterruptModeration","*RscIPv4","*RscIPv6" -AllProperties
Dit toont per adapter de huidige instelling van de vier sleutelwoorden die het vakje op de pagina Verbinding kan schrijven. Een adapter die voor een sleutelwoord niet verschijnt, geeft het niet op, en het vakje schrijft daar niets.
Meet daarna opnieuw
Dezelfde methode, dezelfde twaalf seconden, dezelfde machine. De pagina vergelijkt met je vorige run en meldt een verandering onder 5% als geen verandering in plaats van als verbetering, want twee runs op een onaangeroerde machine verschillen sowieso een paar procent — een hand beweegt elke keer anders.
Is de regel van het stuurprogramma gedaald en het gestotter niet, dan heb je iets echts geleerd: dit was je oorzaak niet, en Waarom games stotteren op Windows 11 heeft de rest van de lijst. Heb je een framerate die daalt en laag blijft in plaats van een schok, dan was het dit nooit — Plotselinge FPS-drops in games is dan de lijst die je nodig hebt.
Gerelateerd
- De latencytest lezen
- Waarom games stotteren op Windows 11
- Input lag verminderen: wat software kan verkorten en wat niet
- Wat de stotterscan zoekt
- Waarom de test twaalf seconden muisbeweging vraagt
- Netwerk-tweaks
Speel je CS2? Welke startopties nog iets doen en waar de frames in het videomenu werkelijk zitten: Lage FPS en gestotter in CS2: een gemeten checklist
Heeft deze pagina geholpen?
Wat ontbrak, of wat werkte er niet? We lezen elk van deze berichten.
Heeft deze pagina het niet opgelost, schrijf ons dan — noem het artikel dat je hebt gelezen, dan verbeteren we het.