Profilování procesoru a GPU pomocí zachytávání časování
Časové zachycení kombinuje profilovací data CPU a GPU do jednoho zachycení pro důkladnou analýzu vaší aplikace. Tato data se shromažďují, když je hra spuštěná, a s minimální režií, abyste viděli, jak se práce distribuuje mezi jádra procesoru, latence mezi grafickou prací odesílanou procesorem a spuštěnou GPU, když dojde k vstupně-výstupním operacím souboru a přidělení paměti atd. To také zahrnuje událostí, značek a čítačů definovaných aplikací prostřednictvím PixEvents.
Pořízení zachycení časování
V zobrazení Připojení buď spusťte požadovaný proces, nebo se k němu připojte (ujistěte se, že volba pro zachycení GPU není zaškrtnuta).
Podle potřeby nakonfigurujte možnosti zachytávání časování a až budete připraveni, klikněte na tlačítko Zahájit záznam časování a zahajte nahrávání. Kliknutím na Zastavit časování zachytávání (nebo ukončit aplikaci) nahrávání ukončíte. Po krátkém zpracování se otevře zachycený obsah.
Možnosti zachycení časování
Jméno | Popis |
---|---|
Režim zachycení | Sekvenční: Zaznamenejte celé události mezi spuštěním a zastavením zachycení. Kruhový: Zaznamenávání událostí do vyrovnávací paměti pevné velikosti, ukládání pouze posledních n sekund dat. Další podrobnosti najdete v tomto blogovém příspěvku Circular Timing Captures. |
Ukázky procesoru | Provedením ukázkové profilace zjistíte, kde procesor tráví čas. Vzorkovací frekvence je konfigurovatelná. |
Zásobníky volání při přepínání kontextu | Shromážděte zásobníky volání, když vlákno přepne kontexty. |
Přístup k souborům | Sledování přístupu k souborům |
Časování GPU | Shromážděte podrobné informace o načasování, kdy se spustí a zastaví práce GPU. |
Prostředky GPU | Shromážděte podrobné informace o objektech D3D, jako jsou haldy a prostředky. Také můžete sledovat rezidenci GPU, zhoršená přidělení a migrace přidělení. |
Události VirtualAlloc/VirtualFree | Sleduje přidělení provedené prostřednictvím funkcí VirtualAlloc a VirtualFree. |
HeapAlloc/HeapFree – události | Sleduje přidělení provedené funkcemi HeapAlloc a HeapFree. |
Vlastní události alokátoru | Sleduje přidělení provedené vlastními alokátory paměti instrumentované pomocí PixEvents. |
Události selhání stránky | Shromážděte data o chybách stránky, ke kterým dochází při spuštění zachytávání. Chyby stránky se zobrazují na časové ose a v zobrazení podrobností prvku. |
Zásobníky volání pro podružné procesy | Zachyťte zásobníky volání pro procesy jiné než cílový proces (spuštěný nebo připojený proces). |
Informace o imagi jádra | Shromažďujte informace potřebné k zobrazení zásobníků volání pro binární soubory jádra. |
Generování souboru .etl místo souboru Wpix | Vygenerovaný soubor .etl lze později převést na soubor .wpix v nabídce Soubor | Převést. Tato možnost je užitečná při oznamování chybných reprodukcí týmu PIX nebo pokud máte jiné nástroje pro zpracování dat ETW. |
Programové zachytávání
Zachytávání můžete programově pořídit pomocí WinPixEventRuntime. Podrobnosti najdete v blogovém příspěvku programové zachycení.
Profilace procesoru
Povolení možnosti vzorky CPU při pořizování záznamu vám může pomoci určit pomalé funkce v kritické cestě vaší aplikace a také najít problémy související s čekáním vláken a přepínáním kontextu. Budete také moct sledovat různé druhy přidělení (s povolenou příslušnou možností zachycení).
Existuje několik blogových příspěvků, které podrobně pokrývají tyto funkce:
- Přehled časování záznamů
- Analyzování vzorků CPU v blogovém příspěvku o časových záznamech.
- Analýza zastavení a přepínání kontextů při zachytávání časování
-
Analýza využití paměti a výkonu při zachytávání časování
- Můžete také instrumentovat vlastní alokátory. Další podrobnosti najdete v blogovém příspěvku podpora profilování paměti pro alokace prováděné z vlastního alokátoru projektu.
Profilace GPU
Dochází u vaší aplikace k přerušovaným poklesem snímků? Nadměrné využití VRAM? Neočekávané operace stránkování mezi systémovou pamětí a VRAM? Funkce profilace GPU v PIX vám mohou pomoci dostat se k jádru těchto běžných a obtížně analyzovatelných situací.
Časování GPU
Povolte možnost časování GPU při pořizování záznamu, abyste shromáždili data o časování pro práci s GPU. V zobrazení časové osy můžete najít pruhy pro každou frontu GPU (v selektoru pruhůmůžete tyto pruhy rychle připnout pomocí front rozhraní API připnutých konfiguraci). Tyto pruhy obsahují několik podlan:
- Události PIX (GPU): Hierarchické, aplikací definované oblasti práce GPU. Podívejte se na PixEvents.
- Spouštění na GPU: Spouštění odpovídají odeslání práce na úrovni API rozhraní; například prostřednictvím ExecuteCommandLists.
- Práce s GPU: Jakákoli práce, která se provádí na GPU: například kreslení, zadávání úkolů, kopírování.
- Značky PIX (GPU): Značky definované aplikací Viz PixEvents.
Když vyberete událost na dráze, zobrazí se šipky ukazující, odkud na CPU ta událost pochází. V nabídce možností jízdního pruhu jsou k dispozici také různé možnosti vizualizace (ikona ozubeného kola vedle názvu pruhu). Nejvýrazněji platí, že zploštění událostí a zploštění práce GPU jsou ve výchozím nastavení povolena, aby se zachoval prostor, ale při zkoumání konkrétního snímku možná budete chtít zobrazit úplnou hierarchii událostí PIX nebo paralelizaci práce GPU.
Tato data jsou dostupná také v tabulkové podobě prostřednictvím podrobností rozsahu zobrazení výběrem příslušné kategorie v rozevíracím seznamu Položky a zobrazit.
Prezentace a informace o zobrazení
Vsyncs se zobrazují jako značky v samostatném monitoru pruhu a najdete je v zobrazení podrobností o rozsahu v kategorii Jiné.
Paměť GPU a objekty Direct3D
Povolit možnost prostředků GPU při pořizování snímku pro shromažďování informací o objektech Direct3D. Pokud chcete zobrazit graf celkového využití paměti, najdete několik čítačů v zobrazení Metriky. Můžete nakonfigurovat různé řádky rozpočtu, abyste získali rychlou představu o tom, jestli splňujete cíle využití paměti. Když najdete zájmovou oblast, můžete ji prozkoumat podrobněji tak, že vyberete časový rozsah, kliknete na přiblížit zobrazení časové osy pro výběr rozsahu v místní nabídce po kliknutí pravým tlačítkem myši a nastavíte rozevírací seznam Vybraný časový rozsah na Vybrat viditelný rozsah.
Spropitné
Nastavení stylu čáry na čtvercové usnadňuje zobrazení místa přidělení.
V zobrazení podrobností rozsahu můžete vidět různé informace o objektech rozhraní API Direct3D, jako jsou hromady, prostředky a objekty stavu potrubí. Aby bylo snazší určit všechny podezřelé objekty, jsou informace seskupeny podle toho, kdy byly přiděleny a uvolněny.
Sídlo
Najděte informace o problémech s bydlením v kategoriích Residence Operations, Demoted Allocations, a Allocation Migrations v zobrazení Podrobnosti rozsahu. Tyto značky a události jsou uvedeny také v pruhu Residence Operations.
Operace residence zahrnují operace MakeResident a Evict (iniciované prostřednictvím rozhraní API Direct3D 12) a všechny operace PageIn a PageOut (Další podrobnosti najdete v tématu Residency). Snížení přidělení nastane, když grafické jádro (DXGK) nemůže přidělit prostředek ve VRAM gpu (kvůli zatížení paměti nebo fragmentaci). Pokud k tomu dojde, DXGK se také pokusí provést migrace přidělení pro tyto deklasované přidělení. Mějte na paměti, že tyto migrace jsou nákladné operace, protože vyžadují pozastavení GPU.
Využití GPU a ukazatele prezentace
Povolte možnost Zachytit čítače SysMon při záznamu, aby se shromáždily čítače přítomné v nástroji System Monitor (neboli SysMon), které zahrnují různé čítače související s výkonem GPU. Zejména existují čítače pro:
- Využití GPU rozdělené podle modulu GPU pro cílový proces i všechny procesy.
- Prezentační data, jako jsou snímky za sekundu (a jejich inverze, v milisekundách, MsBetweenPresents) a MsUntilRenderComplete (doba mezi začátkem přítomnosti a dokončením práce GPU).
- Informace o paměti GPU, včetně místního a jiného využití paměti, bydliště a rozpočtů.
Spropitné
Najeďte myší na názvy čítačů v System Monitoru, chcete-li zobrazit popis.
Tyto čítače je možné monitorovat také v reálném čase, a to buď během pořizování časového záznamu, nebo kliknutím na tlačítko Zahájit sběr čítačů v zobrazení System Monitor. Grafy je možné měnit jejich uspořádání a čítače je možné dynamicky přidávat nebo odebírat. Kliknutím na Čítače zobrazíte všechny dostupné čítače.
Win32 souborové vstupně-výstupní operace
Podívejte se na blogový příspěvek Analyzování výkonu I/O operací souborů Win32 při záznamech časování.
Další funkce analýzy
- Statistické porovnání pomáhají určit, které části hierarchie událostí PIX mají statisticky odlišné doby porovnání množiny bodů. Podrobnosti najdete v blogovém příspěvku Statistické porovnávací funkce časového zachytávání.
- Nastavení rozpočtů výkonu vám může pomoct rychle identifikovat problematické oblasti zachycení. Další podrobnosti najdete v blogovém příspěvku Použití rozpočtů výkonu v zobrazení metrik Timing Capture.
- Podívejte se také na blogový příspěvek Analýza kritické cesty v časových záznamech.