Dans Intel VTune Amplifier (qui fait désormais partie d'Intel oneAPI Base Toolkit), l'échantillonnage de code est une technique d'analyse des performances qui interrompt périodiquement l'exécution du programme pour enregistrer la pile d'appels. Cela fournit une représentation statistique de l'endroit où le programme passe son temps, montrant quelles fonctions et sections de code sont les plus fréquemment exécutées. Contrairement à l'instrumentation, il ne modifie pas le code de l'application, ce qui entraîne une réduction des frais généraux et une précision améliorée pour la mesure des performances de type production.
Voici un aperçu de son fonctionnement et de ses principales caractéristiques :
* Interruptions périodiques : L'amplificateur VTune utilise des compteurs de performances matérielles ou une minuterie pour interrompre le programme en cours à intervalles réguliers. Ces intervalles sont configurables, vous permettant de contrôler le taux d'échantillonnage (des échantillons plus fréquents donnent plus de détails mais augmentent la surcharge).
* Capture de la pile d'appels : À chaque interruption, l'amplificateur VTune capture la pile d'appels actuelle – la séquence d'appels de fonction menant au point d'exécution actuel. Cela montre le flux d'exécution du programme.
* Profilage statistique : Parce qu'il s'agit d'un échantillonnage, c'est une représentation statistique. Il ne suit pas *chaque* instruction, mais fournit plutôt une image probabiliste de l'endroit où le temps est passé. Les fonctions très fréquentes apparaîtront plus souvent dans les échantillons, indiquant un temps d'exécution plus élevé.
* Faibles frais généraux : Par rapport au profilage basé sur l’instrumentation, l’échantillonnage de code introduit généralement une surcharge moindre. Cela signifie qu'il est moins susceptible de modifier de manière significative le comportement et le timing du programme, ce qui conduit à des résultats plus précis, en particulier pour les applications de longue durée.
* Convient à différents types de programmes : L'échantillonnage de code peut profiler un large éventail d'applications, y compris celles avec un multithreading complexe, car il capture des instantanés de l'exécution des différents threads.
* Présentation des données : VTune présente les données échantillonnées de différentes manières, notamment des graphiques d'appels, des points chauds et d'autres visualisations, vous permettant d'identifier facilement les goulots d'étranglement des performances.
Avantages de l'échantillonnage de code :
* Faible surcharge : Impact minimal sur le temps d'exécution du programme.
* Convient aux applications de longue durée : Peut profiler efficacement les programmes qui s'exécutent sur des périodes prolongées.
* Gère bien les applications multithread : Capture les informations de plusieurs threads simultanément.
* Peut profiler le code CPU et GPU (en fonction de la version et de la configuration de VTune) : Fournit une vision globale des performances.
Inconvénients de l'échantillonnage de code :
* Nature statistique : Les résultats sont probabilistes, fournissant une estimation du temps d'exécution plutôt que des mesures précises. Du code rarement exécuté peut être manqué.
* Le taux d'échantillonnage nécessite un réglage minutieux : Un taux trop bas risque de passer à côté de détails importants, tandis qu'un taux trop élevé peut entraîner des frais généraux importants.
* Peut ne pas capturer avec précision les fonctions éphémères : Les appels de fonction très brefs peuvent ne pas être échantillonnés assez souvent pour être mis en évidence.
En résumé, l'échantillonnage de code dans Intel VTune est une technique puissante et efficace d'analyse des performances, particulièrement adaptée pour identifier les goulots d'étranglement des performances dans les applications complexes et de longue durée où une faible surcharge est cruciale. Il fournit un aperçu statistique de l’exécution du programme, montrant où est passé la majorité du temps.
|