Optimalizace výkonu WinUI 3

Toto téma popisuje, jak pomocí nástrojů pro monitorování výkonu z Windows Performance Toolkit vytvářet podrobné profily výkonu pro aplikace WinUI.

Jak můžu pomocí nástroje Windows Performance Recorder monitorovat aplikace WinUI?

Pomocí nástroje Windows Performance Recorder (WPR) můžete vytvořit podrobné Event Tracing for Windows (ETW) zaznamenávání chování systému a aplikací a využití prostředků na základě předdefinovaných profilů. Tyto záznamy ETW mohou být pak zpracovány nástrojem Windows Performance Analyzer (WPA), který vytvoří sadu grafů a tabulek pro snadnější pochopení a podrobnou analýzu využití procesoru, problémů s napájením, nízkého výkonu systému nebo aplikací a dalších výkonových problémů.

Poznámka:

I když existují verze grafického uživatelského rozhraní i příkazového řádku WPR, toto téma se týká pouze verze grafického uživatelského rozhraní (další podrobnosti o obou verzích najdete v úvodu do WPR ).

Profily WPR

Profily WPR slouží ke shromažďování informací o různých aspektech a chování aplikace.

Na následujícím obrázku se zobrazí okno záznamu výkonu systému Windows s profilem Využití procesoru (využití procesoru pro každý procesor v systému) a profilem aktivity XAML (události od poskytovatelů souvisejících s XAML, například WinUI).

Snímek obrazovky nástroje Windows Performance Recorder s vybranými profily využití procesoru a aktivit XAML

Jak se používá Analyzátor výkonu Windows s aplikacemi WinUI?

WinUI je deklarativní API s uchováním režimu, kde aplikace popisuje strom UIElements a WinUI spouští rozložení a vykresluje ho. To se provádí ve vlákně uživatelského rozhraní v dávkách s názvem "rámce", které by se měly rychle dokončit v ideálním případě v jednom intervalu aktualizace displeje. Pokud snímky trvají dlouho, nejenže to zpožďuje aktualizace v zobrazování na displeji, ale také to zabraňuje vláknu uživatelského rozhraní ve zpracování vstupu. Pomalé snímky nejsou jediným důvodem problémů s odezvou, ale patří k těm nejčastějším.

Instalace modulu plug-in XAML Frame Analysis

WinUI protokoluje ETW události, které sledují začátek a konec každého snímku (viz následující snímek obrazovky tabulky WPA "Obecné události"). Vzhledem k tomu, že doba trvání každého snímku je potřeba vypočítat ručně, je obtížné identifikovat výskyty pomalých snímků.

Snímek obrazovky Windows Performance Analyzer zobrazující tabulku Generic Events s řadou začátků a ukončení snímků.

Aby se tento problém vyřešil, je k dispozici nový plugin pro analýzu tabulek XAML Frame v rámci Windows Assessment Toolkit (ADK) verze 10.1.26100.1 a novějších. Tato tabulka vypočítá a zobrazuje dobu trvání každého snímku spolu s dalšími časově náročnými operacemi.

Poznámka:

Tabulka "Analýza rámce XAML" vyžaduje Windows Performance Analyzer (WPA) z Windows ADK 10.1.26100.1 nebo novější. Verze WPR použitá k pořízení trasování není důležitá.

Po instalaci sady ADK musí být tabulka XAML Frame Analysis povolena úpravou konfiguračního souboru "perfcore.ini" ve složce WPA (obvykle C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit). Chcete-li to provést, zavřete všechny otevřené instance WPA, otevřete "perfcore.ini" v textovém editoru, přidejte perf_xaml.dll do seznamu knihoven DLL a uložte a zavřete soubor. Restartujte WPA, který by teď měl zobrazit graf "Analýza rámce XAML" v dolní části části Aktivita systému.

Snímek obrazovky Analyzátoru výkonu systému Windows zobrazující tabulku analýzy rámce XAML v dolní části části Aktivita systému

Použijte plug-in "XAML Frame Analysis"

Analýza rámce Xaml podporuje dvě zobrazení (obě zobrazení zobrazují stejné sloupce):

  • "Zajímavé rámce Xaml" (výchozí) – zobrazuje rámce WinUI na základě heuristiky, které identifikují ty, které s největší pravděpodobností způsobují problémy s odezvou. Tyto oblasti odpovídají oblastem, které začínají operacemi, jako je inicializace WinUI, navigace rámce nebo kontextové zobrazení, a zastavují se koncem dalšího rámce. Tyto scénáře obvykle zahrnují rozsáhlé změny stromu UIElement a jsou nejvíce náchylné k problémům s výkonem.
  • Všechny informace XAML – Zobrazí všechny rámce WinUI ze všech procesů nalezených v trasování. V případě operací, jako je rámec nebo průchod rozložení, modul plug-in automaticky vypočítá a zobrazí doby trvání na základě událostí Start a Stop.

Následující snímek obrazovky ukazuje, jak přepínat mezi zobrazeními analýzy snímků XAML.

Snímek obrazovky Windows Performance Analyzer, zobrazující volby zobrazení pro tabulku analýzy rámce Xaml.

Obě zobrazení analýzy rámce Xaml zahrnují následující sloupce:

Titul Hodnota
Proces Název a ID procesu
ID vlákna ID vlákna
Typ Popisuje událost odpovídající řádku. Mezi možné hodnoty patří:
  • WXM::InitializeForCurrentThread – volání WindowsXamlManager.InitializeForCurrentThread. Inicializuje WinUI ve vlákně.
  • DWXS::Initialize – volání DesktopWindowXamlSource.Initialize. Inicializuje ostrov WinUI.
  • Rámec – rámec ve vlákně uživatelského rozhraní Spustí rozložení a vykreslí změny stromu od předchozího rámce.
  • Vytvoření grafického zařízení – Vytvoření D3D a zařízení D2D pro WinUI Vyskytuje se na vlákně na pozadí.
  • UpdateLayout – Předání rozložení ve vlákně uživatelského rozhraní Vyskytuje se jako součást rámce, ale může ji také aktivovat aplikace prostřednictvím UIElement.UpdateLayout.
  • Frame::Navigace – WinUI vyvolá událost Frame.Navigating .
  • Frame::Navigated – WinUI vyvolá událost Frame.Navigated .
  • Hwnd Focus - Aktivní hwnd se změnil.
  • Oblast zájmu – oblast vypočítaná modulem plug-in pro zajímavé scénáře Spustí se po událostech, jako je inicializace WinUI, navigace v rámci a otevírání nabídek. Zastaví se na konci dalšího snímku.
JeZajímavé Zda je řádek považován za zajímavý. V zobrazení Zajímavých rámců Xaml se zobrazují jenom zajímavé řádky.
Doba trvání (ms) Délka řádku. Vypočítá se z událostí Start a Stop.
Hmotnost (ms) Skutečná doba vykonávání procesorem odpovídající době trvání.
Začátek (s) Čas události Start
Zastavení (s) Čas události Stop

Sloupce můžou být seřazené podle typu nebo doby trvání, aby bylo možné identifikovat potenciální problémy, jako jsou ty nejdražší, nejdelší rámce doby trvání v trasování (viz následující obrázek). Můžete také přejít k podrobnostem o konkrétních řádcích a identifikovat nákladné operace a potenciální optimalizace.

Snímek obrazovky Analyzátoru výkonu systému Windows zobrazující tabulku Všechny informace XAML seřazené podle doby trvání (ms).