Dela via


.NET Runtime-mått

Den här artikeln beskriver de inbyggda måtten för .NET-körningsbibliotek som skapas med hjälp av API:et System.Diagnostics.Metrics . En lista över mått baserat på det äldre EventCounters-API:et finns i Tillgängliga räknare.

Dricks

Mer information om hur du samlar in och rapporterar dessa mått finns i Samla in mått.

System.Runtime

Mätaren System.Runtime rapporterar mått från GC, JIT, AssemblyLoader, Threadpool och undantagshanteringsdelar av .NET-körningen samt vissa CPU- och minnesmått från operativsystemet. Dessa mått är tillgängliga automatiskt för alla .NET-appar.

Metrisk: dotnet.process.cpu.time
Name Instrumenttyp Enhet (UCUM) beskrivning
dotnet.process.cpu.time Räknare s CPU-tid som används av processen.
Attribut Typ Beskrivning Exempel Närvaro
cpu.mode sträng Cpu-läget. user; system Alltid

Det här måttet rapporterar samma värden som åtkomst till processortidsegenskaperna System.Diagnostics.Process för den aktuella processen. Läget system motsvarar PrivilegedProcessorTime och user läget motsvarar UserProcessorTime

Tillgänglig från och med: .NET 9.0.

Metrisk: dotnet.process.memory.working_set
Name Instrumenttyp Enhet (UCUM) beskrivning
dotnet.process.memory.working_set UpDownCounter By Antalet byte av fysiskt minne som mappats till processkontexten.

Det här måttet rapporterar samma värden som anropar Environment.WorkingSet egenskapen.

Tillgänglig från och med: .NET 9.0.

Metrisk: dotnet.gc.collections
Name Instrumenttyp Enhet (UCUM) beskrivning
dotnet.gc.collections Räknare {collection} Antalet skräpsamlingar som har inträffat sedan processen startades.
Attribut Typ Beskrivning Exempel Närvaro
dotnet.gc.heap.generation sträng Namnet på den maximala hanterade heapgenerationen som samlas in. gen0; gen1; gen2 Alltid

.NET GC är en generations skräpinsamlare. Varje gång skräpinsamlaren körs använder den heuristik för att välja en maximal generation och samlar sedan in objekt i alla generationer upp till det valda maxvärdet. En samling samlar till exempel gen1 in alla objekt i generation 0 och 1. En gen2 samling samlar in alla objekt i generation 0, 1 och 2. Mer information om .NET GC och generations skräpinsamling finns i .NET-skräpinsamlingsguiden.

Tillgänglig från och med: .NET 9.0.

Metrisk: dotnet.gc.heap.total_allocated
Name Instrumenttyp Enhet (UCUM) beskrivning
dotnet.gc.heap.total_allocated Räknare By Det ungefärliga antalet byte som allokerats på den hanterade GC-heapen sedan processen startades. Det returnerade värdet innehåller inga inbyggda allokeringar.

Det här måttet rapporterar samma värden som anropar GC.GetTotalAllocatedBytes. Mer information om .NET GC finns i guiden för .NET-skräpinsamling.

Tillgänglig från och med: .NET 9.0.

Metrisk: dotnet.gc.last_collection.memory.committed_size
Name Instrumenttyp Enhet (UCUM) beskrivning
dotnet.gc.last_collection.memory.committed_size UpDownCounter By Mängden incheckat virtuellt minne som används av .NET GC, vilket observerades under den senaste skräpinsamlingen.

Det här måttet rapporterar samma värden som anropar GCMemoryInfo.TotalCommittedBytes. Det incheckade virtuella minnet kan vara större än heapstorleken eftersom det innehåller både minne för lagring av befintliga objekt (heapstorleken) och lite extra minne som är redo att hantera nyligen allokerade objekt i framtiden. Mer information om .NET GC finns i guiden för .NET-skräpinsamling.

Tillgänglig från och med: .NET 9.0.

Metrisk: dotnet.gc.last_collection.heap.size
Name Instrumenttyp Enhet (UCUM) beskrivning
dotnet.gc.last_collection.heap.size UpDownCounter By Den hanterade GC-heapstorleken (inklusive fragmentering) som observerades under den senaste skräpinsamlingen.
Attribut Typ Beskrivning Exempel Närvaro
dotnet.gc.heap.generation sträng Namnet på den hanterade heapgenerationen för skräpinsamlaren. gen0; gen1; gen2;loh;poh Alltid

