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
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.
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.
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.
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.
DiagToolsSelectTool
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é).
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.
Další informace o událostech najdete v tématu Vyhledávání a filtrování na kartě Události v okně Diagnostické nástroje.
Spusťte scénář, který způsobí, že dojde k dosažení první zarážky.
Při pozastavení ladicího programu povolte shromažďování dat Využití procesoru a pak otevřete kartu Využití procesoru.
DiagToolsEnableCPUProfiling
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í.
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čí.
Nástroj Využití procesoru zobrazí sestavu v záložce Využití procesoru.
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).
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.
V seznamu funkcí prozkoumejte funkce, které dělají nejvíce práce.
DiagToolsCPUUsageFunctionList
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.
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ý.
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ý.
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.
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.
Obraz Popis Ve stromu volání Využití procesoru je uzel nejvyšší úrovně, který představuje aplikaci. 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ě. 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ě. 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.
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.
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.
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.
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