Hotspot ( eng. hotspot [1] ) - a program kódjának egy része , amely a processzor végrehajtható utasításainak nagy részét tartalmazza [2] , vagy amelynek végrehajtására a processzor sok időt tölt [3] (néhány az utasítások gyorsabban hajtódnak végre, míg mások lassabbak) ). A hotspotok a program szűk keresztmetszetei lehetnek , ha a kód elégtelensége miatt extra terhelést kapnak, ilyenkor optimalizálhatók [3] .
A szükségtelenül erőforrás-igényes kódszakaszok ( a program „szűk keresztmetszete” ) a probléma megoldásához lassabb algoritmus választásának, az alkalmazás architektúrájának nem teljesen átgondoltnak, a mikroprocesszor működési jellemzőinek , az I/O műveletekre való várakozásnak stb.
Az alkalmazásarchitektúra hibája miatt erőforrás-igényes kódrészletre példa az első szál spinlock használata, hogy megkapja az eredményt a második száltól, amely számításokat végez, feltéve, hogy az első szál hozzá lett rendelve. a lehető legmagasabb prioritás (felhasználói interakció), és a második, a legmagasabb alacsony (háttér számítástechnika). Mert A spinlock egy végtelen lekérdezési hurok a változó értékére , és a folyamat prioritása magas, akkor az ütemező az idő nagy részét az első folyamat végrehajtására fordítja, a második folyamat pedig sokkal kevesebb processzoridőt kap. . Ennek eredményeként a processzoridő nagy része elvész. A probléma megoldása ebben az esetben az lenne, ha a spinlock helyett egy blokkoló szemafort használnánk, vagy megváltoztatnánk a szálak prioritását.
A program " hot spotjainak " azonosítása és elemzése irányokat mutathat a további optimalizáláshoz [2] .
A mélyelemzés külön-külön is elvégezhető a különböző processzorarchitektúrákhoz , és magában foglalhatja a processzor különböző gyorsítótár -szintjei terhelésének elemzését, a memóriaelérési minták elemzését, a processzorciklus-kihasználtsági számláló tanulmányozását stb. [2]
A programban az erőforrás-igényes területek azonosítására speciális programokat használnak, amelyeket profilozóknak (profilozóknak) neveznek.
A Unix operációs rendszercsalád leghíresebb profilkészítői a gprof és a Callgrind . Linuxon az OProfile és a perf is elérhető . Sok fejlett IDE rendelkezik beépített profilozóval, mint például a Microsoft Visual Studio , a NetBeans és így tovább.
Két fő profilalkotási módszer létezik: a kódvégrehajtási idő elemzése (Callgrind) és a processzorteljesítmény-számlálók (OProfile). Az első módszer lehetővé teszi olyan kódok megtalálását, amelyek végrehajtása hosszú ideig tart (például egy hosszú távú szemaforzár). A második módszer lehetővé teszi olyan kódrészletek megtalálását, amelyek jobban terhelik a processzort, mint mások (például erőforrás-igényes számítások). Mindkét módszer használatával elemezheti a kódrészleteket, hogy megértse, miért tart túl sokáig a végrehajtásuk. Ha egy függvény végrehajtása hosszú ideig tart, de a processzorteljesítmény-számlálók szerint szinte nem tölti be a processzort, akkor lehet, hogy hosszú blokkja vagy hosszú rendszerhívása van az operációs rendszer kernelének.