Sdílet prostřednictvím


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.