Metriky modulu runtime .NET
Tento článek popisuje předdefinované metriky pro knihovny modulu runtime .NET vytvořené pomocí System.Diagnostics.Metrics rozhraní API. Seznam metrik založených na starším rozhraní API EventCounters najdete v tématu Dostupné čítače.
Tip
Další informace o tom, jak tyto metriky shromažďovat a hlásit, najdete v tématu Shromažďování metrik.
System.Runtime
Měřič System.Runtime
hlásí měření z GC, JIT, AssemblyLoader, Threadpool a výjimek zpracovávající části modulu runtime .NET a také některé metriky procesoru a paměti z operačního systému. Tyto metriky jsou dostupné automaticky pro všechny aplikace .NET.
Metrický: dotnet.process.cpu.time
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
dotnet.process.cpu.time |
Čítač | s |
Čas procesoru používaný procesem |
Atribut | Typ | Popis | Příklady | Přítomnost |
---|---|---|---|---|
cpu.mode |
string | Režim procesoru. | user ; system |
Always |
Tato metrika hlásí stejné hodnoty jako přístup k vlastnostem System.Diagnostics.Process času procesoru pro aktuální proces. Režim system
odpovídá PrivilegedProcessorTime režimu a user
odpovídá režimu UserProcessorTime
Dostupné od: .NET 9.0.
Metrický: dotnet.process.memory.working_set
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
dotnet.process.memory.working_set |
UpDownCounter | By |
Počet bajtů fyzické paměti mapované na kontext procesu. |
Tato metrika hlásí stejné hodnoty jako volající Environment.WorkingSet vlastnost.
Dostupné od: .NET 9.0.
Metrický: dotnet.gc.collections
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
dotnet.gc.collections |
Čítač | {collection} |
Počet uvolňování paměti, ke kterým došlo od spuštění procesu. |
Atribut | Typ | Popis | Příklady | Přítomnost |
---|---|---|---|---|
dotnet.gc.heap.generation |
string | Název maximální spravované generace haldy, která se shromažďuje. | gen0 ; gen1 ; gen2 |
Always |
Uvolňování paměti .NET je generační systém uvolňování paměti. Pokaždé, když se systém uvolňování paměti spustí, použije heuristika k výběru maximální generace a následně shromažďuje objekty ve všech generacích až do vybraného maxima. Kolekce například gen1
shromažďuje všechny objekty v generacích 0 a 1. Kolekce gen2
shromažďuje všechny objekty v generacích 0, 1 a 2. Další informace o uvolňování paměti .NET a generování paměti naleznete v průvodci uvolňováním paměti .NET.
Dostupné od: .NET 9.0.
Metrický: dotnet.gc.heap.total_allocated
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
dotnet.gc.heap.total_allocated |
Čítač | By |
Přibližný počet bajtů přidělených ke spravované haldě GC od zahájení procesu. Vrácená hodnota nezahrnuje žádné nativní přidělení. |
Tato metrika hlásí stejné hodnoty jako volání GC.GetTotalAllocatedBytes. Další informace o uvolňování paměti .NET naleznete v průvodci uvolňováním paměti .NET.
Dostupné od: .NET 9.0.
Metrický: dotnet.gc.last_collection.memory.committed_size
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
dotnet.gc.last_collection.memory.committed_size |
UpDownCounter | By |
Množství potvrzené virtuální paměti používané uvolňováním paměti .NET, jak je pozorováno během nejnovější uvolňování paměti. |
Tato metrika hlásí stejné hodnoty jako volání GCMemoryInfo.TotalCommittedBytes. Potvrzená virtuální paměť může být větší než velikost haldy, protože obsahuje paměť pro ukládání existujících objektů (velikost haldy) a další paměť, která je připravená zpracovat nově přidělené objekty v budoucnu. Další informace o uvolňování paměti .NET naleznete v průvodci uvolňováním paměti .NET.
Dostupné od: .NET 9.0.
Metrický: dotnet.gc.last_collection.heap.size
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
dotnet.gc.last_collection.heap.size |
UpDownCounter | By |
Velikost spravované haldy uvolňování paměti (včetně fragmentace), jak je pozorováno během nejnovějšího uvolňování paměti. |
Atribut | Typ | Popis | Příklady | Přítomnost |
---|---|---|---|---|
dotnet.gc.heap.generation |
string | Název generování haldy spravované uvolňováním paměti. | gen0 ; gen1 ; gen2 ;loh ;poh |
Always |
.NET GC rozdělí haldu do generací. Kromě standardních očíslovaných generací GC také vkládá některé objekty do dvou speciálních generací:
- Velká halda objektu (LOH) ukládá objekty .NET, které jsou ve srovnání s typickými objekty velmi velké.
- Připnutá halda objektu (POH) ukládá objekty přidělené pomocí GC.AllocateArray rozhraní API, pokud
pinned
je parametr pravdivý.
Během kolekcí uvolňování paměti se shromažďují gen2
obě tyto speciální generace. Další informace o uvolňování paměti .NET naleznete v průvodci uvolňováním paměti .NET.
Dostupné od: .NET 9.0.
Metrický: dotnet.gc.last_collection.heap.fragmentation.size
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
dotnet.gc.last_collection.heap.fragmentation.size |
UpDownCounter | By |
Fragmentace haldy, jak je pozorováno při nejnovějším uvolňování paměti. |
Tato metrika hlásí stejné hodnoty jako volání GCGenerationInfo.FragmentationAfterBytes.
Pokud jsou objekty .NET přiděleny, zpočátku jsou obvykle rozloženy souvisle v paměti. Pokud však některé z těchto objektů později shromažďuje GC, vytvoří se mezery v nevyužité paměti mezi živými objekty, které zůstávají. Tyto mezery představují část haldy GC, která se aktuálně nepoužívá k ukládání objektů, často označovaných jako fragmentace. GC může v budoucnu znovu použít bajty fragmentace pro přidělení nových objektů, pokud je velikost objektu dostatečně malá, aby se vešla do jedné z mezer. Uvolňování paměti může také provést speciální komprimující uvolňování paměti, které přesune zbývající živé objekty vedle sebe, pokud objekty nebyly připnuty na místě.
Další informace o fungování GC .NET, analýze výkonu GC a o tom, jakou roli hraje fragmentace rolí, naleznete v analýze výkonu paměti .NET.
Dostupné od: .NET 9.0.
Metrický: dotnet.gc.pause.time
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
dotnet.gc.pause.time |
Čítač | s |
Celková doba pozastavení v GC od spuštění procesu. |
Tato metrika hlásí stejné hodnoty jako volání GC.GetTotalPauseDuration().
Pokaždé, když uvolňování paměti .NET provede kolekci, musí krátce pozastavit všechna vlákna se spravovaným kódem, aby bylo možné určit, na které objekty se stále odkazují. Tato metrika hlásí součet všech těchto dob pozastavení od začátku procesu. Pomocí této metriky můžete zjistit, jaký zlomek časových vláken stráví pozastavením pro GC a časem, kdy budou moct spustit spravovaný kód.
Dostupné od: .NET 9.0.
Metrický: dotnet.jit.compiled_il.size
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
dotnet.jit.compiled_il.size |
Čítač | By |
Počet bajtů zprostředkujícího jazyka, které byly zkompilovány od spuštění procesu. |
Tato metrika hlásí stejné hodnoty jako volání JitInfo.GetCompiledILBytes.
Při sestavování aplikace .NET se spravovaný kód zpočátku zkompiluje z jazyka vysoké úrovně, jako je C#, VB nebo F# do zprostředkujícího jazyka (IL). Při spuštění programu pak kompilátor JIT (just-in-time) .NET převede il na strojový kód.
Vzhledem k tomu, že kompilace JIT nastane při prvním spuštění metody, většina kompilace JIT se obvykle vyskytuje během spouštění aplikace. Snížení množství IL kompilovaného JIT může zlepšit dobu spuštění aplikace.
Dostupné od: .NET 9.0.
Metrický: dotnet.jit.compiled_methods
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
dotnet.jit.compiled_methods |
Čítač | {method} |
Počet zkompilovaných metod kompilátoru JIT (re)od spuštění procesu. |
Tato metrika hlásí stejné hodnoty jako volání JitInfo.GetCompiledMethodCount.
Při sestavování aplikace .NET se spravovaný kód zpočátku zkompiluje z jazyka vysoké úrovně, jako je C#, VB nebo F# do zprostředkujícího jazyka (IL). Při spuštění programu pak kompilátor JIT (just-in-time) .NET převede il na strojový kód.
Vzhledem k tomu, že kompilace JIT nastane při prvním spuštění metody, většina kompilace JIT se obvykle vyskytuje během spouštění aplikace. Snížení počtu metod, které je potřeba zkompilovat JIT, může zlepšit dobu spuštění aplikace.
Dostupné od: .NET 9.0.
Metrický: dotnet.jit.compilation.time
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
dotnet.jit.compilation.time |
Čítač | s |
Doba, po kterou kompilátor JIT strávil kompilací metod od spuštění procesu. |
Tato metrika hlásí stejné hodnoty jako volání JitInfo.GetCompilationTime.
Při sestavování aplikace .NET se spravovaný kód zpočátku zkompiluje z jazyka vysoké úrovně, jako je C#, VB nebo F# do zprostředkujícího jazyka (IL). Při spuštění programu pak kompilátor JIT (just-in-time) .NET převede il na strojový kód.
Vzhledem k tomu, že kompilace JIT nastane při prvním spuštění metody, většina kompilace JIT se obvykle vyskytuje během spouštění aplikace. Zkrácení doby strávené kompilací JIT může zlepšit dobu spuštění aplikace.
Dostupné od: .NET 9.0.
Metrický: dotnet.thread_pool.thread.count
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
dotnet.thread_pool.thread.count |
UpDownCounter | {thread} |
Počet vláken fondu vláken, která aktuálně existují. |
Tato metrika hlásí stejné hodnoty jako volání ThreadPool.ThreadCount.
.NET používá fond vláken k naplánování pracovních položek do jiných vláken. Tato metrika poskytuje počet pracovních vláken aktuálně spravovaných tímto fondem vláken.
Dostupné od: .NET 9.0.
Metrický: dotnet.thread_pool.work_item.count
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
dotnet.thread_pool.work_item.count |
Čítač | {work_item} |
Počet pracovních položek, které fond vláken dokončil od spuštění procesu. |
Tato metrika hlásí stejné hodnoty jako volání ThreadPool.CompletedWorkItemCount.
.NET používá fond vláken k naplánování pracovních položek do jiných vláken. Tato metrika poskytuje počet pracovních položek spuštěných vlákny fondu vláken.
Dostupné od: .NET 9.0.
Metrický: dotnet.thread_pool.queue.length
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
dotnet.thread_pool.queue.length |
UpDownCounter | {work_item} |
Počet pracovních položek, které jsou aktuálně zařazeny do fronty ke zpracování fondem vláken. |
Tato metrika hlásí stejné hodnoty jako volání ThreadPool.PendingWorkItemCount.
.NET používá fond vláken k naplánování pracovních položek do jiných vláken. Tato metrika poskytuje počet pracovních položek, které jsou aktuálně zařazeny do fronty, které se mají spustit jedním z vláken fondu vláken.
Dostupné od: .NET 9.0.
Metrický: dotnet.monitor.lock_contentions
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
dotnet.monitor.lock_contentions |
Čítač | {contention} |
Počet kolizí při pokusu o získání zámku monitorování od spuštění procesu. |
Tato metrika hlásí stejné hodnoty jako volání Monitor.LockContentionCount.
.NET podporuje použití libovolného spravovaného objektu jako zámku, a to buď s rozhraními API, jako Monitor.Enter jsou nebo pomocí příkazu lock. Pokud jedno vlákno již obsahuje zámek, zatímco druhé vlákno se ho pokusí získat, označuje se jako kolize zámků.
Dostupné od: .NET 9.0.
Metrický: dotnet.timer.count
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
dotnet.timer.count |
UpDownCounter | {timer} |
Počet instancí časovače, které jsou aktuálně aktivní. |
Tato metrika hlásí stejné hodnoty jako volání Timer.ActiveCount.
Dostupné od: .NET 9.0.
Metrický: dotnet.assembly.count
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
dotnet.assembly.count |
UpDownCounter | {assembly} |
Počet sestavení .NET, která jsou aktuálně načtena. |
Tato metrika hlásí stejné hodnoty jako volání AppDomain.GetAssemblies() a pak zkontroluje délku vráceného pole.
Dostupné od: .NET 9.0.
Metrický: dotnet.exceptions
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
dotnet.exceptions |
Čítač | {exception} |
Počet výjimek, které byly vyvolány ve spravovaném kódu. |
Atribut | Typ | Popis | Příklady | Přítomnost |
---|---|---|---|---|
error.type |
string | Typ výjimky, který byl vyvolán. | System.OperationCanceledException ; Contoso.MyException |
Required |
Tato metrika hlásí stejné hodnoty jako počítání volání AppDomain.FirstChanceException události.
Dostupné od: .NET 9.0.