Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Az alkalmazás teljesítményproblémáinak vizsgálatához jó módszer a processzorhasználat cpu-profilozóval való megismerése. A Visual Studio processzorhasználati teljesítményeszköze a C++, C#/Visual Basic környezetben a kód végrehajtásával töltött aktív processzorhasználati időt és százalékot mutatja.
A CPU-használat eszköz a következő segítségére lehet:
A csapat kódbázisában lévő lassú vagy lefagyó folyamatok diagnosztizálása. Az eszköz segíthet diagnosztizálni a csapat éles kódjának problémáját. Automatikus elemzéseket és különböző nézeteket biztosít az adatokról, így elemezheti és diagnosztizálhatja a teljesítményproblémákat.
A DevOps-forgatókönyvek teljesítményproblémáinak azonosítása Az eszköz például segíthet, ha az ügyfél azt jelenti, hogy egyes kérések vagy megrendelések nem jutnak el a kiskereskedelmi webhelyre a főszezonban. A problémák gyakran a gyártási környezetben jelentkeznek, és akkor nehéz a hibakeresés, de ez az eszköz segíthet elegendő információ és bizonyíték gyűjtésében. A nyomkövetési fájl összegyűjtése után az elemzés segítségével gyorsan megértheti a lehetséges okokat, és javaslatokat tehet a kód kontextusában, hogy elvégezhesse a következő lépéseket a probléma megoldásához.
Magas processzorhasználat ellenőrzése Ha a késési probléma nem szerepel egy API-kérésben, akkor ellenőrizheti a processzorhasználati eszközzel kapcsolatos magas processzorhasználatot és egyéb kapcsolódó problémákat. A CPU-használat eszközzel azonosíthatja a szűk keresztmetszeteket, így szűkítheti az optimalizálás helyét.
A CPU-kihasználtság eszköz mind a helyi naplózási munkamenetek, mind pedig az éles környezetek esetében hasznos. A CPU használat eszköz futtatásához használja a billentyűparancsot, Alt+F2, majd válassza a CPU használat, vagy nyisson meg egy már összegyűjtött nyomkövetést olyan eszközökkel, mint a dotnet-trace vagy a dotnet-monitor. (.NET éles kód esetében valószínűleg így gyűjtene trace-eket.)
A CPU-használat eszközt futtathatja egy megnyitott Visual Studio-projektben, egy telepített Microsoft Store-alkalmazásban, vagy egy futó alkalmazáshoz vagy folyamathoz csatolva. A processzorhasználati eszközt kiadási vagy hibakeresési buildeken futtathatja. További információ: Profilkészítési eszközök futtatása kiadási vagy hibakeresési verziókon.
Az alábbi utasítások bemutatják, hogyan használhatja a CPU-használat eszközt hibakereső nélkül a Visual Studio Performance Profiler használatával. A példák egy helyi gépen lévő kiadási buildet használnak. A kiadási buildek biztosítják a legjobb képet az alkalmazás tényleges teljesítményéről. A processzorhasználati eszköz használatával a teljesítmény javítását bemutató oktatóanyagért tekintse meg Esettanulmányt: Útmutató a kódoptimalizálásához.
A helyi gép általában a telepített alkalmazásvégrehajtást replikálja a legjobban. Ha távoli eszközről szeretne adatokat gyűjteni, futtassa az alkalmazást közvetlenül az eszközön, ne távoli asztali kapcsolaton keresztül.
CPU-kihasználtsági adatok gyűjtése
A Visual Studio-projektben állítsa a megoldáskonfigurációt kiadásra , és válassza ki az üzembehelyezési célt.
Az üzembehelyezési cél általában megegyezik a projekt nevével, amely egy helyi üzembe helyezést jelez.
Válassza a Hibakeresés>Teljesítményprofil lehetőséget.
Az Elérhető eszközökterületen válassza a Processzorhasználatlehetőséget, majd a Startlehetőséget.
Ha a profilkészítő indítása előtt engedélyezi a Indítás szüneteltetve opciót, nem kerülnek gyűjtésre adatok, amíg a diagnosztikai munkamenet nézetben a Rögzít gombot nem választja.
Jegyzet
Egyes projekttípusoknál, például a CMake-hez, az indítási célértéket végrehajthatóra kell állítania. További információ: Mely eszközök támogatottak a projektemben? Az eszköz hatékonyabbá tétele érdekében további információt Profiler beállításainak optimalizálásacímű témakörben talál.
Az alkalmazás elindítása után a diagnosztikai munkamenet megkezdődik, és megjeleníti a processzorhasználati adatokat. Ha befejezte az adatgyűjtést, válassza a Adatgyűjtés leállításalehetőséget.
A CPU-használat eszköz elemzi az adatokat, és megjeleníti a jelentést. 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.
A Szűrő legördülő listában jelölje ki vagy törölje a megjelenítendő szálak kijelölését, és a Keresés mezőben keressen egy adott szálat vagy csomópontot.
CPU-kihasználtsági adatoszlopok
| Név | Leírás |
|---|---|
| Teljes PROCESSZOR [egység, %] |
A processzorszámítási idő ezredmásodperce, valamint a függvény hívásai által használt processzorszázalék, valamint a függvény által hívott függvények a kiválasztott időtartományban. Ez eltér a cpu-kihasználtság idősordiagramtól, amely összehasonlítja az időtartományban lévő teljes CPU-tevékenységet a teljes rendelkezésre álló cpu-val. |
| Saját CPU [egység, %] |
A processzorszámítási idő ezredmásodperce és a függvényhez intézett hívások által használt processzorszázalék a kiválasztott időtartományban, a függvény által hívott függvények kivételével. |
| modul | Egyes nézetekben megjelenik a Modul oszlop, amely a függvényt tartalmazó modul nevét jeleníti meg. |
A CPU-elemzések elemzése
Ha a Top Insights szakaszban bármilyen megállapítás megjelenik, a megadott hivatkozással további információt kaphat az azonosított problémáról. Emellett a Copilot használata esetén a A Copilot kérése gomb megnyitja a Copilot csevegőablakát, és a Copilot javaslatokat ad a kód és az azonosított problémák alapján.
További információ: CPU Insights.
Cpu-kihasználtság elemzése
A CPU-használati jelentés részletes elemzéséhez először nyissa meg az egyik részletes jelentésnézetet:
Kattintson a Részletek megnyitása elemre a jelentés összefoglaló lapján, vagy válassza ki az egyik felső függvényt a Függvények nézet megnyitásához.
Az Aktuális nézet listában kiválaszthatja a részletes jelentésnézetek egyikét.
Az alábbi táblázat a részletes nézetek leírását tartalmazza.
| Megtekintés | Leírás |
|---|---|
| Hívó/hívott | Egy adott függvény processzoridejének részletes nézete, az azt meghívó függvény(ek) és a meghívott függvény(ek) részletes nézete. A teljesítményadatok összesítve lesznek az adatgyűjtési időszakra vonatkozóan. A hívási útvonal bejárásához kiválaszthatja a hívó és hívott függvényeket. |
| Hívásfa | A függvény hívási útvonalának hierarchikus nézete. A legtöbb processzoridőt igénybe vevő forró útvonalak azonosítására szolgál. |
| Modulok | Az egyes modulokban töltött cpu-idő megtekintése az adatgyűjtési időszakban összesítve. Olyan modulok azonosítására szolgál, 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. |
| Functions | Az egyes függvényekben töltött cpu-idő megtekintése az adatgyűjtési időszakban összesítve. Azon függvények azonosítására használható, amelyek a magas hívásszám és/vagy teljesítményproblémák kombinációja miatt lehetnek teljesítménybeli szűk keresztmetszetek. |
| Lánggrafikon | A függvény hívási útvonalának hierarchikus nézete egy lánggráfos vizualizációban. A legtöbb processzoridőt igénybe vevő forró útvonalak azonosítására szolgál. |
A hívó/hívott nézet kivételével minden nézetben a diagnosztikai jelentés a Teljes CPUalapján van rendezve, a legmagasabbtól a legalacsonyabbig. Az oszlopfejlécek kiválasztásával módosíthatja a rendezési sorrendet vagy a rendezési oszlopot. Kattintson duplán egy olyan függvényre, amely érdekli, és látni fogja a függvény forrását, valamint kiemelve, hogy hol van az adott függvényben töltött idő. A táblázat olyan adatokat tartalmazó oszlopokat jelenít meg, mint például a függvényben töltött idő, beleértve a hívott függvényeket (Teljes CPU), valamint egy második oszlop, amely a függvényben töltött időt jeleníti meg, kivéve a hívott függvényeket (Önálló CPU).
Ezek az adatok segítenek felmérni, hogy maga a függvény teljesítménybeli szűk keresztmetszet-e. Határozza meg, hogy a metódus mennyi adatot jelenít meg annak megállapításához, hogy a külső kód- vagy futtatókörnyezeti kódtárak miatt a végpontok lassúak vagy erőforrás-használattal járnak-e.
További információért a Flame Graph használatáról, lásd: Azonosítsa a forró útvonalakat a Flame Graph segítségével.
Hívásfa a CPU-használathoz
A hívásfa megtekintéséhez válassza ki a szülőcsomópontot a jelentésben. Alapértelmezés szerint a CPU-használat lap megnyílik a Hívó/Hívásfogadó nézetben. Az Aktuális nézet legördülő listában válassza Hívásfalehetőséget.
A A gyakori elérési út kibontása és Gyakori elérésű útvonal megjelenítése gombokra kattintva megtekintheti azokat a függvényhívásokat, amelyek a hívásfa nézetben a legmagasabb százalékos processzorhasználatot használják.
Hívásfa szerkezet
| 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ő kód] csomópont. A csomópont tartalmazza az alkalmazást elindí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ásnak. |
|
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 rendelkeznek adatokkal. Ha Külső kód megjelenítése le van tiltva, az alkalmazásmetelyek [Külső kód] csomópontot is tartalmazhatnak. |
A hívásfa váratlan adatainak megértéséhez lásd : A hívásfa ismertetése.
Külső kód
A rendszer- és keretrendszerfüggvényeket, amelyeket a kódod hajt végre, azokat nevezik külső kód-nak/nek. A külső kódfüggvények 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 processzorhasználati hívásfa egy felhasználói metódus külső funkcióit gyűjti össze egy [Külső hívás] csomópontba.
A külső kód hívási útvonalainak megtekintéséhez a jelentés főösszegző lapján (jobb oldali ablaktáblán) törölje a jelölést Csak saját kód megjelenítése a Beállítások legördülő listából, majd válassza a Alkalmazlehetőséget. (A Beállítások legördülő lista a jelentés fő összefoglaló oldalán érhető el, nem a részletes nézetekben.)
Ha letiltja a Csak a saját kódom megjelenítéselehetőséget, a CPU-használat oldal Hívásfa nézete kibővíti a külső kódhívásokat.
Számos külső kódhívási lánc mélyen beágyazott, így a lánc szélessége meghaladhatja a függvény neve oszlop megjelenítési szélességét. A függvénynevek ezután az alábbi képen látható módon jelennek meg.
A keresett függvénynév kereséséhez használja a keresőmezőt. Mutasson a kijelölt vonalra, vagy használja a vízszintes görgetősávot az adatok megtekintéséhez.
Aszinkron függvények a CPU-használat hívások fájában
Amikor a fordító aszinkron metódussal találkozik, létrehoz egy rejtett osztályt a metódus végrehajtásának szabályozásához. Fogalmilag az osztály egy állapotgép. Az osztály olyan fordító által létrehozott függvényekkel rendelkezik, amelyek aszinkron módon hívják meg az eredeti metódusokat, valamint a futtatáshoz szükséges visszahívásokat, ütemezőket és iterátorokat. Amikor egy szülőmetódus meghívja az eredeti metódust, a fordító eltávolítja a metódust a szülő végrehajtási környezetéből, és futtatja a rejtett osztály metódusait az alkalmazás végrehajtását vezérlő rendszer- és keretrendszerkód kontextusában. Az aszinkron metódusokat gyakran, de nem mindig hajtják végre egy vagy több különböző szálon. Ez a kód a processzorhasználati hívásfában jelenik meg a [Külső kód] csomópont gyermekeként, közvetlenül a fa felső csomópontja alatt.
Bontsa ki a létrehozott metódusokat a folyamatban lévő adatok megjelenítéséhez:
Többfolyamatos teljesítmény elemzése
A Visual Studio 2022 17.13-s verziójától kezdve többfolyamatos adatokat elemezhet a PROCESSZORhasználati eszközben. Így könnyebben elemezhetők a többfolyamatos alkalmazások, például a .NET Aspire teljesítménye. Ez a funkció lehetővé teszi, hogy egyetlen munkameneten belül megkülönböztetje és elemezze a cpu-kihasználtságot a folyamatok között, ami egyértelműbb betekintést nyújt az erőforrás-felhasználásba.
Az elemzéshez többfolyamatos adatokat kell gyűjtenie. Az adatok gyűjtéséhez válassza a Teljesítményprofil-kezelő processzorhasználati eszközének több folyamatból származó adatainak összegyűjtése lehetőséget.
Az alkalmazás processzorhasználatát ábrázoló idősordiagram az egyes folyamatokhoz különböző színkódolású teljesítményadatokat jelenít meg. A grafikonok halmozott területdiagramként jelennek meg.
A folyamatokat a cpu idővonal-grafikonjának bal felső részén található legördülő listával szűrheti. Amikor kiválaszt vagy töröl egy folyamatot, a profilkészítő összefoglaló oldala és a részletes jelentések az új kijelölés(ek) alapján frissülnek, ami pontosabb elemzést tesz lehetővé.
Hívásszám (.NET) gyűjtése
Ha a Függvény nézetben szeretné megtekinteni a hívásszámokat, a profilkészítő elindítása előtt engedélyezheti a beállítást. Ez a beállítás a .NET-projekttípusok esetében támogatott, és a folyamatot a profilkészítő alatt kell elindítani. A csatolási forgatókönyv nem támogatott.
A teljesítményprofilozóban válassza a processzorhasználat Beállítások ikont.
Engedélyezze a Hívásszám gyűjtése (csak .NET) lehetőséget.
Cpu-használati adatok gyűjtése.
Nyissa meg a Functions nézetet, és győződjön meg arról, hogy a Hívásszám oszlop láthatóra van állítva.
Ha nem látja az oszlopot, kattintson a jobb gombbal egy oszlopfejlécre a látható oszlopok kiválasztásához.