Rechercher des profils
Rapport de recherche Datadog : Bilan sur l'adoption de l'informatique sans serveur Rapport : Bilan sur l'adoption de l'informatique sans serveur

Rechercher des profils

Rechercher des profils en fonction de tags

Chaque ligne correspond au profil d’un processus pendant une courte période. Par défaut, les profils sont importés toutes les minutes. En fonction du langage, le profil de ces processus couvre une durée de 15 à 60 secondes.

Vous pouvez filtrer les données selon des tags d’infrastructure ou d’application définis depuis la configuration du tracing de votre environnement. Par défaut, les facettes suivantes sont disponibles :

FacetteDéfinition
EnvL’environnement sur lequel votre application s’exécute (production, staging).
ServiceLe nom du service que votre code exécute.
VersionLa version de votre code.
HostLe hostname sur lequel votre processus profilé s’exécute.
RuntimeLe type de runtime que le processus profilé exécute (JVM, CPython).

Les mesures suivantes sont disponibles :

MesureDéfinition
CPUL’utilisation du processus, mesurée en nœuds.
Memory AllocationLe débit d’allocation de mémoire pour le profiling. Cette valeur peut dépasser la quantité de mémoire de votre système, car la mémoire allouée peut faire l’objet d’un nettoyage au cours du processus.

Profiles

Cliquez sur une ligne pour afficher un profil spécifique :

Un profil spécifique

L’en-tête contient des informations associées à votre profil, telles que le service qui l’a généré ou l’environnement et la version du code pertinents.

Quatre onglets se trouvent sous l’en-tête de profil :

OngletDéfinition
ProfilesFlamegraph et tableau de synthèse du profil consulté. Vous pouvez basculer entre plusieurs types de profils (CPU, Memory allocation).
AnalysisEnsemble de fonctions heuristiques qui indiquent d’éventuels problèmes ou points à améliorer dans votre code. Cet onglet est actuellement uniquement disponible pour Java.
MetricsMétriques de profiling provenant de tous les profils du même service.
Runtime InfoPropriétés du runtime dans les langages pris en charge et tags des profils.

Remarque : en haut à droite de chaque profil, vous pouvez effectuer les opérations suivantes :

  • Télécharger le profil
  • Afficher le profil en mode plein écran

Types de profils

Dans l’onglet Profiles, vous pouvez consulter tous les types de profils disponibles pour un langage donné. Les informations recueillies à propos de votre profil varient en fonction du langage.

Une fois les profils activés, les types suivants sont recueillis :

Type de profilDéfinition
CPU in Java CodeAffiche la durée d’exécution de chaque méthode sur le processeur. Cela inclut le code qui s’exécute sur la JVM (Java, Kotlin, etc.), mais pas les opérations JVM ou le code natif appelé à partir de la JVM.
AllocationAffiche la quantité de mémoire de tas allouée par chaque méthode, y compris les allocations qui ont été libérées par la suite.
Wall Time in Native CodeAffiche le temps passé en code natif. Cette valeur inclut la durée d’exécution du code sur le processeur, de l’attente des E/S et de tout autre événement qui se produit pendant l’exécution de la méthode. Ce profil n’inclut pas le temps passé lors de l’exécution du bytecode JVM, qui constitue généralement une grande partie du code de votre application.
Class loadAffiche le nombre de classes chargées par chaque méthode.
Exception ProfileAffiche le nombre d’erreurs et d’exceptions renvoyées par chaque méthode.
File I/OAffiche le temps passé par chaque méthode pour la lecture et l’écriture de fichiers.
LockAffiche le temps passé par chaque méthode à attendre un verrouillage.
Socket I/OAffiche le temps passé par chaque méthode pour la lecture et l’écriture du socket E/S.

Une fois les profils activés, les types suivants sont recueillis :

Type de profilDéfinition
CPUAffiche la durée d’exécution de chaque fonction sur le processeur, y compris le code Python et natif.
AllocationAffiche la quantité de mémoire de tas allouée par chaque fonction, y compris les allocations qui ont été libérées par la suite. Uniquement disponible avec Python 3.
Allocation CountAffiche le nombre d’allocations de tas effectuées par chaque méthode, y compris les allocations qui ont été libérées par la suite.
Wall TimeAffiche la durée de chaque fonction. Cette valeur inclut la durée d’exécution du code sur le processeur, de l’attente des E/S et de tout autre événement qui se produit pendant l’exécution de la fonction.
ExceptionsAffiche le nombre d’exceptions interceptées ou non provenant de chaque fonction.
LockAffiche le temps passé par chaque fonction pour le verrouillage (à savoir, l’attente ou le maintien d’un verrouillage) ou le nombre de fois qu’une fonction a activé/désactivé un verrouillage.
Uncaught ExceptionsAffiche les exceptions qui n’ont pas été interceptées par un bloc try/except.
ExceptionsAffiche les exceptions qui ont été renvoyées lors de l’exécution du programme.

Une fois les profils activés, les types suivants sont recueillis :

Type de profilDéfinition
CPUAffiche la durée d’exécution de chaque fonction sur le processeur.
AllocationAffiche la quantité de mémoire de tas allouée par chaque fonction depuis le lancement de l’application, y compris les allocations qui ont été libérées par la suite. Cette valeur correspond à alloc_space pour Go. Il s’agit d’une mesure très utile pour étudier la charge de nettoyage de la mémoire.
Allocation CountAffiche le nombre d’objets alloués dans le mémoire de tas par chaque fonction depuis le lancement de l’application, y compris les allocations qui ont été libérées par la suite. Il s’agit d’une mesure très utile pour étudier la charge de nettoyage de la mémoire.
HeapAffiche la quantité de mémoire de tas allouée par chaque fonction qui est restée allouée depuis le lancement de l’application et qui a survécu au dernier nettoyage de la mémoire. Cette valeur correspond à inuse_space pour Go. Il s’agit d’une mesure très utile pour étudier l’utilisation globale de la mémoire pour votre service.
Heap CountAffiche le nombre d’objets alloués en mémoire de tas par chaque fonction, ainsi que les objets qui sont restés alloués depuis le lancement de l’application et qui ont survécu au dernier nettoyage de la mémoire. Il s’agit d’une mesure très utile pour étudier l’utilisation globale de la mémoire pour votre service.

Pour aller plus loin

Documentation, liens et articles supplémentaires utiles: