Delen via


Metrische gegevens van .NET Runtime

In dit artikel worden de ingebouwde metrische gegevens voor .NET-runtimebibliotheken beschreven die worden geproduceerd met behulp van de System.Diagnostics.Metrics API. Zie Beschikbare tellers voor een lijst met metrische gegevens op basis van de oudere EventCounters-API.

Tip

Zie Metrische gegevens verzamelen voor meer informatie over het verzamelen en rapporteren van deze metrische gegevens.

System.Runtime

De System.Runtime meter rapporteert metingen van de GC, JIT, AssemblyLoader, Threadpool en uitzondering die delen van de .NET-runtime verwerken, evenals enkele cpu- en geheugengegevens van het besturingssysteem. Deze metrische gegevens zijn automatisch beschikbaar voor alle .NET-apps.

Metriek: dotnet.process.cpu.time
Naam Type instrument Eenheid (UCUM) Beschrijving
dotnet.process.cpu.time teller s CPU-tijd die door het proces wordt gebruikt.
Kenmerk Type Description Voorbeelden Aanwezigheid
cpu.mode tekenreeks De modus van de CPU. user; system Altijd

Met deze metrische gegevens worden dezelfde waarden gerapporteerd als voor toegang tot de eigenschappen System.Diagnostics.Process van de processortijd voor het huidige proces. De system modus komt overeen PrivilegedProcessorTime met en user de modus komt overeen met UserProcessorTime

Beschikbaar vanaf: .NET 9.0.

Metriek: dotnet.process.memory.working_set
Naam Type instrument Eenheid (UCUM) Beschrijving
dotnet.process.memory.working_set UpDownCounter By Het aantal bytes aan fysiek geheugen dat is toegewezen aan de procescontext.

Deze metrische waarde rapporteert dezelfde waarden als de aanroepende Environment.WorkingSet eigenschap.

Beschikbaar vanaf: .NET 9.0.

Metriek: dotnet.gc.collections
Naam Type instrument Eenheid (UCUM) Beschrijving
dotnet.gc.collections teller {collection} Het aantal garbagecollection's dat is opgetreden sinds het proces is gestart.
Kenmerk Type Description Voorbeelden Aanwezigheid
dotnet.gc.heap.generation tekenreeks Naam van de maximaal beheerde heap-generatie die wordt verzameld. gen0; gen1; gen2 Altijd

De .NET GC is een generational garbage collector. Telkens wanneer de garbagecollector wordt uitgevoerd, wordt gebruikgemaakt van heuristieken om een maximale generatie te selecteren en vervolgens objecten in alle generaties tot het geselecteerde maximum te verzamelen. Een verzameling verzamelt bijvoorbeeld gen1 alle objecten in generaties 0 en 1. Een gen2 verzameling verzamelt alle objecten in generaties 0, 1 en 2. Zie de handleiding voor .NET garbagecollection voor meer informatie over de .NET GC en generational garbagecollection.

Beschikbaar vanaf: .NET 9.0.

Metriek: dotnet.gc.heap.total_allocated
Naam Type instrument Eenheid (UCUM) Beschrijving
dotnet.gc.heap.total_allocated teller By Het geschatte aantal bytes dat is toegewezen aan de beheerde GC-heap sinds het proces is gestart. De geretourneerde waarde bevat geen systeemeigen toewijzingen.

Deze metrische waarde rapporteert dezelfde waarden als aanroepen GC.GetTotalAllocatedBytes. Zie de handleiding voor .NET garbagecollection voor meer informatie over .NET GC.

Beschikbaar vanaf: .NET 9.0.

Metriek: dotnet.gc.last_collection.memory.committed_size
Naam Type instrument Eenheid (UCUM) Beschrijving
dotnet.gc.last_collection.memory.committed_size UpDownCounter By De hoeveelheid vastgelegde virtuele geheugen die door de .NET GC wordt gebruikt, zoals waargenomen tijdens de meest recente garbagecollection.

Deze metrische waarde rapporteert dezelfde waarden als aanroepen GCMemoryInfo.TotalCommittedBytes. Vastgelegd virtueel geheugen kan groter zijn dan de heapgrootte, omdat het zowel geheugen bevat voor het opslaan van bestaande objecten (de heapgrootte) als extra geheugen dat gereed is voor het afhandelen van nieuw toegewezen objecten in de toekomst. Zie de handleiding voor .NET garbagecollection voor meer informatie over .NET GC.

Beschikbaar vanaf: .NET 9.0.

Metriek: dotnet.gc.last_collection.heap.size
Naam Type instrument Eenheid (UCUM) Beschrijving
dotnet.gc.last_collection.heap.size UpDownCounter By De beheerde GC-heapgrootte (inclusief fragmentatie), zoals waargenomen tijdens de meest recente garbagecollection.
Kenmerk Type Description Voorbeelden Aanwezigheid
dotnet.gc.heap.generation tekenreeks Naam van de garbagecollection beheerde heap generatie. gen0; gen1; gen2;loh;poh Altijd

