Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A hibakeresővel integrált CPU-használat diagnosztikai eszközzel végzett hibakeresés során teljesítményproblémákat talál. A processzorhasználatot hibakereső csatolása nélkül vagy egy futó alkalmazás megcélzásával is elemezheti. További információ: Profilkészítési eszközök futtatása kiadási vagy hibakeresési buildeken és Teljesítmény elemzése a cpu-profilkészítésihasználatával.
Amikor a hibakereső szünetel, a Diagnosztikai eszközök ablakban található CPU-használat eszköz információkat gyűjt az alkalmazásban végrehajtó függvényekről. Az eszköz felsorolja a munkát végző függvényeket, és egy ütemtervdiagramot biztosít, amellyel a mintavételezési munkamenet adott szegmenseire összpontosíthat.
Fontos
A hibakereső által integrált diagnosztikai eszközök támogatottak a Visual Studio .NET-fejlesztéséhez, beleértve a ASP.NET, a ASP.NET Core és a natív/C++ fejlesztést. A megfelelő Visual Studio számítási feladat szükséges. A hibakeresővel (Diagnosztikai eszközök ablak) rendelkező profilkészítő eszközök futtatásához Windows 8 és újabb verziókra van szükség.
Ebben az oktatóanyagban a következőket fogja megtanulni:
- CPU-kihasználtsági adatok gyűjtése
- Cpu-kihasználtsági adatok elemzése
1. lépés: CPU-kihasználtsági adatok gyűjtése
Nyissa meg a Visual Studióban hibakeresésre használni kívánt projektet, és állítson be egy töréspontot az alkalmazásban azon a ponton, ahol meg szeretné vizsgálni a processzorhasználatot.
Állítson be egy második töréspontot az elemezni kívánt kód függvényének vagy régiójának végén.
Két töréspont beállításával az adatgyűjtést a kód elemezni kívánt részeire korlátozhatja.
A Diagnosztikai eszközök ablak automatikusan megjelenik, kivéve, ha kikapcsolta. Az ablak újbóli megjelenítéséhez kattintson Hibakeresés>Windows>Diagnosztikai eszközök megjelenítéseelemre.
Az eszköztár Eszközök kijelölése beállításával kiválaszthatja, hogy megjelenjen-e a processzorhasználat, a memóriahasználat, vagy mindkettő. Ha a Visual Studio Enterprise-t futtatja, az IntelliTrace-t is engedélyezheti vagy letilthatja az Eszközök>Beállítások>IntelliTrace.
Elsősorban a processzorkihasználtságot fogjuk figyelembe venni, ezért győződjön meg arról, hogy processzorhasználati engedélyezve van (alapértelmezés szerint engedélyezve van).
Kattintson a(z) Hibakeresés>Hibakeresés indítása gombra (vagy a(z) Indítás gombra az eszköztáron, vagy nyomja meg a(z) F5billentyűt).
Amikor az alkalmazás betöltődik, megjelenik a Diagnosztikai eszközök összefoglaló nézete. Ha meg kell nyitnia az ablakot, kattintson Hibakeresés>Windows>Diagnosztikai eszközök megjelenítéseelemre.
További információért az eseményekről lásd: a Diagnosztikai eszközök ablakának Események lapjának keresése és szűrése.
Futtassa azt a forgatókönyvet, amely az első töréspont aktiválását okozza.
Amíg a hibakereső szüneteltetve van, engedélyezze a processzorhasználati adatok gyűjtését, majd nyissa meg a CPU-használat lapot.
Amikor a Felvétel indítása lehetőséget választja, a Visual Studio elkezdi rögzíteni a függvényeket, és mennyi időt vesz igénybe a végrehajtásuk. Ezeket az összegyűjtött adatokat csak akkor tekintheti meg, ha az alkalmazás leállt egy törésponton.
Amikor a CPU-profil rögzítéselehetőséget választja, a Visual Studio elkezdi rögzíteni a függvényeket, és a végrehajtásukhoz szükséges időt. Ezeket az összegyűjtött adatokat csak akkor tekintheti meg, ha az alkalmazás leállt egy törésponton.
Nyomja le az F5 billentyűt az alkalmazás futtatására a második töréspontig.
Most már rendelkezik az alkalmazás teljesítményadataival, kifejezetten a két töréspont között futó kód régiójára vonatkozóan.
A profilkészítő megkezdi a száladatok előkészítését. Várjon, amíg befejeződik.
A CPU-használat eszköz megjeleníti a jelentést a CPU-használat lapon.
Ha egy konkrétabb elemezendő kódterületet szeretne kijelölni, válasszon ki egy régiót a CPU idővonalán (a profilkészítési adatokat megjelenítő régiónak kell lennie).
Ezen a ponton megkezdheti az adatok elemzését. Ha nem tud adatokat gyűjteni vagy megjeleníteni, olvassa el Profilkészítési hibák elhárítása ésproblémák elhárítása című témakört.
Borravaló
A teljesítményproblémák azonosításakor több mérést kell végeznie. A teljesítmény természetesen eltér a futtatástól, és a kód elérési útjai általában lassabban futnak az első futtatáskor az egyszeri inicializálási munka, például a DLL-ek betöltése, a JIT-összeállítási módszerek és a gyorsítótárak inicializálása miatt. Ha több mérést végez, jobb képet kaphat a megjelenített metrika tartományáról és mediánjáról, így összehasonlíthatja az első alkalommal a kódterület állandó állapotú teljesítményét.
2. lépés: Cpu-kihasználtsági adatok elemzése
Javasoljuk, hogy kezdje el elemezni az adatokat a CPU-használat alatt lévő függvények listájának vizsgálatával, a leginkább működő függvények azonosításával, majd az egyes függvények részletesebb vizsgálatával.
A Top Functions listában vizsgálja meg, hogy melyek azok a függvények, amelyek a legtöbbet dolgoznak.
A Top Functions listában válasszon ki egy olyan alkalmazásfüggvényt, amely sok munkát végez.
Ha kiválaszt egy függvényt, a Függvények nézet a bal oldali panelen nyílik meg. Válassza Hívó/Híváskereső nézetet a legördülő menüből.
Borravaló
A bal oldali panelen lévő függvények sorrendben jelennek meg, kezdve azokkal, akik a legtöbb munkát végzik (nem hívási sorrendben vannak). Ez segít a leghosszabb ideig futó függvények gyors azonosításában.
Ebben a nézetben a kijelölt függvény megjelenik a címsorban és az Aktuális függvény mezőben (Ebben a példában a DoWork). A bal oldalon a Hívó függvényekmező alatt az aktuális függvényt meghívó függvény látható, a jobb oldali Hívott függvények mezőben pedig az aktuális függvény által hívott függvények jelennek meg. (Az aktuális függvény módosításához bármelyik jelölőnégyzetet kijelölheti.)
Ez a nézet megmutatja a függvény teljesítéséhez szükséges teljes időt (ms), valamint az összesített alkalmazás futási idejének százalékos arányát, amelyet a függvény használ fel. függvénytörzs a függvénytörzsben töltött teljes időt (és az idő százalékát) is megjeleníti, kizárva a hívásokkal és a hívott függvényekkel töltött időt.
Borravaló
A függvény törzsének magas értékei teljesítménybeli szűk keresztmetszetet jelezhetnek magában a függvényben.
Ha magasabb szintű nézetet szeretne látni, amely a függvények meghívásának sorrendjét mutatja, válassza Hívásfa lehetőséget a panel tetején található legördülő listából.
Az ábrán szereplő egyes számozott területek az eljárás egy lépéséhez kapcsolódnak.
Image Leírás
A CPU-használat hívásfa legfelső szintű csomópontja, amely az alkalmazást jelöli.
A legtöbb alkalmazásban, ha a Külső kód megjelenítése lehetőség le van tiltva, a második szintű csomópont egy [Külső hívás] csomópont, amely tartalmazza az alkalmazást indító és leálló rendszer- és keretrendszerkódot, megrajzolja a felhasználói felületet, vezérli a szálütemezést, és egyéb alacsony szintű szolgáltatásokat biztosít az alkalmazás számára.
A második szintű csomópont gyermekei a felhasználói kód metódusai és aszinkron rutinok, amelyeket a második szintű rendszer és a keretrendszerkód hív vagy hoz létre.
A metódus gyermekcsomópontjai csak a szülőmetódus hívásaihoz tartalmaznak adatokat. Ha a Külső kód megjelenítése le van tiltva, az alkalmazás metódusai [Külső hívás] csomópontot is tartalmazhatnak. Az oszlopértékekkel kapcsolatos további információk:
Teljes CPU- azt jelzi, hogy a függvény és az általa hívott függvények mennyi munkát végeztek. A magas teljes CPU-értékek a legköltségesebb függvényeket jelölik.
A önálló CPU azt jelzi, milyen mennyiségű munkát végzett a függvény törzsének kódja, kizárva az általa hívott függvények által végzett munkát. A magas saját CPU- értékek teljesítménybeli szűk keresztmetszetet jelezhetnek a függvényen belül.
Modulok A függvényt tartalmazó modul neve vagy a függvényeket tartalmazó modulok száma egy [Külső hívás] csomópontban.
A hívásfa nézetben a processzor legnagyobb százalékát használó függvényhívások megtekintéséhez kattintson a A gyakori elérési út kibontásaelemre. A kritikus útvonal segíthet a vizsgálatot azokra a területekre összpontosítani, amelyek a legnagyobb hatással vannak.
Jegyzet
Ha a hívásfában "hibás" kódként vagy "nem végigjárható veremként" megjelölt kódot lát, ez arra utal, hogy a Windows eseménykövetésének eseményei valószínűleg eldobásra kerültek. Próbálja meg másodszor is összegyűjteni ugyanazt a nyomkövetést a probléma megoldásához.
Ha más nézetet szeretne látni az adatokról, válassza Flame Graph a panel tetején található legördülő listából.
A lángdiagram a hívásfa más vizualizációját biztosítja, amely segíthet az adatok elemzésében. További információ: Gyakori elérésű útvonalak azonosítása lángdiagrammal.
Ha a függvények vagy modulok szerint összesített adatok nézeteit szeretné megtekinteni, válassza a Függvények vagy Modulok lehetőséget a panel tetején található legördülő listából.
Ezek a nézetek segítenek azonosítani azokat a függvényeket vagy modulokat, amelyek a magas hívásszám és/vagy teljesítményproblémák kombinációja miatt teljesítménybeli szűk keresztmetszetek lehetnek.
A függvénylistában vizsgálja meg azokat a függvényeket, amelyek a legtöbbet dolgoznak.
Borravaló
A függvények sorrendben jelennek meg, kezdve azokkal, amelyek a legtöbb munkát végzik (nem a hívásuk sorrendjében). Ez segít a leghosszabb ideig futó függvények gyors azonosításában.
A függvénylistában kattintson duplán az egyik olyan alkalmazásfüggvényre, amely sok munkát végez.
Ha duplán kattint egy függvényre, megnyílik a Függvények nézet a bal oldali panelen. Válassza Hívó/Híváskereső nézetet a legördülő menüből.
Ebben a nézetben a kijelölt függvény megjelenik a címsorban és az Aktuális függvény mezőben (Ebben a példában a DoWork). A bal oldalon a Hívó függvényekmező alatt az aktuális függvényt meghívó függvény látható, a jobb oldali Hívott függvények mezőben pedig az aktuális függvény által hívott függvények jelennek meg. (Az aktuális függvény módosításához bármelyik jelölőnégyzetet kijelölheti.)
Ez a nézet megmutatja a függvény teljesítéséhez szükséges teljes időt (ms), valamint az összesített alkalmazás futási idejének százalékos arányát, amelyet a függvény használ fel. függvénytörzs a függvénytörzsben töltött teljes időt (és az idő százalékát) is megjeleníti, kizárva a hívásokkal és a hívott függvényekkel töltött időt.
Borravaló
A függvény törzsének magas értékei teljesítménybeli szűk keresztmetszetet jelezhetnek magában a függvényben.
Ha magasabb szintű nézetet szeretne látni, amely a függvények meghívásának sorrendjét mutatja, válassza Hívásfa lehetőséget a panel tetején található legördülő listából.
Az ábrán szereplő egyes számozott területek az eljárás egy lépéséhez kapcsolódnak.
Image Leírás
A CPU-használat hívásfa legfelső szintű csomópontja, amely az alkalmazást jelöli.
A legtöbb alkalmazásban, amikor a Külső kód megjelenítése lehetőség le van tiltva, a második szintű csomópont egy [Külső kód] csomópont, amely tartalmazza az alkalmazást indító és leállító rendszert és keretrendszerkódot, megrajzolja a felhasználói felületet, vezérli a szálütemezést, és egyéb alacsony szintű szolgáltatásokat biztosít az alkalmazás számára.
A második szintű csomópont gyermekei a felhasználói kód metódusai és aszinkron rutinok, amelyeket a második szintű rendszer és a keretrendszerkód hív vagy hoz létre.
A metódus gyermekcsomópontjai csak a szülőmetódus hívásaihoz tartalmaznak adatokat. Ha Külső kód megjelenítése le van tiltva, az alkalmazásmetelyek [Külső kód] csomópontot is tartalmazhatnak. Az oszlopértékekkel kapcsolatos további információk:
Teljes CPU- azt jelzi, hogy a függvény és az általa hívott függvények mennyi munkát végeztek. A magas teljes CPU-értékek a legköltségesebb függvényeket jelölik.
A önálló CPU azt jelzi, milyen mennyiségű munkát végzett a függvény törzsének kódja, kizárva az általa hívott függvények által végzett munkát. A magas saját CPU- értékek teljesítménybeli szűk keresztmetszetet jelezhetnek a függvényen belül.
modulok A függvényt tartalmazó modul neve vagy a függvényeket tartalmazó modulok száma egy [Külső kód] csomópontban.
A hívásfa nézetben a processzor legnagyobb százalékát használó függvényhívások megtekintéséhez kattintson a A gyakori elérési út kibontásaelemre. A kritikus útvonal segíthet a vizsgálatot azokra a területekre összpontosítani, amelyek a legnagyobb hatással vannak.
Jegyzet
Ha a hívásfában "hibás" kódként vagy "nem végigjárható veremként" megjelölt kódot lát, ez arra utal, hogy a Windows eseménykövetésének eseményei valószínűleg eldobásra kerültek. Próbálja meg másodszor is összegyűjteni ugyanazt a nyomkövetést a probléma megoldásához.
Ha más nézetet szeretne látni az adatokról, válassza Flame Graph a panel tetején található legördülő listából.
A lángdiagram a hívásfa más vizualizációját biztosítja, amely segíthet az adatok elemzésében. További információ: Gyakori elérésű útvonalak azonosítása lángdiagrammal.
Ha a függvények vagy modulok szerint összesített adatok nézeteit szeretné megtekinteni, válassza a Függvények vagy Modulok lehetőséget a panel tetején található legördülő listából.
Ezek a nézetek segítenek azonosítani azokat a függvényeket vagy modulokat, amelyek a magas hívásszám és/vagy teljesítményproblémák kombinációja miatt teljesítménybeli szűk keresztmetszetek lehetnek.
Külső kód megtekintése
A külső kód olyan rendszer- és keretrendszerösszetevők függvényei, amelyeket az ön által írt kód hajt végre. A külső kód olyan függvényeket tartalmaz, amelyek elindítják és leálltatják az alkalmazást, megrajzolják a felhasználói felületet, vezérlik a szálkezelést, és egyéb alacsony szintű szolgáltatásokat biztosítanak az alkalmazásnak. A legtöbb esetben nem érdekli a külső kód, ezért a CPU-használat eszköz egy felhasználói metódus külső funkcióit egyetlen [Külső hívás] csomópontba gyűjti.
Ha meg szeretné tekinteni a külső kód hívási útvonalait, törölje a Show Just My Code jelölését a fő Beállítások lista Diagnosztikai eszközök ablakában, majd válassza az Alkalmaz lehetőséget.
A külső kód olyan rendszer- és keretrendszerösszetevők függvényei, amelyeket az ön által írt kód hajt végre. A külső kód olyan függvényeket tartalmaz, amelyek elindítják és leálltatják az alkalmazást, megrajzolják a felhasználói felületet, vezérlik a szálkezelést, és egyéb alacsony szintű szolgáltatásokat biztosítanak az alkalmazásnak. A legtöbb esetben nem érdekli a külső kód, ezért a CPU-használat eszköz egy felhasználói metódus külső funkcióit egyetlen [Külső hívás] csomópontba gyűjti.
Ha meg szeretné tekinteni a külső kód hívási útvonalait, távolítsa el a jelölést a Csak saját kód megjelenítése négyzetből a Beállítások listában, majd válassza az Alkalmazáslehetőséget.
Vegye figyelembe, hogy számos külső kódhívási lánc mélyen beágyazva van, így a függvénynév oszlop szélessége meghaladhatja az összes, de a legnagyobb számítógép-monitorok megjelenítési szélességét. Ha ez történik, a függvénynevek [...]jelennek meg.
A keresőmezővel keresse meg a keresett csomópontot, majd a vízszintes görgetősávon jelenítse meg az adatokat.
Borravaló
Ha külső kódot profiloz, amely Windows-függvényeket hív meg, győződjön meg arról, hogy a legfrissebbpdb fájlokat használja. Ezek a fájlok nélkül a jelentésnézetek olyan Windows-függvényneveket fognak felsorolni, amelyek rejtélyesek és nehezen érthetők. Ha többet szeretne megtudni arról, hogyan biztosíthatja, hogy rendelkezzen a szükséges fájlokkal, olvassa el a következő részt: Szimbólum (.pdb) és forrásfájlok megadása a hibakeresőben.
Következő lépések
Ebben az oktatóanyagban megtanulta, hogyan gyűjthet és elemezhet processzorhasználati adatokat. Ha már befejezte a profilozótúráját, érdemes lehet áttekinteni egy oktatóanyagot, amely bemutatja, hogyan lehet az eszközöket hatékonyabban használni.
Esettanulmány: Útmutató a kód optimalizálásához
Ebben az oktatóanyagban megtanulta, hogyan gyűjthet és elemezhet processzorhasználati adatokat hibakeresés közben. Érdemes lehet többet megtudni a kiadási buildek profilkészítéséről a Performance Profiler használatával.