In Intel VTune Amplifier (nu onderdeel van Intel oneAPI Base Toolkit) is code sampling een prestatieanalysetechniek die periodiek de uitvoering van het programma onderbreekt om de call-stack op te nemen. Dit biedt een statistische weergave van waar het programma zijn tijd doorbrengt, en laat zien welke functies en codesecties het vaakst worden uitgevoerd. In tegenstelling tot instrumentatie wijzigt het de code van de applicatie niet, wat leidt tot minder overhead en verbeterde nauwkeurigheid voor productie-achtige prestatiemetingen.
Hier volgt een overzicht van hoe het werkt en de belangrijkste kenmerken ervan:
* Periodieke onderbrekingen: De VTune-versterker maakt gebruik van hardwareprestatietellers of een timer om het lopende programma met regelmatige tussenpozen te onderbreken. Deze intervallen zijn configureerbaar, waardoor u de bemonsteringssnelheid kunt regelen (frequentere monsters geven meer details maar verhogen de overhead).
* Stack Capture aanroepen: Bij elke interrupt legt de VTune-versterker de huidige call-stack vast:de reeks functie-aanroepen die naar het huidige uitvoeringspunt leidt. Dit toont de uitvoeringsstroom van het programma.
* Statistische profilering: Omdat het een steekproef betreft, is het een statistische representatie. Het houdt niet *elke* instructie bij, maar geeft eerder een probabilistisch beeld van waar de tijd wordt besteed. Zeer frequente functies zullen vaker in de voorbeelden verschijnen, wat een hogere uitvoeringstijd aangeeft.
* Lage overhead: Vergeleken met op instrumentatie gebaseerde profilering brengt codebemonstering doorgaans minder overhead met zich mee. Dit betekent dat het minder waarschijnlijk is dat het gedrag en de timing van het programma aanzienlijk veranderen, wat leidt tot nauwkeurigere resultaten, vooral voor langlopende toepassingen.
* Geschikt voor diverse programmatypes: Codesampling kan een breed scala aan toepassingen profileren, inclusief toepassingen met complexe multithreading, omdat het momentopnamen maakt van de uitvoering van de verschillende threads.
* Gegevenspresentatie: VTune presenteert de verzamelde gegevens op verschillende manieren, waaronder oproepgrafieken, hotspots en andere visualisaties, zodat u eenvoudig prestatieknelpunten kunt identificeren.
Voordelen van codesteekproeven:
* Lage overhead: Minimale impact op de uitvoeringstijd van het programma.
* Geschikt voor langlopende toepassingen: Kan effectief programma's profileren die langere perioden duren.
* Kan goed omgaan met multi-threaded applicaties: Legt tegelijkertijd informatie uit meerdere threads vast.
* Kan zowel CPU- als GPU-code profileren (afhankelijk van de VTune-versie en configuratie): Biedt een holistisch beeld van prestaties.
Nadelen van codesteekproef:
* Statistische aard: De resultaten zijn probabilistisch en geven een schatting van de uitvoeringstijd in plaats van nauwkeurige metingen. Zelden uitgevoerde code kan gemist worden.
* De bemonsteringsfrequentie moet zorgvuldig worden afgestemd: Een te laag tarief kan belangrijke details over het hoofd zien, terwijl een te hoog tarief aanzienlijke overhead met zich mee kan brengen.
* Het kan zijn dat kortstondige functies niet nauwkeurig worden vastgelegd: Zeer korte functieaanroepen worden mogelijk niet vaak genoeg gesampled om te worden benadrukt.
Samenvattend is code sampling in Intel VTune een krachtige en efficiënte techniek voor prestatieanalyse, met name geschikt voor het identificeren van prestatieknelpunten in complexe en langlopende applicaties waarbij lage overhead cruciaal is. Het biedt een statistisch overzicht van de programma-uitvoering en laat zien waar de meeste tijd wordt besteed. |