.NET GC delar upp heapen i generationer. Förutom de standardiserade numrerade generationerna placerar GC också vissa objekt i två speciella generationer:

  • Stor objekthash (LOH) lagrar .NET-objekt som är mycket stora jämfört med vanliga objekt.
  • Fäst objekt-heap (POH) lagrar objekt som allokerats med hjälp av API:et GC.AllocateArray när parametern pinned är sann.

Båda dessa speciella generationer samlas in under gen2 GC-samlingar. Mer information om .NET GC finns i guiden för .NET-skräpinsamling.

Tillgänglig från och med: .NET 9.0.

Metrisk: dotnet.gc.last_collection.heap.fragmentation.size
Name Instrumenttyp Enhet (UCUM) beskrivning
dotnet.gc.last_collection.heap.fragmentation.size UpDownCounter By Heapfragmenteringen, som observerades under den senaste skräpinsamlingen.

Det här måttet rapporterar samma värden som anropar GCGenerationInfo.FragmentationAfterBytes.

När .NET-objekt allokeras tenderar de till en början att läggas ut sammanhängande i minnet. Men om vissa av dessa objekt senare samlas in av GC skapar detta luckor i oanvänt minne mellan de levande objekt som finns kvar. Dessa luckor representerar den del av GC-heapen som för närvarande inte används för att lagra objekt, som ofta kallas "fragmentering". GC kan återanvända fragmenteringsbyte i framtiden för nya objektallokeringar om objektstorleken är tillräckligt liten för att få plats i någon av luckorna. GC kan också utföra en särskild komprimerande skräpinsamling som flyttar återstående levande objekt bredvid varandra så länge objekten inte har fästs på plats.

Mer information om hur .NET GC fungerar, analyserar GC-prestanda och vilken roll fragmentering spelar finns i .NET-minnesprestandaanalys.

Tillgänglig från och med: .NET 9.0.

Metrisk: dotnet.gc.pause.time
Name Instrumenttyp Enhet (UCUM) beskrivning
dotnet.gc.pause.time Räknare s Den totala tiden som pausats i GC sedan processen startades.

Det här måttet rapporterar samma värden som anropar GC.GetTotalPauseDuration().

Varje gång .NET GC gör en samling måste den kort pausa alla trådar som kör hanterad kod för att avgöra vilka objekt som fortfarande refereras. Det här måttet rapporterar summan av alla dessa paustider sedan processen började. Du kan använda det här måttet för att avgöra vilken del av tiden trådarna lägger på att pausas för GC jämfört med den tid de kan köra hanterad kod.

Tillgänglig från och med: .NET 9.0.

Metrisk: dotnet.jit.compiled_il.size
Name Instrumenttyp Enhet (UCUM) beskrivning
dotnet.jit.compiled_il.size Räknare By Antal byte med mellanliggande språk som har kompilerats sedan processen startades.

Det här måttet rapporterar samma värden som anropar JitInfo.GetCompiledILBytes.

När du skapar en .NET-app kompileras den hanterade koden ursprungligen från ett högnivåspråk som C#, VB eller F# till mellanliggande språk (IL). När programmet sedan körs konverterar jit-kompilatorn .NET just-in-time (JIT) IL:en till datorkoden.

Eftersom JIT-kompilering sker första gången en metod körs tenderar de flesta JIT-kompilering att ske under programstart. Att minska mängden IL som är JIT-kompilerad kan förbättra programmets starttid.

Tillgänglig från och med: .NET 9.0.

Metrisk: dotnet.jit.compiled_methods
Name Instrumenttyp Enhet (UCUM) beskrivning
dotnet.jit.compiled_methods Räknare {method} Antalet gånger JIT-kompilatorn (om)kompilerade metoder sedan processen startades.

Det här måttet rapporterar samma värden som anropar JitInfo.GetCompiledMethodCount.

När du skapar en .NET-app kompileras den hanterade koden ursprungligen från ett högnivåspråk som C#, VB eller F# till mellanliggande språk (IL). När programmet sedan körs konverterar jit-kompilatorn .NET just-in-time (JIT) IL:en till datorkoden.

Eftersom JIT-kompilering sker första gången en metod körs tenderar de flesta JIT-kompilering att ske under programstart. Om du minskar antalet metoder som behöver kompileras med JIT kan du förbättra programmets starttid.

Tillgänglig från och med: .NET 9.0.

