Megosztás a következőn keresztül:


.NET-futtatókörnyezeti metrikák

Ez a cikk az API használatával létrehozott .NET-futtatókörnyezeti kódtárak beépített metrikáit System.Diagnostics.Metrics ismerteti. A régebbi EventCounters API-n alapuló metrikák listáját az Elérhető számlálók című témakörben talál.

Tipp.

A metrikák gyűjtéséről és jelentéséről további információt a Metrikák gyűjtése című témakörben talál.

System.Runtime

A System.Runtime Meter a .NET-futtatókörnyezet GC, JIT, AssemblyLoader, Threadpool és kivételkezelési részeinek méréseit, valamint az operációs rendszer egyes PROCESSZOR- és memóriametrikáit jelenti. Ezek a metrikák automatikusan elérhetők az összes .NET-alkalmazáshoz.

Metrikus: dotnet.process.cpu.time
Név Műszer típusa Egység (UCUM) Leírás
dotnet.process.cpu.time Számláló s A folyamat által használt processzoridő.
Attribútum Típus Leírás Példák Jelenlét
cpu.mode húr A processzor üzemmódja. user; system Mindig

Ez a metrika ugyanazokat az értékeket jelenti, mint az aktuális folyamat processzoridő-tulajdonságainak System.Diagnostics.Process elérése. A system mód megfelel a módnak PrivilegedProcessorTime , és user a mód megfelel a UserProcessorTime

A következőtől kezdve érhető el: .NET 9.0.

Metrikus: dotnet.process.memory.working_set
Név Műszer típusa Egység (UCUM) Leírás
dotnet.process.memory.working_set UpDownCounter By A folyamatkörnyezethez hozzárendelt fizikai memória bájtjainak száma.

Ez a metrika ugyanazokat az értékeket jelenti, mint a hívó Environment.WorkingSet tulajdonság.

A következőtől kezdve érhető el: .NET 9.0.

Metrikus: dotnet.gc.collections
Név Műszer típusa Egység (UCUM) Leírás
dotnet.gc.collections Számláló {collection} A folyamat elindítása óta történt szemétgyűjtések száma.
Attribútum Típus Leírás Példák Jelenlét
dotnet.gc.heap.generation húr A gyűjtendő maximális felügyelt halomgeneráció neve. gen0; gen1; gen2 Mindig

A .NET GC egy generációs szemétgyűjtő. Minden alkalommal, amikor a szemétgyűjtő fut, heurisztika használatával választ ki egy maximális generációt, majd összegyűjti az összes generáció objektumait a kiválasztott maximális értékig. Egy gyűjtemény például gen1 a 0. és az 1. generáció összes objektumát összegyűjti. A gen2 gyűjtemény a 0, 1 és 2 generáció összes objektumát összegyűjti. A .NET GC-ről és a generációs szemétgyűjtésről további információt a .NET szemétgyűjtési útmutatójában talál.

A következőtől kezdve érhető el: .NET 9.0.

Metrikus: dotnet.gc.heap.total_allocated
Név Műszer típusa Egység (UCUM) Leírás
dotnet.gc.heap.total_allocated Számláló By A felügyelt csoportházirend-objektum halomán a folyamat elindítása óta lefoglalt bájtok hozzávetőleges száma. A visszaadott érték nem tartalmaz natív foglalásokat.

Ez a metrika ugyanazokat az értékeket jelenti, mint a hívás GC.GetTotalAllocatedBytes. A .NET GC-vel kapcsolatos további információkért tekintse meg a .NET szemétgyűjtési útmutatóját.

A következőtől kezdve érhető el: .NET 9.0.

Metrikus: dotnet.gc.last_collection.memory.committed_size
Név Műszer típusa Egység (UCUM) Leírás
dotnet.gc.last_collection.memory.committed_size UpDownCounter By A .NET GC által használt lekötött virtuális memória mennyisége a legutóbbi szemétgyűjtés során megfigyelt módon.

Ez a metrika ugyanazokat az értékeket jelenti, mint a hívás GCMemoryInfo.TotalCommittedBytes. A véglegesített virtuális memória nagyobb lehet, mint a halomméret, mivel a meglévő objektumok tárolására szolgáló memóriát (a halomméretet) és néhány további memóriát is tartalmaz, amely készen áll az újonnan lefoglalt objektumok kezelésére a jövőben. A .NET GC-vel kapcsolatos további információkért tekintse meg a .NET szemétgyűjtési útmutatóját.

A következőtől kezdve érhető el: .NET 9.0.

Metrikus: dotnet.gc.last_collection.heap.size
Név Műszer típusa Egység (UCUM) Leírás
dotnet.gc.last_collection.heap.size UpDownCounter By A legutóbbi szemétgyűjtés során megfigyelt felügyelt GC-halomméret (beleértve a töredezettségeket is).
Attribútum Típus Leírás Példák Jelenlét
dotnet.gc.heap.generation húr A szemétgyűjtő által felügyelt halom generálásának neve. gen0; gen1; gen2;loh;poh Mindig

