Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek obsahuje informace o sestavách časové osy v zobrazení vláken ve vizualizéru souběžnosti.
Doba provádění (zobrazení vláken)
Tyto segmenty v časové ose Zobrazení vláken představují čas spuštění, kdy vlákno aktivně pracuje na logickém jádru v systému.
Změny ve stavu vlákna jsou zjištěny prostřednictvím událostí přepínače kontextu jádra. Trasování událostí pro Windows (ETW) zaznamenává ukázkové zásobníky každou milisekundu. Ve velmi krátkém zeleném segmentu se může stát, že není odebírán žádný vzorek. Proto některé krátké spuštěcí segmenty nemusí zobrazovat žádný zásobník volání.
Když kliknete na výkonnostní segment, Vizualizér souběžnosti zobrazí vzorkovací zásobník nejblíže k místu kliknutí. Umístění tohoto ukázkového zásobníku se zobrazuje černou šipkou nebo kurzorem nad časovou osou a ukázkový zásobník se zobrazí na kartě Aktuální .
Chcete-li zobrazit tradiční profil vzorkování pro všechny segmenty spuštění v aktuálním zobrazení, klepněte na tlačítko Spuštění v profilu viditelné časové osy.
Doba vstupně-výstupních operací (pohled vláken)
Tyto segmenty na časové ose jsou spojené s časy blokování, které jsou zařazené jako I/O. To znamená, že vlákno čeká na dokončení vstupně-výstupní operace. Vlákno mohlo být blokováno v rozhraní API nebo čekáním jádra souvisejícím s vstupně-výstupními operacemi, které vizualizér souběžnosti počítá jako takovéto operace. Rozhraní API, jako jsou například CreateFile(), ReadFile() a WSARecv(), spadají do této skupiny.
Doba správy paměti
Tyto segmenty na časové ose jsou přidružené k časům blokování, které jsou zařazeny do kategorie Správa paměti. Tento scénář znamená, že vlákno je blokováno událostí přidruženou k operaci správy paměti, jako je stránkování. Během této doby bylo vlákno zablokováno v rozhraní API nebo ve stavu jádra, který vizualizér souběžnosti počítá jako správu paměti. Patří mezi ně události, jako je stránkování a přidělení paměti.
Prozkoumejte související zásobníky volání a sestavy profilů, abyste lépe porozuměli základním důvodům bloků, které jsou zařazené do kategorie Správa paměti.
Doba předběžného odstranění
Tyto segmenty na časové ose jsou spojeny s dobou blokování, která je zařazena do kategorie Preemption. Z této kategorie vyplývá, že vlákno se přepne z jednoho z těchto důvodů:
Plánovač ho nahradil vláknem s vyšší prioritou.
Časové kvantum vlákna vypršelo a další vlákna byla připravena ke spuštění.
Během této doby bylo vlákno zablokováno důvodem čekání jádra, který vizualizér souběžnosti počítá jako Preemption. Segmenty preemption se spustí, když je vlákno vloženo z logického jádra, a končí, když toto vlákno obnoví provádění.
Popisek pro předběžně přerušený segment zobrazuje název procesu nebo vlákna, které způsobily přerušení. To však neznamená, že proces nebo vlákno, které převzaly, skutečně běželo v průběhu přerušeného období.
Doba spánku
Tyto segmenty na časové ose jsou přidružené k době blokování, která je zařazena do kategorie Režim spánku. Kategorie spánku znamená, že vlákno dobrovolně vzdalo své logické jádro a neprovádí žádnou práci. Během této doby se vlákno zablokovalo v rozhraní API, které vizualizér souběžnosti počítá jako režim spánku. Rozhraní API, jako je Sleep() a SwitchToThread(), patří do této skupiny.
Čas synchronizace
Tyto segmenty na časové ose jsou přidruženy k časům blokování, které jsou kategorizovány jako Synchronizace. Pokud je vlákno při synchronizaci označené jako blokované, předpokládá se jedna z těchto věcí:
Spuštění vlákna mohlo vést k volání dobře známého rozhraní API pro synchronizaci vláken, například
EnterCriticalSection()neboWaitForSingleObject().Algoritmus porovnávání rozhraní API nemůže být zcela vyčerpávající, a proto se některá rozhraní API, která by mohla být namapována do jiných kategorií, mohou také zobrazit jako synchronizace, protože rámec v zásobníku volání nakonec dosáhl základního blokujícího primitiva, které bylo namapováno do této kategorie.
Pokud chcete porozumět základní příčině události blokující vlákno, pečlivě zkontrolujte blokující zásobníky volání a sestavy profilů.
Doba zpracování uživatelského rozhraní
Tyto úseky na časové ose jsou spojeny s dobami blokování, které jsou zařazeny do kategorie zpracování uživatelského rozhraní. To znamená, že vlákno pumpuje zprávy systému Windows nebo provádí jiné úkoly související s uživatelským rozhraním. Během této doby bylo vlákno zablokováno v rozhraní API, které Vizualizér Souběžnosti považuje za zpracování uživatelského rozhraní. Rozhraní API, jako je GetMessage() a MsgWaitForMultipleObjects(), patří do této skupiny.
Pokud není identifikováno žádné předdefinované blokující rozhraní API, zkontrolujte zásobníky volání a sestavy profilů a určete základní příčiny zpoždění.
Kategorie Zpracování uživatelského rozhraní vám pomůže pochopit rychlost odezvy aplikací grafického uživatelského rozhraní a je žádoucí v aplikacích, které závisí na odezvě uživatelského rozhraní. Pokud například vlákno uživatelského rozhraní v aplikaci dosáhne 100% času při zpracování uživatelského rozhraní, pravděpodobně reaguje. Pokud však vlákno uživatelského rozhraní stráví značným časem v jiných kategoriích, vyhledejte původní příčiny a zvažte možnosti snížení kategorií bez uživatelského rozhraní v daném vlákně.