De .NET GC verdeelt de heap in generaties. Naast de genummerde standaardgeneraties plaatst de GC ook enkele objecten in twee speciale generaties:

  • Grote object heap (LOH) slaat .NET-objecten op die zeer groot zijn in vergelijking met typische objecten.
  • Bij vastgemaakte object-heap (POH) worden objecten opgeslagen die zijn toegewezen met behulp van de GC.AllocateArray API wanneer de pinned parameter waar is.

Beide speciale generaties worden verzameld tijdens gen2 GC-collecties. Zie de .NET Garbagecollection-handleiding voor meer informatie over .NET GC.

Beschikbaar vanaf: .NET 9.0.

Metriek: dotnet.gc.last_collection.heap.fragmentation.size
Naam Type instrument Eenheid (UCUM) Beschrijving
dotnet.gc.last_collection.heap.fragmentation.size UpDownCounter By De heapfragmentatie, zoals waargenomen tijdens de meest recente garbagecollection.

Deze metrische waarde rapporteert dezelfde waarden als aanroepen GCGenerationInfo.FragmentationAfterBytes.

Wanneer .NET-objecten worden toegewezen, worden ze in eerste instantie meestal aaneengesloten in het geheugen ingedeeld. Als sommige van deze objecten echter later door de GC worden verzameld, ontstaan er hiaten in ongebruikt geheugen tussen de actieve objecten die blijven. Deze hiaten vertegenwoordigen het gedeelte van de GC-heap dat momenteel niet wordt gebruikt voor het opslaan van objecten, ook wel 'fragmentatie' genoemd. De GC kan de fragmentatiebytes in de toekomst opnieuw gebruiken voor nieuwe objecttoewijzingen als de objectgrootte klein genoeg is om in een van de hiaten te passen. De GC kan ook een speciale compacting garbagecollection uitvoeren die resterende live objecten naast elkaar verplaatst zolang de objecten niet zijn vastgemaakt.

Zie .NET-geheugenprestatieanalyse voor meer informatie over hoe de .NET GC werkt, de prestaties van GC analyseren en welke rolfragmentatie speelt.

Beschikbaar vanaf: .NET 9.0.

Metriek: dotnet.gc.pause.time
Naam Type instrument Eenheid (UCUM) Beschrijving
dotnet.gc.pause.time teller s De totale tijd die is onderbroken in GC sinds het proces is gestart.

Deze metrische waarde rapporteert dezelfde waarden als aanroepen GC.GetTotalPauseDuration().

Telkens wanneer de .NET GC een verzameling uitvoert, moet deze alle threads met beheerde code kort onderbreken om te bepalen naar welke objecten nog steeds wordt verwezen. Deze metrische gegevens rapporteert de som van al deze onderbrekingstijden sinds het proces is gestart. U kunt deze metrische waarde gebruiken om te bepalen welke fractie van tijdthreads is onderbroken voor GC en de tijd die ze nodig hebben om beheerde code uit te voeren.

Beschikbaar vanaf: .NET 9.0.

Metriek: dotnet.jit.compiled_il.size
Naam Type instrument Eenheid (UCUM) Beschrijving
dotnet.jit.compiled_il.size teller By Het aantal bytes van tussenliggende taal dat is gecompileerd sinds het proces is gestart.

Deze metrische waarde rapporteert dezelfde waarden als aanroepen JitInfo.GetCompiledILBytes.

Wanneer u een .NET-app bouwt, wordt beheerde code in eerste instantie gecompileerd vanuit een taal op hoog niveau, zoals C#, VB of F# in tussenliggende taal (IL). Wanneer het programma wordt uitgevoerd, converteert de JIT-compiler (Just-In-Time) van .NET de IL naar computercode.

Omdat JIT-compilatie plaatsvindt wanneer een methode voor het eerst wordt uitgevoerd, gebeurt de meeste JIT-compilatie meestal tijdens het opstarten van de toepassing. Het verminderen van de hoeveelheid IL die is gecompileerd met JIT, kan de opstarttijd van de toepassing verbeteren.

Beschikbaar vanaf: .NET 9.0.

Metriek: dotnet.jit.compiled_methods
Naam Type instrument Eenheid (UCUM) Beschrijving
dotnet.jit.compiled_methods teller {method} Het aantal keren dat de JIT-compiler (opnieuw) gecompileerde methoden sinds het proces is gestart.

Deze metrische waarde rapporteert dezelfde waarden als aanroepen JitInfo.GetCompiledMethodCount.

Wanneer u een .NET-app bouwt, wordt beheerde code in eerste instantie gecompileerd vanuit een taal op hoog niveau, zoals C#, VB of F# in tussenliggende taal (IL). Wanneer het programma wordt uitgevoerd, converteert de JIT-compiler (Just-In-Time) van .NET de IL naar computercode.

Omdat JIT-compilatie plaatsvindt wanneer een methode voor het eerst wordt uitgevoerd, gebeurt de meeste JIT-compilatie meestal tijdens het opstarten van de toepassing. Het verminderen van het aantal methoden dat JIT moet worden gecompileerd, kan de opstarttijd van toepassingen verbeteren.

Beschikbaar vanaf: .NET 9.0.

