Outils de profilage de données de bas niveau

En arrière-plan, Rational Developer for Power Systems Software Performance Advisor utilise plusieurs outils de profilage de données de bas niveau sur votre ordinateur AIX / POWER Linux. Ces outils comprennent tprof, oprofile, procstack, ps, le Moteur de débogage IBM et les rapports de transformation du compilateur.

tprof

Sur le système d'exploitation AIX, l'utilitaire tprof est la source principale de données de profilage de bas niveau. tprof est utilisé pour profiler là où du temps d'exécution du processeur est passé dans votre application.

L'utilitaire tprof fonctionne de la manière suivante. Toutes les 10 millisecondes, tprof récupère le point actuel de l'exécution dans le fichier binaire de votre application. Chaque point récupéré est appelé une "graduation". La distribution de ces graduations sur la durée de vie de l'exécution de votre application indique approximativement quelle quantité de temps processeur a été passée à différents emplacements à travers l'application.

Les données de profilage de bas niveau obtenues de tprof sont utilisées par plusieurs vues. Le Navigateur de hotspots utilise les données pour afficher un classement des fonctions les plus consommatrices de votre application. L'Afficheur de source de performance et la Vue Structure utilisent les données pour fournir les valeurs des graduations qui sont affichées au niveau des lignes ou des sections du code source. Le Navigateur de comparaison de hotspots utilise les données pour obtenir les valeurs des graduations et les comparer.

Des informations plus détaillées sur l'utilitaire tprof d'AIX sont disponibles sur le site Web du Centre de documentation d'IBM AIX : commande tprof.

procstack

Sur le système d'exploitation AIX, l'utilitaire procstack est utilisé pour profiler les fonctions appelantes et les fonctions appelées. Chaque seconde, procstack localise la fonction actuellement en cours d'exécution de votre application et parcourt son chemin d'appels pour déterminer la chaîne des fonctions utilisées pour atteindre la fonction actuellement en cours d'exécution. Le chemin des appels est parcouru jusqu'à atteindre la fonction main() de l'application. Ces informations d'appels des méthodes sont rassemblées et utilisées par le Navigateur d'appels.

L'utilitaire procstack fournit chaque chaîne d'appels échantillonnée pour la construction du Navigateur d'appels. Ces informations n'étant pas agrégées dans un graphique des appels, le Navigateur d'appels basé sur procstack d'AIX ne comporte pas de possibles chemins d'appels faux, au contraire de l'utilitaire oprofile de Linux.

Des informations plus détaillées sur l'utilitaire procstack d'AIX sont disponibles sur le site Web du Centre de documentation d'IBM AIX : commande procstack.

oprofile

Sur le système d'exploitation Linux, l'utilitaire oprofile remplit le même rôle que tprof sur AIX : il sert de source principale de données de profilage de bas niveau. L'utilitaire oprofile fonctionne de la même manière que tprof sur AIX. Cependant, la fréquence d'échantillonnage utilisée est tous les 150.000 cycles processeur. Sur un processeur cadencé à 3,5 GHz, cela équivaut à toutes les 43 microsecondes.

De façon similaire à tprof sur AIX, les données de oprofile sur Linux sont utilisées par le Navigateur de hotspots, l'Afficheur de source de performance, la Vue Structure et le Navigateur de comparaison de hotspots.

Sur le système d'exploitation Linux, l'utilitaire oprofile profile aussi la relation d'appel entre les fonctions. Ces informations sont utilisées par le Navigateur d'appels pour afficher les informations de chemin d'appels de chaque fonction.

oprofile effectue le parcours du chemin d'appels plus fréquemment que procstack sur AIX, environ toutes les 43 microsecondes. Cependant, en raison de cette fréquence d'échantillonnage plus élevée ainsi que de limitations dans oprofile, le chemin d'appels est parcouru en sens inverse à une profondeur maximale de deux appelants. De plus, oprofile agrège ces informations d'appels en un graphique d'appels et non pas dans une arborescence d'appels. Une implication majeure de l'utilisation d'un graphique à la place d'une arborescence est que les graphiques sont susceptibles d'afficher des chemins ou une récursivité qui n'existe pas en réalité dans le programme. Cette particularité existe en raison du fait que les graphiques agrègent les informations, ce qui provoque une perte d'information. Le phénomène est analogue à celui qui fait que, dans des statistiques, une certaine quantité d'informations est perdue lorsque seule une valeur agrégée est conservée parmi un ensemble de nombres. Des informations telles que la distribution de l'ensemble de nombres ne sont pas conservées. Dans le contexte d'informations d'appels, où un noeud (fonction/méthode) peut apparaître plusieurs fois dans une arborescence d'appels, un graphique d'appels fusionne ces noeuds multiples en un seul noeud, ce qui aboutit à la perte d'une certaine quantité d'informations.

L'implication de cette particularité est que l'utilisateur doit garder à l'esprit ces éventuels faux chemins dans un Navigateur d'appels basé sur oprofile de Linux. Notez que le Navigateur d'appels basé sur procstack d'AIX ne comporte pas ces éventuels faux chemins car il n'agrège pas les informations.

Des informations plus détaillées sur l'utilitaire oprofile de Linux sont disponibles sur le site Web d'oprofile.

ps

L'utilitaire ps est utilisé à la fois par les systèmes d'exploitation AIX et Linux pour fournir des informations sur les processus s'exécutant sur votre ordinateur pendant le profilage de votre application. Ces informations sont utilisées pour détecter quels processus appartiennent à votre application, dans le cas où votre application est une application multi-processus ou si elle est lancée depuis un script du shell Unix. En outre, il fournit aussi des informations de base sur chaque processus, telles que son nom et ses arguments, ainsi que son processus parent. Ces informations sont utilisées par le Navigateur de hotspots pour afficher les informations sur les processus.

Des informations plus détaillées sur l'utilitaire ps d'AIX sont disponibles sur le site Web du Centre de documentation d'IBM AIX : commande ps.

Moteur de débogage IBM

Un composant du moteur de débogage IBM est utilisé à la fois sur les systèmes d'exploitation AIX et Linux pour extraire les informations du débogueur des fichiers binaires de votre application. Par exemple, il est utilisé pour mapper des emplacements du code exécutable aux fichiers et aux lignes de code source. Ces informations de mappage sont utilisées par l'Afficheur de source de performance et la Vue Structure pour l'affichage des pourcentages et des valeurs des "graduations" à côté des lignes source ou des blocs de code source du code de votre application.

Rapports de transformation du compilateur IBM XL

La Vue Recommandations prend les données de profilage auprès de différentes sources, telles que celles mentionnées précédemment, et les met en corrélation les unes avec les autres pour trouver des modèles pertinents. Une de ses principales sources de données est constituée des rapports de transformation du compilateur provenant du compilateur IBM XL. Si votre application est compilée avec le compilateur IBM XL C/C++ (XL C/C++ version 11.1 ou ultérieure), le compilateur peut donner des informations sur son analyse du code de votre application, telles que les tentatives d'optimisation réussies et ratées sur votre code source. Par exemple, les tentatives d'insertion de fonctions (ou de méthodes) avec l'instruction "inline", ainsi que leur succès ou leur échec, sont signalés par le compilateur. Le compilateur signale également quels indicateurs de compilation étaient appliqués pour chaque fichier de code source. Ces informations sont utilisées pour fournir des recommandations dans la vue Recommandations.

Pour les versions plus anciennes du compilateur IBM XL qui ne fournissent pas de rapports de transformation du compilateur (antérieures à la version 11.1), les informations de ce type sont extraites de la sortie de génération standard du compilateur. En conséquence, cela requiert des utilisateurs le "nettoyage" et la "génération" de leur application pour que les informations de ce type puissent être capturées. La quantité d'informations obtenues de cette façon n'est pas aussi fournie que celle des rapports de transformation du compilateur XL, et les types de recommandations spécifiés dans la Vue Recommandations sont réduites.

Informations de transformation du compilateur GCC

Les rapports de transformation du compilateur ne sont actuellement pas fournies par le compilateur GCC. Pour obtenir des informations du compilateur et les utiliser dans la Vue Recommandations, les informations de ce type sont extraites de la sortie de génération standard du compilateur. En conséquence, cela requiert des utilisateurs le "nettoyage" et la "génération" de leur application pour que les informations de ce type puissent être capturées. Les limitations de la vue Recommandations sont similaires à celles des compilateurs XL plus anciens qui ne fournissent pas de rapports de transformation.


Retour d'informations