Hot spot (programozás)

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

Feleslegesen erőforrás-igényes kódrészletek

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.

Erőforrás-igényes területek azonosítása

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.

Lásd még

Jegyzetek

  1. Értékelje a Linux teljesítményét POWER rendszeren  . www.ibm.com (2012. június 12.). Letöltve: 2016. január 23.
  2. ↑ 1 2 3 A Linux teljesítményének mérése POWER számítógépeken . www.ibm.com (2013. január 17.). Hozzáférés időpontja: 2016. január 6.
  3. ↑ 1 2 Párhuzamos optimalizálás tervezése | Intel® fejlesztői zóna . software.intel.com. Hozzáférés időpontja: 2016. január 6.

Linkek