A .NET GC generációkra osztja a halom halomát. A szabványos számozott generációk mellett a GC néhány objektumot is két speciális generációba helyez:

  • A nagyméretű objektum halom (LOH) a tipikus objektumokhoz képest nagyon nagy .NET-objektumokat tárol.
  • A rögzített objektum halom (POH) az API-val GC.AllocateArray lefoglalt objektumokat tárolja, ha a pinned paraméter igaz.

Mindkét különleges generációt a GC-gyűjtemények során gen2 gyűjtjük. A .NET GC-vel kapcsolatos további információkért tekintse meg a .NET szemétgyűjtési útmutatóját.

A következőtől kezdve érhető el: .NET 9.0.

Metrikus: dotnet.gc.last_collection.heap.fragmentation.size
Név Műszer típusa Egység (UCUM) Leírás
dotnet.gc.last_collection.heap.fragmentation.size UpDownCounter By A halom töredezettsége, ahogy a legutóbbi szemétgyűjtés során megfigyeltük.

Ez a metrika ugyanazokat az értékeket jelenti, mint a hívás GCGenerationInfo.FragmentationAfterBytes.

A .NET-objektumok lefoglalásakor kezdetben általában egybefüggően vannak elhelyezve a memóriában. Ha azonban a GC később összegyűjti ezeket az objektumokat, akkor a megmaradó élő objektumok között kihasználatlan memóriahiány keletkezik. Ezek a rések a GC-halom azon részét jelölik, amelyet jelenleg nem használnak objektumok tárolására, amelyet gyakran "töredezettségnek" neveznek. A GC a jövőben újra felhasználhatja a töredezettségi bájtokat az új objektumfoglalásokhoz, ha az objektum mérete elég kicsi ahhoz, hogy elférjen az egyik résben. A csoportházirend-objektum speciális tömörítési szemétgyűjtést is képes végezni, amely áthelyezi a többi élő objektumot egymás mellett, amíg az objektumok nincsenek rögzítve a helyén.

A .NET GC működésével, a GC teljesítményének elemzésével és a szerepkör töredezettségével kapcsolatos további információkért tekintse meg a .NET memóriateljesítmény-elemzését.

A következőtől kezdve érhető el: .NET 9.0.

Metrikus: dotnet.gc.pause.time
Név Műszer típusa Egység (UCUM) Leírás
dotnet.gc.pause.time Számláló s A GC-ben a folyamat elindítása óta szüneteltetett teljes idő.

Ez a metrika ugyanazokat az értékeket jelenti, mint a hívás GC.GetTotalPauseDuration().

Minden alkalommal, amikor a .NET GC végez egy gyűjteményt, rövid időre szüneteltetnie kell a felügyelt kódot futtató összes szálat annak megállapításához, hogy mely objektumokra hivatkozik még a rendszer. Ez a metrika a folyamat kezdete óta eltelt szüneteltetés összes idejét jelenti. Ezzel a metrikával meghatározhatja, hogy a GC-hez mennyi időt töltöttek szüneteltetve az időszálak a felügyelt kód futtatásának idejéhez képest.

A következőtől kezdve érhető el: .NET 9.0.

Metrikus: dotnet.jit.compiled_il.size
Név Műszer típusa Egység (UCUM) Leírás
dotnet.jit.compiled_il.size Számláló By A folyamat elindítása óta lefordított köztes nyelv bájtjainak száma.

Ez a metrika ugyanazokat az értékeket jelenti, mint a hívás JitInfo.GetCompiledILBytes.

