Partager via


Métriques du runtime .NET

Cet article décrit les métriques intégrées pour les bibliothèques runtime .NET produites à l’aide de l’API System.Diagnostics.Metrics . Pour obtenir une liste des métriques basées sur l’ancienne API EventCounters, consultez Compteurs disponibles.

Conseil

Pour plus d’informations sur la collecte et le rapport de ces métriques, consultez Collecte de métriques.

System.Runtime

Le System.Runtime compteur signale les mesures du GC, JIT, AssemblyLoader, Threadpool et des parties de gestion des exceptions du runtime .NET, ainsi que certaines métriques processeur et mémoire du système d’exploitation. Ces métriques sont disponibles automatiquement pour toutes les applications .NET.

Métrique : dotnet.process.cpu.time
Nom Type d’instrument Unité (UCUM) Description
dotnet.process.cpu.time Compteur s Temps processeur utilisé par le processus.
Attribut Type Description Exemples Présence
cpu.mode string Mode de l’UC. user; system Toujours

Cette métrique signale les mêmes valeurs que l’accès aux propriétés System.Diagnostics.Process de temps processeur pour le processus actuel. Le system mode correspond à PrivilegedProcessorTime et user le mode correspond à UserProcessorTime

Disponible à partir de : .NET 9.0.

Métrique : dotnet.process.memory.working_set
Nom Type d’instrument Unité (UCUM) Description
dotnet.process.memory.working_set UpDownCounter By Nombre d’octets de mémoire physique mappée au contexte de processus.

Cette métrique signale les mêmes valeurs que la propriété appelante Environment.WorkingSet .

Disponible à partir de : .NET 9.0.

Métrique : dotnet.gc.collections
Nom Type d’instrument Unité (UCUM) Description
dotnet.gc.collections Compteur {collection} Nombre de garbage collections qui se sont produites depuis le début du processus.
Attribut Type Description Exemples Présence
dotnet.gc.heap.generation string Nom de la génération maximale de tas managée collectée. gen0; gen1; ; gen2 Toujours

Le gc .NET est un garbage collector générationnel. Chaque fois que le garbage collector s’exécute, il utilise des heuristiques pour sélectionner une génération maximale, puis collecte les objets de toutes les générations jusqu’au maximum sélectionné. Par exemple, une gen1 collection collecte tous les objets des générations 0 et 1. Une gen2 collection collecte tous les objets de générations 0, 1 et 2. Pour plus d’informations sur le garbage collection .NET et le garbage collection générationnel, consultez le guide du garbage collection .NET.

Disponible à partir de : .NET 9.0.

Métrique : dotnet.gc.heap.total_allocated
Nom Type d’instrument Unité (UCUM) Description
dotnet.gc.heap.total_allocated Compteur By Nombre approximatif d’octets alloués sur le tas gc managé depuis le démarrage du processus. La valeur retournée n’inclut aucune allocation native.

Cette métrique signale les mêmes valeurs que l’appel GC.GetTotalAllocatedBytes. Pour plus d’informations sur .NET GC, consultez le guide du garbage collection .NET.

Disponible à partir de : .NET 9.0.

Métrique : dotnet.gc.last_collection.memory.committed_size
Nom Type d’instrument Unité (UCUM) Description
dotnet.gc.last_collection.memory.committed_size UpDownCounter By Quantité de mémoire virtuelle validée en cours d’utilisation par le gc .NET, comme indiqué lors du dernier garbage collection.

Cette métrique signale les mêmes valeurs que l’appel GCMemoryInfo.TotalCommittedBytes. La mémoire virtuelle validée peut être supérieure à la taille du tas, car elle inclut à la fois la mémoire pour le stockage d’objets existants (la taille du tas) et une mémoire supplémentaire prête à gérer les objets nouvellement alloués à l’avenir. Pour plus d’informations sur .NET GC, consultez le guide du garbage collection .NET.

Disponible à partir de : .NET 9.0.

Métrique : dotnet.gc.last_collection.heap.size
Nom Type d’instrument Unité (UCUM) Description
dotnet.gc.last_collection.heap.size UpDownCounter By Taille du tas GC managé (y compris la fragmentation), comme indiqué lors du dernier garbage collection.
Attribut Type Description Exemples Présence
dotnet.gc.heap.generation string Nom de la génération de tas managée du garbage collector. gen0; gen1; ;loh; ; ; gen2poh Toujours

