Lugger PCen? Slik finner du synderen

Sliter du med avbrudd når du spiller av musikk eller video? Det kan skyldes en dårlig driver.

At PCen i det hele tatt kan vise video og spille av lyd er en blanding av flaks og planlegging. Windows er ikke et operativsystem for hendelser som skjer i sanntid, det er ingen garanti for at de neste dataene fra lyd eller videofilen kommer fram i tide.

Det foregår en kontinuerlig sjonglering med forespørsler fra brukerprogrammer, operativsystem og drivere til maskinvaren. Noen ganger er det tid nok til at alt går greit, men noen ganger lugger det.

Hvorfor det lugger

At det lugger er en populær måte å beskrive at videoen stopper et øyeblikk, at lyden klikker eller begge deler. Det samme skjer også i spill, at du plutselig mister kontakten et øyeblikk, og så får du den plutselig tilbake, men da kanskje med noen ekstra bevegelser først som ble lagret i køen da du i ren refleks ristet på musa for å få tilbake kontrollen.

Når det overføres mediedata i Windows blir dette håndtert av en enhetsdriver som jobber i kernel-modus. Det vil si at den har direkte tilgang til der resurssene blir fordelt, den må ikke jobbe seg gjennom flere lag med forespørseler fra de ytre lag i operativsystemet.

Som regel sender maskinvaren som tar hånd om avspillingen et interrupt, som er et signal om at nå må enheten ha oppmerksomhet, den trenger å sende eller motta data. Men denne henvendelsen skjer ikke umiddelbart, slik som i tidligere operativsystemer der man bare kunne kjøre ett program av gangen.

I Windows NT og etterfølgerne (2K, XP og Vista) er det mange prosesser som skjer hele tiden, og en interrupt får en slags kølapp, og må vente på tur. Dette kalles et Deferred Procedure Call (DPC).

Det er én slik kø per prosessor, og prosessoren sjekker denne med fra tid til annen. Så snart det er ledig kapasitet blir et DPC tatt hånd om og en prosesseringstråd blir knyttet til oppgaven og gjennomført. DPC har med andre ord første prioritet i systemet, alt annet blir fordelt herfra.

Hvis driver-rutiner ikke er skrevet "etter boka", hvor det står at man skal være så rask som overhode mulig når et DPC håndteres slik at køen ikke forsinkes, da kan man få korte tidsavbrudd ("klikk") eller i verste fall lugging i systemet. Noen drivere bruker for lang tid for å sjekke etter aktivitet fra det tilkoblede utstyret (polling), dette er fy i denne sammenhengen.

Avslørende verktøy

Thesycon, et tysk firma som spesialiserer seg på å skrive drivere for maskinvare, har lagt ut DPC Latency Checker - et lite analyseverktøy - på nettsidene sine. Her sjekkes DPC status, og du kan sjekke gjennomsnittlig tidsbruk så vel som små (gule søyler) eller store (røde søyler) avvik.

Vis mer
Vis mer




Disse målingene er gjort på en av våre testPCer med en AMD Athlon 3800+. De problematiske søylene skyldtes driveren til det integrerte nettverket, som ble overaktiv hver gang det var tendens til trafikk.

Etter at vi slo av dette og installerte et annet nettverkskort ble vi kvitt problemet.

Måelverktøyet er dessverre ikke så avansert at det viser hvilken del av PCen som er problemet. Men det som er typiske kandidater er nettverkskort, modem, lydkort og andre tilleggskort som TV-tunere osv. USB-enheter kan også lage krøll.

Den eneste måten å finne synderen på er å gå i enhetsbehandling/device manager og slå av de forskjellige kandidatene.

HUSK: Programvare som kjører påvirker ikke dette! Alle brukerprogrammer behandles lenger opp i systemhierarkiet og er en helt annen problematikk.

Interessant om Vista

For moro skyld testet vi også på vår QuadCore Q6600 PC med Vista Home Premium 32-bit. Her viser grafen tydelig at den gjennomsnittlige behandlingstiden for henvendelser til "hovedkontoret" er mange ganger høyere enn i Windows XP.

Vis mer


DPC Latency Checker finner du her

(Artikkelen ble første gang publisert april 2008. Oppdatert 5. oktober 2008)