.NET-alkalmazás létrehozásakor a felügyelt kód eredetileg magas szintű nyelvről( például C#, VB vagy F# ) lesz lefordítva köztes nyelvre (IL). Ezután a program futtatásakor a .NET igény szerinti (JIT) fordító gépi kóddá alakítja az IL-t.

Mivel a JIT-fordítás a metódus első futtatásakor történik, a legtöbb JIT-fordítás általában az alkalmazás indításakor fordul elő. A JIT által lefordított IL mennyiségének csökkentése javíthatja az alkalmazás indítási idejét.

A következőtől kezdve érhető el: .NET 9.0.

Metrikus: dotnet.jit.compiled_methods
Név Műszer típusa Egység (UCUM) Leírás
dotnet.jit.compiled_methods Számláló {method} A JIT-fordító (újra)fordítási módszereinek száma a folyamat elindítása óta.

Ez a metrika ugyanazokat az értékeket jelenti, mint a hívás JitInfo.GetCompiledMethodCount.

.NET-alkalmazás létrehozásakor a felügyelt kód eredetileg magas szintű nyelvről( például C#, VB vagy F# ) lesz lefordítva köztes nyelvre (IL). Ezután a program futtatásakor a .NET igény szerinti (JIT) fordító gépi kóddá alakítja az IL-t.

Mivel a JIT-fordítás a metódus első futtatásakor történik, a legtöbb JIT-fordítás általában az alkalmazás indításakor fordul elő. A JIT lefordítandó metódusok számának csökkentése javíthatja az alkalmazás indítási idejét.

A következőtől kezdve érhető el: .NET 9.0.

Metrikus: dotnet.jit.compilation.time
Név Műszer típusa Egység (UCUM) Leírás
dotnet.jit.compilation.time Számláló s A JIT-fordító a folyamat elindítása óta mennyi időt töltött a metódusok összeállításával.

Ez a metrika ugyanazokat az értékeket jelenti, mint a hívás JitInfo.GetCompilationTime.

.NET-alkalmazás létrehozásakor a felügyelt kód eredetileg magas szintű nyelvről( például C#, VB vagy F# ) lesz lefordítva köztes nyelvre (IL). Ezután a program futtatásakor a .NET igény szerinti (JIT) fordító gépi kóddá alakítja az IL-t.

Mivel a JIT-fordítás a metódus első futtatásakor történik, a legtöbb JIT-fordítás általában az alkalmazás indításakor fordul elő. A JIT-fordítással töltött idő csökkentése javíthatja az alkalmazás indítási idejét.

A következőtől kezdve érhető el: .NET 9.0.

Metrikus: dotnet.thread_pool.thread.count
Név Műszer típusa Egység (UCUM) Leírás
dotnet.thread_pool.thread.count UpDownCounter {thread} A jelenleg létező szálkészlet-szálak száma.

Ez a metrika ugyanazokat az értékeket jelenti, mint a hívás ThreadPool.ThreadCount.

A .NET egy szálkészlettel ütemezi a munkaelemeket más szálakra. Ez a metrika az adott szálkészlet által jelenleg felügyelt feldolgozói szálak számát adja meg.

A következőtől kezdve érhető el: .NET 9.0.

Metrikus: dotnet.thread_pool.work_item.count
Név Műszer típusa Egység (UCUM) Leírás
dotnet.thread_pool.work_item.count Számláló {work_item} Azon munkaelemek száma, amelyeket a szálkészlet a folyamat elindítása óta befejezett.

Ez a metrika ugyanazokat az értékeket jelenti, mint a hívás ThreadPool.CompletedWorkItemCount.

A .NET egy szálkészlettel ütemezi a munkaelemeket más szálakra. Ez a metrika a szálkészlet szálai által végrehajtott munkaelemek számát adja meg.

A következőtől kezdve érhető el: .NET 9.0.

Metrikus: dotnet.thread_pool.queue.length
Név Műszer típusa Egység (UCUM) Leírás
dotnet.thread_pool.queue.length UpDownCounter {work_item} A szálkészlet által feldolgozandó, jelenleg várólistára helyezett munkaelemek száma.

Ez a metrika ugyanazokat az értékeket jelenti, mint a hívás ThreadPool.PendingWorkItemCount.

A .NET egy szálkészlettel ütemezi a munkaelemeket más szálakra. Ez a metrika azoknak a munkaelemeknek a számát adja meg, amelyeket jelenleg az egyik szálkészletszál hajt végre.

A következőtől kezdve érhető el: .NET 9.0.

Metrikus: dotnet.monitor.lock_contentions
Név Műszer típusa Egység (UCUM) Leírás
dotnet.monitor.lock_contentions Számláló {contention} Hányszor volt versengés a figyelő zárolásának beszerzésekor a folyamat elindítása óta.

Ez a metrika ugyanazokat az értékeket jelenti, mint a hívás Monitor.LockContentionCount.

A .NET támogatja a felügyelt objektumok zárolásként való használatát, akár API-kkal, akár Monitor.Enter a zárolási utasítással. Ha egy szál már tartalmaz egy zárolást, miközben egy második szál megpróbálja beszerezni, ezt zárolási versengésnek nevezzük.

A következőtől kezdve érhető el: .NET 9.0.

Metrikus: dotnet.timer.count
Név Műszer típusa Egység (UCUM) Leírás
dotnet.timer.count UpDownCounter {timer} Az aktuálisan aktív időzítőpéldányok száma.

Ez a metrika ugyanazokat az értékeket jelenti, mint a hívás Timer.ActiveCount.

A következőtől kezdve érhető el: .NET 9.0.

Metrikus: dotnet.assembly.count
Név Műszer típusa Egység (UCUM) Leírás
dotnet.assembly.count UpDownCounter {assembly} A jelenleg betöltött .NET-szerelvények száma.

Ez a metrika ugyanazokat az értékeket jelenti, mint a hívás AppDomain.GetAssemblies() , majd a visszaadott tömb hosszának ellenőrzése.

A következőtől kezdve érhető el: .NET 9.0.

Metrikus: dotnet.exceptions
Név Műszer típusa Egység (UCUM) Leírás
dotnet.exceptions Számláló {exception} A felügyelt kódban kidobott kivételek száma.
Attribútum Típus Leírás Példák Jelenlét
error.type húr A kidobott kivétel típusa. System.OperationCanceledException; Contoso.MyException Required

Ez a metrika ugyanazokat az értékeket jelenti, mint az esemény hívásainak AppDomain.FirstChanceException számlálása.

A következőtől kezdve érhető el: .NET 9.0.