Metrisk: dotnet.jit.compilation.time
Name Instrumenttyp Enhet (UCUM) beskrivning
dotnet.jit.compilation.time Räknare s Hur lång tid JIT-kompilatorn har lagt på att kompilera metoder sedan processen startades.

Det här måttet rapporterar samma värden som anropar JitInfo.GetCompilationTime.

När du skapar en .NET-app kompileras den hanterade koden ursprungligen från ett högnivåspråk som C#, VB eller F# till mellanliggande språk (IL). När programmet sedan körs konverterar jit-kompilatorn .NET just-in-time (JIT) IL:en till datorkoden.

Eftersom JIT-kompilering sker första gången en metod körs tenderar de flesta JIT-kompilering att ske under programstart. Om du minskar tiden för JIT-kompilering kan du förbättra programmets starttid.

Tillgänglig från och med: .NET 9.0.

Metrisk: dotnet.thread_pool.thread.count
Name Instrumenttyp Enhet (UCUM) beskrivning
dotnet.thread_pool.thread.count UpDownCounter {thread} Antalet trådpoolstrådar som för närvarande finns.

Det här måttet rapporterar samma värden som anropar ThreadPool.ThreadCount.

.NET använder en trådpool för att schemalägga arbetsobjekt till andra trådar. Det här måttet innehåller antalet arbetstrådar som för närvarande hanteras av den trådpoolen.

Tillgänglig från och med: .NET 9.0.

Metrisk: dotnet.thread_pool.work_item.count
Name Instrumenttyp Enhet (UCUM) beskrivning
dotnet.thread_pool.work_item.count Räknare {work_item} Antalet arbetsobjekt som trådpoolen har slutfört sedan processen startades.

Det här måttet rapporterar samma värden som anropar ThreadPool.CompletedWorkItemCount.

.NET använder en trådpool för att schemalägga arbetsobjekt till andra trådar. Det här måttet innehåller antalet arbetsobjekt som har körts av trådpooltrådarna.

Tillgänglig från och med: .NET 9.0.

Metrisk: dotnet.thread_pool.queue.length
Name Instrumenttyp Enhet (UCUM) beskrivning
dotnet.thread_pool.queue.length UpDownCounter {work_item} Antalet arbetsobjekt som för närvarande är i kö för att bearbetas av trådpoolen.

Det här måttet rapporterar samma värden som anropar ThreadPool.PendingWorkItemCount.

.NET använder en trådpool för att schemalägga arbetsobjekt till andra trådar. Det här måttet innehåller antalet arbetsobjekt som för närvarande är i kö för att köras av någon av trådpooltrådarna.

Tillgänglig från och med: .NET 9.0.

Metrisk: dotnet.monitor.lock_contentions
Name Instrumenttyp Enhet (UCUM) beskrivning
dotnet.monitor.lock_contentions Räknare {contention} Antalet gånger det uppstod konkurrens när ett övervakningslås försökte hämtas sedan processen startades.

Det här måttet rapporterar samma värden som anropar Monitor.LockContentionCount.

.NET stöder användning av alla hanterade objekt som ett lås, antingen med API:er som Monitor.Enter eller med lås-instruktionen. Om en tråd redan har ett lås medan en andra tråd försöker hämta den kallas det låskonkurration.

Tillgänglig från och med: .NET 9.0.

Metrisk: dotnet.timer.count
Name Instrumenttyp Enhet (UCUM) beskrivning
dotnet.timer.count UpDownCounter {timer} Antalet timerinstanser som för närvarande är aktiva.

Det här måttet rapporterar samma värden som anropar Timer.ActiveCount.

Tillgänglig från och med: .NET 9.0.

Metrisk: dotnet.assembly.count
Name Instrumenttyp Enhet (UCUM) beskrivning
dotnet.assembly.count UpDownCounter {assembly} Antalet .NET-sammansättningar som för närvarande läses in.

Det här måttet rapporterar samma värden som anropet AppDomain.GetAssemblies() och kontrollerar sedan längden på den returnerade matrisen.

Tillgänglig från och med: .NET 9.0.

Metrisk: dotnet.exceptions
Name Instrumenttyp Enhet (UCUM) beskrivning
dotnet.exceptions Räknare {exception} Antalet undantag som har genererats i hanterad kod.
Attribut Typ Beskrivning Exempel Närvaro
error.type sträng Undantagstypen som utlöstes. System.OperationCanceledException; Contoso.MyException Required

Det här måttet rapporterar samma värden som att räkna anrop till AppDomain.FirstChanceException händelsen.

Tillgänglig från och med: .NET 9.0.