Sdílet prostřednictvím


Měření výkonu aplikace analýzou využití procesoru (C#, Visual Basic, C++, F#)

Při ladění vyhledejte problémy s výkonem pomocí diagnostického nástroje pro využití procesoru integrovaného do ladicího programu. Můžete také analyzovat využití procesoru bez připojeného ladicího programu nebo cílením na spuštěnou aplikaci. Další informace najdete v tématech Spuštění nástrojů pro profilování na režimech verze nebo ladění a Analýza výkonu pomocí profilování CPU.

Když se ladicí program pozastaví, nástroj Využití procesoru v okně Diagnostické nástroje shromažďuje informace o funkcích spuštěných ve vaší aplikaci. Nástroj uvádí funkce, které prováděly práci, a poskytuje graf časové osy, který můžete použít k zaměření na konkrétní segmenty relace vzorkování.

Důležitý

Diagnostické nástroje integrované v ladicím programu jsou podporovány pro vývoj v .NET v sadě Visual Studio, včetně ASP.NET, ASP.NET Core a nativního vývoje v jazyce C++. Je vyžadována odpovídající úloha sady Visual Studio . Systém Windows 8 nebo novější je vyžadován pro spuštění nástrojů profilace pomocí ladicího programu (oknodiagnostické nástroje).

V tomto kurzu:

  • Shromažďování dat o využití procesoru
  • Analýza dat o využití procesoru

Krok 1: Shromažďování dat o využití procesoru

  1. Otevřete projekt, který chcete ladit v sadě Visual Studio, a nastavte zarážku v aplikaci v okamžiku, kdy chcete prozkoumat využití procesoru.

  2. Na konci funkce nebo oblasti kódu, kterou chcete analyzovat, nastavte druhou zarážku.

    Nastavením dvou zarážek můžete shromažďování dat omezit na části kódu, které chcete analyzovat.

  3. Okno Diagnostické nástroje se zobrazí automaticky, pokud jste ho nevypnuli. Chcete-li okno znovu otevřít, klikněte na Ladění>Windows>Zobrazit diagnostické nástroje.

  4. Můžete zvolit, jestli chcete zobrazit využití procesoru, využití paměti nebo obojí, s nastavením Vybrat nástroje na panelu nástrojů. Pokud používáte Visual Studio Enterprise, můžete také povolit nebo zakázat IntelliTrace v nástrojích Nástroje>Možnosti>IntelliTrace.

    snímek obrazovky s diagnostickými nástroji DiagToolsSelectTool

    snímek obrazovky s diagnostickými nástroji DiagToolsSelectTool

    Podíváme se hlavně na využití procesoru, proto se ujistěte, že je povolené využití procesoru (ve výchozím nastavení je povolené).

  5. Klikněte na Ladění>Spustit ladění (nebo Spustit na panelu nástrojů, nebo F5).

    Po dokončení načítání aplikace se zobrazí souhrnné zobrazení diagnostických nástrojů. Pokud potřebujete otevřít okno, klikněte na Ladění>Windows>Zobrazit diagnostické nástroje.

    snímek obrazovky zobrazující kartu Souhrn diagnostických nástrojů.

    snímek obrazovky zobrazující kartu Souhrn diagnostických nástrojů.

    Další informace o událostech najdete v tématu Vyhledávání a filtrování na kartě Události v okně Diagnostické nástroje.

  6. Spusťte scénář, který způsobí, že dojde k dosažení první zarážky.

  7. Při pozastavení ladicího programu povolte shromažďování dat Využití procesoru a pak otevřete kartu Využití procesoru.

    snímek obrazovky s diagnostickými nástroji umožňující profilaci procesoru DiagToolsEnableCPUProfiling

    snímek obrazovky s diagnostickými nástroji umožňující profilaci procesoru DiagToolsEnableCPUProfiling

    Když zvolíte Zaznamenat profil procesoru, Visual Studio začne zaznamenávat vaše funkce a kolik času jejich spuštění trvá. Tato shromážděná data můžete zobrazit pouze tehdy, když je vaše aplikace zastavena na bodu přerušení.

  8. Stisknutím klávesy F5 spusťte aplikaci ke druhému bodu přerušení.

    Teď máte data o výkonu vaší aplikace speciálně pro oblast kódu, která se spouští mezi těmito dvěma zarážky.

    Profiler začne připravovat data vlákna. Počkejte, až se dokončí.

    Snímek obrazovky, který ukazuje nástroje Diagnostiky připravující vlákna.

    Snímek obrazovky, který ukazuje diagnostické nástroje připravující vlákna.

    Nástroj Využití procesoru zobrazí sestavu v záložce Využití procesoru.

    snímek obrazovky znázorňující kartu Využití CPU diagnostických nástrojů.

    Snímek obrazovky znázorňující kartu Využití Procesoru Diagnostických Nástrojů.

  9. Pokud chcete vybrat konkrétnější oblast kódu, kterou chcete analyzovat, vyberte oblast na časové ose procesoru (musí to být oblast, která zobrazuje data profilace).

    snímek obrazovky, který ukazuje Diagnostické nástroje vybírající časový segment

    Snímek obrazovky ukazující diagnostické nástroje při výběru časového segmentu.

    V tuto chvíli můžete začít analyzovat data. Pokud máte potíže se shromažďováním nebo zobrazováním dat, přečtěte si téma Řešení chyb profilace a oprava problémů.

    Spropitné

    Při pokusu o identifikaci problémů s výkonem proveďte několik měření. Výkon se přirozeně liší od spuštění po spuštění a cesty kódu se obvykle spouští pomaleji při prvním spuštění kvůli jednorázové inicializační práci, jako je načítání knihoven DLL, kompilování metod JIT a inicializace mezipamětí. Když provedete více měření, získáte lepší představu o rozsahu a mediánu zobrazené metriky, což vám umožní porovnat první měření oproti stabilnímu výkonu části kódu.

Krok 2: Analýza dat o využití procesoru

Doporučujeme začít analyzovat data prozkoumáním seznamu funkcí v části Využití procesoru, identifikací funkcí, které provádějí nejvíce práce, a následným bližším pohledem na jednotlivé funkce.

  1. V seznamu funkcí prozkoumejte funkce, které dělají nejvíce práce.

    snímek obrazovky se seznamem funkcí využití procesoru v diagnostických nástrojích DiagToolsCPUUsageFunctionList

    snímek obrazovky se seznamem funkcí využití procesoru v diagnostických nástrojích DiagToolsCPUUsageFunctionList

    Spropitné

    Funkce jsou uvedené v pořadí od těch, které provádějí nejvíce práce (nejsou v pořadí volání). To vám pomůže rychle identifikovat nejdéle běžící funkce.

  2. V seznamu funkcí poklikejte na některou z funkcí aplikace, která dělá spoustu práce.

    Po dvojitém kliknutí na funkci se v levém podokně otevře zobrazení Funkce. V rozevírací nabídce vyberte zobrazení Volající/Volaný.

    Snímek obrazovky zobrazující zobrazení nástrojů diagnostiky: pohled volající a volaný. DiagToolsCallerCallee

    V tomto zobrazení se vybraná funkce zobrazí v záhlaví a v poli Aktuální funkce (v tomto příkladu DoWork). Funkce, která volala aktuální funkci, je zobrazena vlevo pod Volání funkcía všechny funkce vyvolané aktuální funkcí jsou zobrazeny vpravo v sekci Volané funkce. (Aktuální funkci můžete změnit výběrem některého z polí.)

    V tomto zobrazení se zobrazí celkový čas (ms) a procento celkové doby běhu aplikace, kterou funkce dokončila. tělo funkce také zobrazuje celkovou dobu (a procento času) strávenou v těle funkce, s vyloučením času stráveného voláním a volanými funkcemi.

    Po poklikání na funkci se v levém podokně otevře zobrazení Volající nebo Volaný.

    Snímek obrazovky, který zobrazuje Diagnostické nástroje pohled volající volaný. DiagToolsCallerCallee

    V tomto zobrazení se vybraná funkce zobrazí v záhlaví a v poli Aktuální funkce (v tomto příkladu GetNumber). Funkce, která volala aktuální funkci, je zobrazena vlevo pod Volající funkce, a všechny funkce volané aktuální funkcí jsou zobrazeny vpravo v rámečku Volané funkce. (Aktuální funkci můžete změnit výběrem některého z polí.)

    V tomto zobrazení se zobrazí celkový čas (ms) a procento celkové doby běhu aplikace, kterou funkce dokončila. tělo funkce také zobrazuje celkové množství času (a procento času) stráveného v těle funkce, s výjimkou času stráveného voláním a volanými funkcemi. (V tomto příkladu bylo v těle funkce vynaloženo 2367 z 2389 ms a zbývajících 22 ms bylo vynaloženo v externím kódu volaného touto funkcí).

    Spropitné

    Vysoké hodnoty v těle funkce mohou znamenat kritický bod výkonu v rámci samotné funkce.

  3. Pokud chcete zobrazit přehled na vyšší úrovni, který ukazuje pořadí volání funkcí, vyberte Strom volání z rozevíracího seznamu v horní části podokna.

    Každá očíslovaná oblast na obrázku souvisí s krokem v postupu.

    Diagnostické nástroje Call Tree

    Obraz Popis
    krok 1 Ve stromu volání Využití procesoru je uzel nejvyšší úrovně, který představuje aplikaci.
    krok 2 Když je ve většině aplikací zakázaná možnost Zobrazit externí kód, uzel druhé úrovně je [externí kód] uzel, který obsahuje kód systému a architektury, který spustí a zastaví aplikaci, nakreslí uživatelské rozhraní, řídí plánování vláken a poskytuje do aplikace další služby nízké úrovně.
    krok 3 Podřízené položky uzlu druhé úrovně jsou metody uživatelského kódu a asynchronní rutiny, které jsou volány nebo vytvořeny systémem a kódem architektury druhé úrovně.
    krok 4 Podřízené uzly metody obsahují data pouze pro volání nadřazené metody. Když je Zobrazit externí kód zakázáno, metody aplikace mohou také obsahovat uzel [Externí kód].

    Tady jsou další informace o hodnotách sloupců:

    • celkové využití procesoru označuje, kolik práce funkce udělala, a všechny funkce, které volala. Vysoké celkové hodnoty procesoru ukazují na funkce, které jsou celkově nejdražší.

    • Self CPU označuje, kolik práce bylo vykonáno kódem v těle funkce, s výjimkou práce provedené funkcemi, které byly volány. Vysoké hodnoty samoobslužného procesoru můžou značit kritický bod výkonu samotné funkce.

    • Moduly Název modulu obsahujícího funkci nebo počet modulů obsahujících funkce v uzlu [Externí kód].

    Chcete-li zobrazit volání funkcí, která používají nejvyšší procento procesoru v zobrazení stromu volání, klikněte na Rozbalit horkou cestu. Horká cesta vám může pomoct zaměřit se na oblast, která by měla největší dopad.

    Snímek obrazovky zobrazující významnou trasu diagnostických nástrojů

    Poznámka

    Pokud se ve stromu volání zobrazí kód označený jako "poškozený kód" nebo "neprocházetelný zásobník", znamená to, že události Event Tracing for Windows (ETW) byly pravděpodobně vynechány. Pokuste se znovu shromáždit stejné trasování, abyste vyřešili problém.

  4. Pokud chcete zobrazit jiné zobrazení dat, vyberte Flame Graph v rozevíracím seznamu v horní části podokna.

    Graf plamene poskytuje jinou vizualizaci stromu volání, která vám může pomoct analyzovat data. Další informace najdete v tématu Identifikace horkých cest pomocí grafu plamene.

Zobrazení externího kódu

Externí kód jsou funkce v komponentách systému a architektury, které spouští kód, který napíšete. Externí kód obsahuje funkce, které aplikaci spouštějí a zastavují, kreslí uživatelské rozhraní, řídí vlákna a poskytují aplikaci další služby nízké úrovně. Ve většině případů vás nebude zajímat externí kód, takže nástroj Využití procesoru shromáždí externí funkce metody uživatele do jednoho [externího volání] uzlu.

Pokud chcete zobrazit cesty volání externího kódu, zrušte výběr Just My Code z možnosti Nastavení a pak zvolte Použít.

Snímek obrazovky, který zobrazuje Nastavení a pak Zobrazit jenom můj kód

Externí kód jsou funkce v komponentách systému a architektury, které spouští kód, který napíšete. Externí kód obsahuje funkce, které aplikaci spouštějí a zastavují, kreslí uživatelské rozhraní, řídí vlákna a poskytují aplikaci další služby nízké úrovně. Ve většině případů vás nebude zajímat externí kód, takže nástroj Využití procesoru shromažďuje externí funkce metody uživatele do jednoho [externí kód] uzlu.

Pokud chcete zobrazit cesty volání externího kódu, zvolte Zobrazit externí kód ze seznamu zobrazení filtru a pak zvolte Použít.

snímek obrazovky s výběrem zobrazení filtru a následnou zobrazením externího kódu

Mějte na paměti, že mnoho řetězů volání externího kódu je hluboce vnořeno, takže šířka sloupce Název funkce může překročit šířku zobrazení všech kromě největších počítačových monitorů. V takovém případě se názvy funkcí zobrazí jako [...].

Pomocí vyhledávacího pole vyhledejte uzel, který hledáte, a pak pomocí vodorovného posuvníku přeneste data do zobrazení.

Spropitné

Pokud profilujete externí kód, který volá funkce Windows, měli byste se ujistit, že máte nejaktuálnější soubory .pdb. Bez těchto souborů budou zobrazení sestavy vypisovat názvy funkcí systému Windows, které jsou kryptografické a obtížně pochopitelné. Další informace o tom, jak zajistit, abyste měli soubory, které potřebujete, najdete v tématu Zadání symbolu (.pdb) a zdrojových souborů v ladicím programu.

Další kroky

V tomto kurzu jste se naučili shromažďovat a analyzovat data o využití procesoru. Pokud jste už dokončili průvodce profilerem , můžete absolvovat kurz, který ukazuje, jak efektivněji používat nástroje.

V tomto kurzu jste se naučili shromažďovat a analyzovat data o využití procesoru při ladění. Možná budete chtít zjistit další informace o profilaci buildů vydaných verzí pomocí profileru výkonu.

Analýza využití procesoru v Profileru výkonu