.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.