Analyse des profils

Un profil, selon Wikipedia, est une forme d'analyse de programme dynamique qui mesure, par exemple, l'espace (mémoire) ou la complexité d'un programme, l'utilisation d'instructions particulières, ou la fréquence et la durée des appels de fonction. Un profileur est, quant à lui, un programme permettant de générer un tel profil à des fins d'analyse immédiate ou ultérieure.

Dans la plupart des cas, un profileur est utilisé par les développeurs pour identifier les problèmes de performances ou les goulets d'étranglement dans leur code. Les profileurs sont conçus pour permettre aux développeurs d'accéder à la ligne de code dont l'exécution est lente ou qui utilise beaucoup de ressources. Aussi puissant que le profilage puisse être pour identifier les opportunités d'optimisation de code, il est souvent utilisé uniquement par les développeurs dans les environnements de développement lorsqu'un problème grave survient. Même si un développeur souhaite exécuter le profilage en production, il peut être difficile d'accéder à cette dernière pour y associer un profileur.

Instana AutoProfile est automatiquement associé au processus en cours d'exécution sans qu'aucun redémarrage ou reconfiguration ne soit requis. En utilisant AutoProfile, les utilisateurs peuvent analyser en continu les performances au niveau du code, détecter des goulets d'étranglement dans le code de production, visualiser les performances sous la forme d'un graphique de type "flamme" et explorer en profondeur les chemins principaux de l'application.

Pour analyser les profils, accédez à la vue « Unbounded Analytics ». Cliquez sur le fil d'Ariane « Applications », puis sélectionnez « Profils ».

Analyse continue des performances au niveau du code dans la production

AutoProfile analyse automatiquement et en permanence la façon dont votre code s'exécute en production, sans configuration requise. AutoProfile est conçu pour détecter les goulets d'étranglement dans votre code et signaler les profils de conflit et d'UC. Les profils d'UC permettent aux développeurs de découvrir quelle méthode utilise fortement l'UC. Ainsi, ils peuvent optimiser leur code avec efficacité et précision. Les profils de conflit indiquent les directives synchronisées qui provoquent de longs temps d'attente ainsi qu'une utilisation inefficace des capacités multithreading de l'unité centrale et sont par conséquent à l'origine de mauvaises performances globales.

Visualisation sous la forme d'un graphique de type "flamme"

AutoProfile présente tous les profils sous la forme de graphique de type "flamme". Ainsi, il est facile de voir exactement où les ressources sont utilisées. La taille des barres du graphique de type "flamme" dépend de la quantité de ressources utilisées. De plus, le graphique est classé par ordre chronologique. Instana ajoute aux profils des métriques importantes comme l'utilisation de l'UC et l'activité du récupérateur de place. Ainsi, vous disposez du contexte vous permettant de comprendre l'impact du profil.

Trouvez le « chemin le plus fréquenté » dans l'arborescence

Instana inclut une arborescence de tous les profils. Il suffit de cliquer sur le signe plus pour développer l'élément souhaité. Ainsi, vous pouvez trouver rapidement et facilement le chemin principal dans votre code. Par exemple, vous pouvez rapidement cliquer sur des profils pour développer un chemin qui vous montre le code qui utilise trente pour cent de l'utilisation totale de l'unité centrale. Ainsi, vous pouvez améliorer et optimiser votre code.

Exploration du code (Java uniquement)

Ouvrez le code exact à l'origine du problème dans le graphique de type "flamme" ou dans l'arborescence. Vous pouvez filtrer en fonction de votre nom de package ou de classe afin de trouver rapidement où votre code commence dans le chemin de code. Cliquez simplement sur le lien pour accéder directement à la ligne de code à examiner.

Le composant AutoProfile d'Instana fait sans aucun doute partie des meilleures fonctions d'optimisation des performances d'Instana. AutoProfile et Unbounded Analytics fournissent aux développeurs toutes les informations dont ils ont besoin pour trouver immédiatement la cause principale de tout problème ou conflit de ressources. Cela permet d'optimiser les performances des applications et des services, afin de fournir la meilleure expérience client possible.