Le gc .NET divise le tas en générations. En plus des générations numérotées standard, le GC met également des objets en deux générations spéciales :

  • Le tas d’objets volumineux (LOH) stocke les objets .NET très volumineux par rapport aux objets classiques.
  • Le tas d’objets épinglé stocke les objets alloués à l’aide de l’API GC.AllocateArray lorsque le paramètre a la pinned valeur true.

Ces deux générations spéciales sont collectées pendant gen2 les collections gc. Pour plus d’informations sur le gc .NET, consultez le guide du garbage collection .NET.

Disponible à partir de : .NET 9.0.

Métrique : dotnet.gc.last_collection.heap.fragmentation.size
Nom Type d’instrument Unité (UCUM) Description
dotnet.gc.last_collection.heap.fragmentation.size UpDownCounter By Fragmentation du tas, comme indiqué lors du dernier garbage collection.

Cette métrique signale les mêmes valeurs que l’appel GCGenerationInfo.FragmentationAfterBytes.

Lorsque les objets .NET sont alloués, ils ont tendance à être disposés de manière contiguë en mémoire. Toutefois, si certains de ces objets sont collectés ultérieurement par le GC, cela crée des lacunes de mémoire inutilisée entre les objets actifs qui restent. Ces lacunes représentent la partie du tas GC qui n’est pas actuellement utilisée pour stocker des objets, souvent appelée « fragmentation ». Le GC peut réutiliser les octets de fragmentation à l’avenir pour les nouvelles allocations d’objets si la taille de l’objet est suffisamment petite pour s’adapter à l’une des lacunes. Le GC peut également effectuer un garbage collection de compactage spécial qui déplace les objets vivants restants à côté des autres tant que les objets n’ont pas été épinglés en place.

Pour plus d’informations sur le fonctionnement du GC .NET, l’analyse des performances du GC et la fragmentation des rôles, consultez l’analyse des performances de la mémoire .NET.

Disponible à partir de : .NET 9.0.

Métrique : dotnet.gc.pause.time
Nom Type d’instrument Unité (UCUM) Description
dotnet.gc.pause.time Compteur s Durée totale suspendue dans GC depuis le démarrage du processus.

Cette métrique signale les mêmes valeurs que l’appel GC.GetTotalPauseDuration().

Chaque fois que le gc .NET effectue une collection, il doit brièvement suspendre tous les threads exécutant du code managé pour déterminer quels objets sont toujours référencés. Cette métrique signale la somme de toutes ces pauses depuis le début du processus. Vous pouvez utiliser cette métrique pour déterminer quelle fraction de temps les threads passent suspendus pour GC par rapport au temps qu’ils sont en mesure d’exécuter du code managé.

Disponible à partir de : .NET 9.0.

Métrique : dotnet.jit.compiled_il.size
Nom Type d’instrument Unité (UCUM) Description
dotnet.jit.compiled_il.size Compteur By Nombre d’octets de langage intermédiaire compilés depuis le démarrage du processus.

Cette métrique signale les mêmes valeurs que l’appel JitInfo.GetCompiledILBytes.

Lorsque vous générez une application .NET, le code managé est initialement compilé à partir d’un langage de haut niveau tel que C#, VB ou F# en langage intermédiaire (IL). Ensuite, lorsque le programme est exécuté, le compilateur juste-à-temps (JIT) .NET convertit l’il en code machine.

Étant donné que la compilation JIT se produit la première fois qu’une méthode s’exécute, la plupart de la compilation JIT a tendance à se produire au démarrage de l’application. La réduction de la quantité d’il compilée par JIT peut améliorer le temps de démarrage de l’application.

Disponible à partir de : .NET 9.0.

Métrique : dotnet.jit.compiled_methods
Nom Type d’instrument Unité (UCUM) Description
dotnet.jit.compiled_methods Compteur {method} Nombre de fois où le compilateur JIT (re)compilé des méthodes depuis le début du processus.

Cette métrique signale les mêmes valeurs que l’appel JitInfo.GetCompiledMethodCount.

Lorsque vous générez une application .NET, le code managé est initialement compilé à partir d’un langage de haut niveau tel que C#, VB ou F# en langage intermédiaire (IL). Ensuite, lorsque le programme est exécuté, le compilateur juste-à-temps (JIT) .NET convertit l’il en code machine.

Étant donné que la compilation JIT se produit la première fois qu’une méthode s’exécute, la plupart de la compilation JIT a tendance à se produire au démarrage de l’application. La réduction du nombre de méthodes qui doivent être compilées par JIT peut améliorer le temps de démarrage de l’application.

Disponible à partir de : .NET 9.0.

