Sdílet prostřednictvím


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

Při používání ladicího programu s integrovaným diagnostickým nástrojem na sledování využití procesoru vyhledejte problémy s výkonem. 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 naleznete v tématu Spuštění nástrojů profilace na verzích pro vydání 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 . Windows 8 a novější je vyžadován ke spuštění profilovacích nástrojů pomocí ladicího programu (Diagnostické nástroje okno).

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 znovu zobrazit okno, 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í>Začít 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. Když je ladicí program pozastavený, povolte sběr dat o 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 lze zobrazit jenom v případě, že je aplikace zastavena na bodu přerušení.

  8. Stisknutím klávesy F5 spusťte aplikaci na druhý bod 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.

    Začne příprava dat vlákna profilerem. Počkejte, až se dokončí.

    snímek obrazovky s nástroji diagnostiky, který připravuje vlákna DiagToolsPreparingThreads

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

    Nástroj Využití procesoru zobrazí sestavu na kartě Využití procesoru.

    snímek obrazovky znázorňující kartu Diagnostické nástroje a využití procesoru.

    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 zobrazující Diagnostické nástroje, které vybírají časový segment

    Snímek obrazovky, který ukazuje diagnostické nástroje při výběru časového segmentu. DiagToolsSelectTimeSegment

    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ů.

    Tip

    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 zvažované metriky, což vám umožní porovnat počáteční výkon s výkonem v ustáleném stavu oblasti 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ího nebo Volaný.

    Snímek obrazovky zobrazující zobrazení volající a volaný nástrojů pro diagnostiku 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 Volající funkcea všechny funkce volané aktuální funkcí jsou zobrazeny v rámečku Volané funkce vpravo. (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 výjimkou č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í/Volaný.

    snímek obrazovky, který zobrazuje Diagnostické nástroje - Pohled na volajícího a volaného.

    V tomto zobrazení se vybraná funkce zobrazí v záhlaví a v poli Aktuální funkce (v tomto příkladu GetNumber). Funkce, která zavolala aktuální funkci, je zobrazena vlevo pod Volající funkce, a všechny funkce volané aktuální funkcí jsou zobrazeny v Volané funkce vpravo. (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 výjimkou času stráveného voláním a voláním funkcí. (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. Chcete-li zobrazit pohled 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: Strom volání

    Obraz Popis
    krok 1 Uzel nejvyšší úrovně ve stromu volání využití procesoru, 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 zobrazení externího kódu zakázáno, mohou metody aplikace obsahovat také 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 odvedl kód v těle funkce, kromě 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 ve stromovém zobrazení volání, klikněte na Rozbalit nejaktivnější cesta. Horká cesta vám může pomoct zaměřit se na oblast, která by měla největší dopad.

    snímek obrazovky zobrazující Hot Path nástroje diagnostiky

    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. Zkuste znovu shromáždit stejnou stopu, abyste vyřešili problém.

  4. Chcete-li zobrazit jiné zobrazení dat, vyberte Flame Graph z rozevíracího 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é spouštějí a zastavují aplikaci, 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 Zobrazit pouze můj kód ze seznamu 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í a zastavují, vykreslují 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ího kódu 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 Systému Windows, měli byste se ujistit, že máte nejaktuálnější .soubory pdb. Bez těchto souborů uvedou pohledy ve zprávě názvy funkcí systému Windows, které jsou záhadné a obtížně pochopitelné. Další informace o tom, jak zajistit, abyste měli potřebné soubory, najdete v části Určování souborů symbolů (.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 již dokončili prohlídku profileru , mohli byste si projít tutoriálem, který ukazuje, jak používat nástroje efektivněji.

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