Types de profil

Les capacités de profilage dépendent fortement des langages, des environnements d'exécution et des versions. En raison des différences de mise en œuvre des mécanismes d'échantillonnage et des outils, les types de profils et leur disponibilité varient selon les langages et les environnements d'exécution. Les types de profil actuellement pris en charge sont récapitulés dans les tableaux comme suit.

En termes de structure, les profils sont similaires. Ils consistent en des chemins d'exécution de code souvent représentés dans un graphe d'appels ou un arbre d'appels avec des statistiques pour chaque nœud, par exemple le nombre d'occurrences, de kilo-octets ou de millisecondes. Un chemin de code est une trace des appels de méthode, similaire à une trace de pile d'exception.

Profils Java

Remarque : les profils « Java » sont également pris en charge sur les systèmes d'exploitation basés sur Power Linux et Power AIX.
Type de profil Description
Utilisation de l'UC Les profils d'UC montrent l'utilisation de l'unité centrale par chemin de code. Le profileur d'UC fonctionne en échantillonnant statistiquement l'exécution des processus.
Contention Les profils de conflit montrent où le code synchronisé attend d'autres unités d'exécution. L'agrégation des temps d'attente se fait par chemin de code.

Profils Node.js

Type de profil Description
Utilisation de l'UC Les profils d'UC montrent l'utilisation de l'unité centrale par chemin de code. Le profileur d'UC fonctionne en échantillonnant statistiquement l'exécution des processus.
Appels asynchrones Les profils d'appels asynchrones montrent une vue agrégée des attentes d'appels asynchrones pour les chemins de code où ces appels asynchrones sont effectués.
Taux d'allocation de mémoire Les profils de taux d'allocation de mémoire montrent la quantité de mémoire allouée par unité de temps agrégée par chemin de code, où l'allocation a été faite.

Profils Golang

Type de profil Description
Utilisation de l'UC Les profils d'UC montrent l'utilisation de l'unité centrale par chemin de code. Le profileur d'UC fonctionne en échantillonnant statistiquement l'exécution des processus.
Appels bloquants Les profils d'appels bloquants présentent une vue agrégée des appels bloquants, c'est-à-dire des appels en attente d'une entrée-sortie, d'un canal, etc., par chemin de code.
Allocation de mémoire Les profils d'allocation de mémoire montrent l'utilisation actuelle de la mémoire par chemin de code, où l'allocation a été faite.

Profils Python

Type de profil Description
Utilisation de l'UC Les profils d'UC montrent l'utilisation de l'unité centrale par chemin de code. Le profileur d'UC fonctionne en échantillonnant statistiquement l'exécution des processus.
Appels bloquants Les profils d'appels bloquants montrent une vue agrégée des attentes d'appels par chemin de code.
Taux d'allocation de mémoire Les profils de taux d'allocation de mémoire montrent la quantité de mémoire allouée par unité de temps agrégée par chemin de code, où l'allocation a été faite.

Profils Ruby

Type de profil Description
Utilisation de l'UC Les profils d'UC montrent l'utilisation de l'unité centrale par chemin de code. Le profileur d'UC fonctionne en échantillonnant statistiquement l'exécution des processus.

.NET Core profils

Remarque : les profils «.NET Core » ne sont pris en charge que sur les systèmes d'exploitation basés sur l'architecture Linux.
Type de profil Description
Utilisation de l'UC Les profils d'UC montrent l'utilisation de l'unité centrale par chemin de code. Le profileur d'UC fonctionne en échantillonnant statistiquement l'exécution des processus.

Profils PHP

Type de profil Description
Utilisation de l'UC Les profils d'unité centrale affichent l'utilisation de l'unité centrale par chemin de code. Un profileur d'UC échantillonne statistiquement l'exécution du processus.