Metriek: dotnet.jit.compilation.time
Naam Type instrument Eenheid (UCUM) Beschrijving
dotnet.jit.compilation.time teller s De hoeveelheid tijd die de JIT-compiler heeft besteed aan het compileren van methoden sinds het proces is gestart.

Deze metrische waarde rapporteert dezelfde waarden als aanroepen JitInfo.GetCompilationTime.

Wanneer u een .NET-app bouwt, wordt beheerde code in eerste instantie gecompileerd vanuit een taal op hoog niveau, zoals C#, VB of F# in tussenliggende taal (IL). Wanneer het programma wordt uitgevoerd, converteert de JIT-compiler (Just-In-Time) van .NET de IL naar computercode.

Omdat JIT-compilatie plaatsvindt wanneer een methode voor het eerst wordt uitgevoerd, gebeurt de meeste JIT-compilatie meestal tijdens het opstarten van de toepassing. Het verminderen van de tijd die is besteed aan het compileren van JIT, kan de opstarttijd van de toepassing verbeteren.

Beschikbaar vanaf: .NET 9.0.

Metriek: dotnet.thread_pool.thread.count
Naam Type instrument Eenheid (UCUM) Beschrijving
dotnet.thread_pool.thread.count UpDownCounter {thread} Het aantal threadgroepthreads dat momenteel bestaat.

Deze metrische waarde rapporteert dezelfde waarden als aanroepen ThreadPool.ThreadCount.

.NET maakt gebruik van een threadgroep om werkitems op andere threads te plannen. Deze metrische waarde biedt het aantal werkthreads dat momenteel wordt beheerd door die threadgroep.

Beschikbaar vanaf: .NET 9.0.

Metriek: dotnet.thread_pool.work_item.count
Naam Type instrument Eenheid (UCUM) Beschrijving
dotnet.thread_pool.work_item.count teller {work_item} Het aantal werkitems dat de threadgroep heeft voltooid sinds het proces is gestart.

Deze metrische waarde rapporteert dezelfde waarden als aanroepen ThreadPool.CompletedWorkItemCount.

.NET maakt gebruik van een threadgroep om werkitems op andere threads te plannen. Deze metrische waarde biedt het aantal werkitems dat is uitgevoerd door de threads van de threadpool.

Beschikbaar vanaf: .NET 9.0.

Metriek: dotnet.thread_pool.queue.length
Naam Type instrument Eenheid (UCUM) Beschrijving
dotnet.thread_pool.queue.length UpDownCounter {work_item} Het aantal werkitems dat momenteel in de wachtrij staat om te worden verwerkt door de threadgroep.

Deze metrische waarde rapporteert dezelfde waarden als aanroepen ThreadPool.PendingWorkItemCount.

.NET maakt gebruik van een threadgroep om werkitems op andere threads te plannen. Deze metrische waarde biedt het aantal werkitems dat momenteel in de wachtrij staat om te worden uitgevoerd door een van de threadpoolthreads.

Beschikbaar vanaf: .NET 9.0.

Metriek: dotnet.monitor.lock_contentions
Naam Type instrument Eenheid (UCUM) Beschrijving
dotnet.monitor.lock_contentions teller {contention} Het aantal keren dat er sprake was van conflicten bij het verkrijgen van een monitorvergrendeling sinds het proces is gestart.

Deze metrische waarde rapporteert dezelfde waarden als aanroepen Monitor.LockContentionCount.

.NET ondersteunt het gebruik van een beheerd object als een vergrendeling, hetzij met API's zoals Monitor.Enter of met de vergrendelingsinstructie. Als één thread al een vergrendeling bevat terwijl een tweede thread deze probeert te verkrijgen, wordt dit vergrendelingsconflict genoemd.

Beschikbaar vanaf: .NET 9.0.

Metriek: dotnet.timer.count
Naam Type instrument Eenheid (UCUM) Beschrijving
dotnet.timer.count UpDownCounter {timer} Het aantal timerexemplaren dat momenteel actief is.

Deze metrische waarde rapporteert dezelfde waarden als aanroepen Timer.ActiveCount.

Beschikbaar vanaf: .NET 9.0.

Metriek: dotnet.assembly.count
Naam Type instrument Eenheid (UCUM) Beschrijving
dotnet.assembly.count UpDownCounter {assembly} Het aantal .NET-assembly's dat momenteel wordt geladen.

Deze metrische waarde rapporteert dezelfde waarden als aanroepen AppDomain.GetAssemblies() en controleert vervolgens de lengte van de geretourneerde matrix.

Beschikbaar vanaf: .NET 9.0.

Metriek: dotnet.exceptions
Naam Type instrument Eenheid (UCUM) Beschrijving
dotnet.exceptions teller {exception} Het aantal uitzonderingen dat is gegenereerd in beheerde code.
Kenmerk Type Description Voorbeelden Aanwezigheid
error.type tekenreeks Het uitzonderingstype dat is gegenereerd. System.OperationCanceledException; Contoso.MyException Required

Deze metrische waarde rapporteert dezelfde waarden als het tellen van aanroepen naar de AppDomain.FirstChanceException gebeurtenis.

Beschikbaar vanaf: .NET 9.0.