Métrique : dotnet.jit.compilation.time
Nom Type d’instrument Unité (UCUM) Description
dotnet.jit.compilation.time Compteur s Durée pendant laquelle le compilateur JIT a passé la compilation des méthodes depuis le démarrage du processus.

Cette métrique signale les mêmes valeurs que l’appel JitInfo.GetCompilationTime.

Lorsque vous générez une application .NET, le code managé est initialement compilé à partir d’un langage de haut niveau tel que C#, VB ou F# en langage intermédiaire (IL). Ensuite, lorsque le programme est exécuté, le compilateur juste-à-temps (JIT) .NET convertit l’il en code machine.

Étant donné que la compilation JIT se produit la première fois qu’une méthode s’exécute, la plupart de la compilation JIT a tendance à se produire au démarrage de l’application. La réduction du temps passé par la compilation JIT peut améliorer le temps de démarrage de l’application.

Disponible à partir de : .NET 9.0.

Métrique : dotnet.thread_pool.thread.count
Nom Type d’instrument Unité (UCUM) Description
dotnet.thread_pool.thread.count UpDownCounter {thread} Nombre de threads de pool de threads qui existent actuellement.

Cette métrique signale les mêmes valeurs que l’appel ThreadPool.ThreadCount.

.NET utilise un pool de threads pour planifier des éléments de travail sur d’autres threads. Cette métrique fournit le nombre de threads de travail actuellement gérés par ce pool de threads.

Disponible à partir de : .NET 9.0.

Métrique : dotnet.thread_pool.work_item.count
Nom Type d’instrument Unité (UCUM) Description
dotnet.thread_pool.work_item.count Compteur {work_item} Nombre d’éléments de travail que le pool de threads a terminé depuis le démarrage du processus.

Cette métrique signale les mêmes valeurs que l’appel ThreadPool.CompletedWorkItemCount.

.NET utilise un pool de threads pour planifier des éléments de travail sur d’autres threads. Cette métrique fournit le nombre d’éléments de travail qui ont été exécutés par les threads du pool de threads.

Disponible à partir de : .NET 9.0.

Métrique : dotnet.thread_pool.queue.length
Nom Type d’instrument Unité (UCUM) Description
dotnet.thread_pool.queue.length UpDownCounter {work_item} Nombre d’éléments de travail actuellement mis en file d’attente à traiter par le pool de threads.

Cette métrique signale les mêmes valeurs que l’appel ThreadPool.PendingWorkItemCount.

.NET utilise un pool de threads pour planifier des éléments de travail sur d’autres threads. Cette métrique fournit le nombre d’éléments de travail actuellement mis en file d’attente à exécuter par l’un des threads du pool de threads.

Disponible à partir de : .NET 9.0.

Métrique : dotnet.monitor.lock_contentions
Nom Type d’instrument Unité (UCUM) Description
dotnet.monitor.lock_contentions Compteur {contention} Nombre de fois où il y avait des conflits lors de la tentative d’acquisition d’un verrou de surveillance depuis le démarrage du processus.

Cette métrique signale les mêmes valeurs que l’appel Monitor.LockContentionCount.

.NET prend en charge l’utilisation de n’importe quel objet managé en tant que verrou, avec des API telles que Monitor.Enter ou avec l’instruction lock. Si un thread contient déjà un verrou pendant qu’un deuxième thread tente de l’acquérir, il s’agit de la contention de verrou.

Disponible à partir de : .NET 9.0.

Métrique : dotnet.timer.count
Nom Type d’instrument Unité (UCUM) Description
dotnet.timer.count UpDownCounter {timer} Nombre d’instances de minuteur actuellement actives.

Cette métrique signale les mêmes valeurs que l’appel Timer.ActiveCount.

Disponible à partir de : .NET 9.0.

Métrique : dotnet.assembly.count
Nom Type d’instrument Unité (UCUM) Description
dotnet.assembly.count UpDownCounter {assembly} Nombre d’assemblys .NET actuellement chargés.

Cette métrique signale les mêmes valeurs que l’appel AppDomain.GetAssemblies() , puis vérifie la longueur du tableau retourné.

Disponible à partir de : .NET 9.0.

Métrique : dotnet.exceptions
Nom Type d’instrument Unité (UCUM) Description
dotnet.exceptions Compteur {exception} Nombre d’exceptions levées dans le code managé.
Attribut Type Description Exemples Présence
error.type string Type d’exception qui a été levée. System.OperationCanceledException; Contoso.MyException Required

Cette métrique signale les mêmes valeurs que le comptage des appels à l’événement AppDomain.FirstChanceException .

Disponible à partir de : .NET 9.0.