Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Den här artikeln innehåller information om tidslinjerapporterna i vyn Trådar i Concurrency Visualizer.
Körningstid (trådvy)
De här segmenten i tidslinjen för trådvyn representerar körningstiden när tråden aktivt arbetar med en logisk kärna i systemet.
Ändringar i trådstatus identifieras via kernelkontextväxlingshändelser. Händelsespårning för Windows (ETW) samlar in exempelstackar varje millisekunder. I ett mycket kort grönt segment är det möjligt att inget prov tas. Därför kanske vissa korta körningssegment inte visar någon anropsstack.
När du klickar på ett körningssegment visar Concurrency Visualizer exempelstacken närmast platsen för klicket. Platsen för den exempelstacken visas med en svart pil, eller caret, ovanför tidslinjen och exempelstacken visas på fliken Aktuell .
Om du vill se en traditionell samplingsprofil för alla körningssegment i den aktuella vyn klickar du på Körning i profilen Synlig tidslinje.
I/O-tid (trådvy)
Dessa segment i tidslinjen är associerade med blockeringstider som kategoriseras som I/O. Det innebär att en tråd väntar på att en I/O-åtgärd ska slutföras. Tråden kan ha blockerats i ett API eller av en I/O-relaterad kernelvänte som Concurrency Visualizer räknar som I/O. API:er som CreateFile(), ReadFile()och WSARecv() tillhör den här gruppen.
Tid för minneshantering
Dessa segment i tidslinjen är associerade med blockeringstider som kategoriseras som Minneshantering. I det här scenariot blockeras en tråd av en händelse som är associerad med en åtgärd för minneshantering, såsom s.k. paging. Under den här tiden har en tråd blockerats i ett API- eller kerneltillstånd som Concurrency Visualizer räknar som minneshantering. Dessa inkluderar händelser som växling och minnesallokering.
Granska de associerade anropsstackarna och profilrapporterna för att bättre förstå de underliggande orsakerna till block som kategoriseras som Minneshantering.
Preemptionstid
Dessa segment i tidslinjen är associerade med den blockeringstid som kategoriseras som preemption. Den här kategorin innebär att en tråd växlas ut på grund av någon av följande orsaker:
Schemaläggaren ersatte den med hjälp av en tråd med högre prioritet.
Körningskvantum för tråden har löpt ut och andra trådar är redo att utföras.
Under den här tiden har en tråd blockerats av en kernelvänteorsak till att Concurrency Visualizer räknar som preemption. Preemptionssegment börjar när en tråd skickas ut från en logisk kärna och slutar när tråden återupptar körningen.
Knappbeskrivningen för ett avbrutet segment visar namnet på den process eller tråd som orsakade avbrottet. Detta innebär dock inte att processen eller tråden som tog över faktiskt kördes under den förinställda perioden.
Vilotid
Dessa segment i tidslinjen är associerade med den blockeringstid som kategoriseras som Viloläge. Sömnkategorin innebär att en tråd frivilligt har gett upp sin logiska kärna och inte gör något arbete. Under den här tiden har en tråd blockerats i ett API som Concurrency Visualizer räknar som viloläge. API:er som Sleep() och SwitchToThread() hamnar i den här gruppen.
Synkroniseringstid
Dessa segment i tidslinjen är associerade med blockeringstider som kategoriseras som synkronisering. När en tråd markeras som blockerad vid synkronisering är en av dessa saker underförstådd:
Körningen av tråden kan ha resulterat i ett anrop till ett välkänt API för trådsynkronisering, till exempel
EnterCriticalSection()ellerWaitForSingleObject().API-matchningsalgoritmen kan inte vara helt omfattande, och därför kan vissa API:er som kan mappas till andra kategorier också visas som synkronisering eftersom en ram i anropsstacken slutligen nådde en underliggande kernelblockeringsprimär som mappades till den här kategorin.
För att förstå den underliggande orsaken till en trådblockeringshändelse bör du noggrant undersöka blockeringsanropsstackarna och profilrapporterna.
Bearbetningstid för användargränssnittet
Dessa segment i tidslinjen är associerade med blockeringstider som kategoriseras som UI-bearbetning. Detta innebär att en tråd pumpar Windows-meddelanden eller utför annat användargränssnitt (UI). Under den här tiden har en tråd blockerats i ett API som Concurrency Visualizer räknar som UI-bearbetning. API:er som GetMessage() och MsgWaitForMultipleObjects() hamnar i den här gruppen.
Om inget fördefinierat blockerande API identifieras granskar du anropsstackarna och profilrapporterna för att fastställa de underliggande orsakerna till fördröjning.
Kategorin UI-bearbetning hjälper dig att förstå svarstiden för GUI-program och är önskvärd i program som är beroende av UI-svarstider. Om användargränssnittstråden i ett program till exempel uppnår 100% tid i UI-bearbetning är den förmodligen responsiv. Men om användargränssnittstråden tillbringar mycket tid i andra kategorier letar du efter rotorsakerna och överväger alternativ för att minska icke-UI-kategorier i den tråden.