Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk az idővonal-jelentésekről nyújt információt az Egyidejűség-vizualizáció Szálak nézetében.
Végrehajtási idő (Szálnézet)
A Szálak nézet idővonalának ezen szegmensei a végrehajtási időt jelölik, amikor a szál aktívan dolgozik a rendszer logikai magján.
A rendszer a kernel környezeti kapcsoló eseményein keresztül észleli a szál állapotának változásait. A Windows eseménykövetése (ETW) ezredmásodpercenként rögzíti a mintavermeket. Egy nagyon rövid zöld szegmensben lehetséges, hogy nem vesznek mintát. Ezért előfordulhat, hogy néhány rövid végrehajtási szegmens nem jelenít meg hívásvermet.
Amikor egy végrehajtási szegmensre kattint, az Egyidejűség-vizualizáció megjeleníti a kattintás helyéhez legközelebbi mintavermet. A minta verem helyét egy fekete nyíl vagy ékezet jelzi az idővonal felett, és a minta verem megjelenik az Aktuális lapon.
Az aktuális nézetben az összes végrehajtási szegmenshez tartozó hagyományos mintavételezési profil megtekintéséhez kattintson a Végrehajtás gombra a Látható ütemterv profilban.
I/O-idő (Szálak Nézete)
Az ütemterv ezen szegmensei az I/O-ként kategorizált blokkolási időkhöz vannak társítva. Ez azt jelenti, hogy egy szál egy I/O-művelet befejezésére vár. Előfordulhat, hogy a szál blokkolva lett egy API-ban, vagy egy I/O-val kapcsolatos kernel várakozása miatt, amelyet a Concurrency Visualizer I/O-ként számít. Api-k, például CreateFile(), ReadFile()és WSARecv() ebbe a csoportba tartoznak.
Memóriakezelési idő
Az ütemterv ezen szegmensei memóriakezelésként kategorizált blokkolási időhöz vannak társítva. Ez a forgatókönyv azt jelenti, hogy egy szálat egy olyan esemény blokkol, amely egy memóriakezelési művelethez, például a Lapozáshoz van társítva. Ez idő alatt egy szál blokkolva lett egy API- vagy kernelállapotban, amit a Concurrency Visualizer memóriakezelésként számít. Ezek közé tartoznak az olyan események, mint a lapozás és a memóriafoglalás.
Vizsgálja meg a kapcsolódó hívásveremeket és profiljelentéseket, hogy jobban megértse a memóriakezelésként kategorizált blokkok mögöttes okait.
Megszakítási idő
Az ütemterv ezen szegmensei a megelőzőként kategorizált blokkolási időhöz vannak társítva. Ez a kategória azt jelenti, hogy egy szál az alábbi okok valamelyike miatt vált ki:
Az ütemező egy magasabb prioritású szálat használt a felváltásra.
A szál végrehajtási kvantumja lejárt, és a többi szál készen állt a végrehajtásra.
Ez idő alatt egy szál a rendszermag várakozási okai miatt lett blokkolva, amelyet az Egyidejűség-megjelenítő előfoglalásként értelmez. A preemption szegmensek akkor kezdődnek, amikor egy szál ki lesz küldve egy logikai magból, és akkor fejeződnek be, amikor a szál folytatja a végrehajtást.
A preemptált szegmens elemleírása megjeleníti annak a folyamatnak vagy szálnak a nevét, amely a preempciót okozta. Ez azonban nem jelenti azt, hogy az átvett folyamat vagy szál ténylegesen futott az előre meghatározott időszakban.
Alvási idő
Az ütemterv ezen szegmensei az Alvó állapotként kategorizált blokkolási időhöz vannak társítva. Az alvási kategória azt jelenti, hogy egy szál önként feladta a logikai magját, és nem végez munkát. Ez idő alatt egy szál blokkolva lett egy API-ban, amelyet a Concurrency Visualizer alvó állapotnak tekint. Olyan API-k, mint a Sleep() és a SwitchToThread() ebbe a csoportba tartoznak.
Szinkronizálási idő
Az ütemterv ezen szegmensei szinkronizálásként kategorizált blokkolási időhöz vannak társítva. Ha egy szál le van tiltva a szinkronizáláskor, a következő dolgok egyike következik:
Előfordulhat, hogy a szál végrehajtása egy jól ismert szálszinkronizálási API-t hívott meg, mint például
EnterCriticalSection()vagyWaitForSingleObject().Az API-megfeleltetési algoritmus nem lehet teljesen átfogó, ezért előfordulhat, hogy egyes, más kategóriákra leképezhető API-k szinkronizálásként is megjelennek, mert a hívásverem egy kerete végül elérte a mögöttes kernelblokkoló primitívet, amelyet erre a kategóriára képeztek le.
A szálblokkoló esemény hátterének megértéséhez gondosan vizsgálja meg a blokkoló hívásveremeket és a profiljelentéseket.
Felhasználói felület feldolgozási ideje
Az ütemterv ezen szegmensei felhasználói felületi feldolgozásként kategorizált blokkolási időhöz vannak társítva. Ez azt jelenti, hogy egy szál Windows-üzeneteket pumpál, vagy más felhasználói felületi (UI-) munkát végez. Ez idő alatt egy szál blokkolva lett egy API-ban, amelyet a Concurrency Visualizer UI feldolgozásként számít. Olyan API-k, mint a GetMessage() és a MsgWaitForMultipleObjects() ebbe a csoportba tartoznak.
Ha nem azonosít előre definiált blokkoló API-t, tekintse át a hívásveremeket és a profiljelentéseket, és állapítsa meg a késés okait.
A felhasználói felület feldolgozási kategóriája segít megérteni a grafikus felhasználói felületi alkalmazások válaszkészségét, és a felhasználói felület válaszképességétől függő alkalmazásokban kívánatos. Ha például egy alkalmazás felhasználói felületi szála 100% időt ér el a felhasználói felület feldolgozásában, akkor valószínűleg rugalmas. Ha azonban a felhasználói felületi szál jelentős időt tölt más kategóriákban, keresse meg a kiváltó okokat, és fontolja meg a nem felhasználói felületi kategóriák csökkentésének lehetőségeit az adott szálon.