Aracılığıyla paylaş


.NET Çalışma Zamanı ölçümleri

Bu makalede, API kullanılarak System.Diagnostics.Metrics oluşturulan .NET çalışma zamanı kitaplıkları için yerleşik ölçümler açıklanmaktadır. Eski EventCounters API'sini temel alan ölçümlerin listesi için bkz. Kullanılabilir sayaçlar.

İpucu

Bu ölçümleri toplama ve raporlama hakkında daha fazla bilgi için bkz . Ölçümleri Toplama.

System.Runtime

Ölçüm, System.Runtime .NET çalışma zamanının GC, JIT, AssemblyLoader, Threadpool ve özel durum işleme bölümlerinin yanı sıra işletim sistemindeki bazı CPU ve bellek ölçümlerinden ölçümleri raporlar. Bu ölçümler tüm .NET uygulamaları için otomatik olarak kullanılabilir.

Metrik: dotnet.process.cpu.time
Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
dotnet.process.cpu.time Sayaç s İşlem tarafından kullanılan CPU süresi.
Öznitelik Type Açıklama Örnekler İletişim durumu
cpu.mode Dize CPU modu. user; system Her zaman

Bu ölçüm, geçerli işlem için üzerindeki System.Diagnostics.Process işlemci zamanı özelliklerine erişmeyle aynı değerleri raporlar. Mod system aşağıdakine PrivilegedProcessorTime karşılık gelir ve user mod UserProcessorTime

Şu şekilde kullanılabilir: .NET 9.0.

Metrik: dotnet.process.memory.working_set
Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
dotnet.process.memory.working_set UpDownCounter By İşlem bağlamı ile eşlenen fiziksel belleğin bayt sayısı.

Bu ölçüm, çağırma Environment.WorkingSet özelliğiyle aynı değerleri raporlar.

Şu şekilde kullanılabilir: .NET 9.0.

Metrik: dotnet.gc.collections
Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
dotnet.gc.collections Sayaç {collection} İşlem başladıktan sonra gerçekleşen çöp toplama sayısı.
Öznitelik Type Açıklama Örnekler İletişim durumu
dotnet.gc.heap.generation Dize Toplanan en yüksek yönetilen yığın neslinin adı. gen0; gen1; gen2 Her zaman

.NET GC bir nesil atık toplayıcıdır. Atık toplayıcı her çalıştığında, en yüksek nesli seçmek için buluşsal yöntemler kullanır ve ardından seçilen maksimuma kadar tüm nesillerdeki nesneleri toplar. Örneğin, bir gen1 koleksiyon nesil 0 ve 1'deki tüm nesneleri toplar. Koleksiyon gen2 0, 1 ve 2. nesillerdeki tüm nesneleri toplar. .NET GC ve nesil atık toplama hakkında daha fazla bilgi için bkz . .NET çöp toplama kılavuzu.

Şu şekilde kullanılabilir: .NET 9.0.

Metrik: dotnet.gc.heap.total_allocated
Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
dotnet.gc.heap.total_allocated Sayaç By İşlem başladıktan sonra yönetilen GC yığınında ayrılan yaklaşık bayt sayısı. Döndürülen değer herhangi bir yerel ayırma içermez.

Bu ölçüm çağrısıyla GC.GetTotalAllocatedBytesaynı değerleri raporlar. .NET GC hakkında daha fazla bilgi için bkz . .NET çöp toplama kılavuzu.

Şu şekilde kullanılabilir: .NET 9.0.

Metrik: dotnet.gc.last_collection.memory.committed_size
Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
dotnet.gc.last_collection.memory.committed_size UpDownCounter By En son çöp toplama sırasında gözlemlendiği gibi .NET GC tarafından kullanılan işlenen sanal bellek miktarı.

Bu ölçüm çağrısıyla GCMemoryInfo.TotalCommittedBytesaynı değerleri raporlar. Hem mevcut nesneleri depolamak için bellek (yığın boyutu) hem de gelecekte yeni ayrılan nesneleri işlemeye hazır ek bellek içerdiğinden, işlenen sanal bellek yığın boyutundan daha büyük olabilir. .NET GC hakkında daha fazla bilgi için bkz . .NET çöp toplama kılavuzu.

Şu şekilde kullanılabilir: .NET 9.0.

Metrik: dotnet.gc.last_collection.heap.size
Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
dotnet.gc.last_collection.heap.size UpDownCounter By En son çöp toplama sırasında gözlemlendiği gibi yönetilen GC yığın boyutu (parçalanma dahil).
Öznitelik Type Açıklama Örnekler İletişim durumu
dotnet.gc.heap.generation Dize Çöp toplayıcı tarafından yönetilen yığın oluşturmanın adı. gen0; gen1; gen2;loh;poh Her zaman

.NET GC yığını nesillere böler. Gc, standart numaralı nesillere ek olarak bazı nesneleri de iki özel nesile yerleştirir:

  • Büyük nesne yığını (LOH), tipik nesnelere kıyasla çok büyük olan .NET nesnelerini depolar.
  • Sabitlenmiş nesne yığını (POH), parametre true olduğunda pinned API kullanılarak GC.AllocateArray ayrılan nesneleri depolar.

Bu özel nesillerin her ikisi de GC koleksiyonları sırasında gen2 toplanır. .NET GC hakkında daha fazla bilgi için bkz . .NET Çöp toplama kılavuzu.

Şu şekilde kullanılabilir: .NET 9.0.

Metrik: dotnet.gc.last_collection.heap.fragmentation.size
Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
dotnet.gc.last_collection.heap.fragmentation.size UpDownCounter By En son çöp toplama sırasında gözlemlendiği gibi yığın parçalanması.

Bu ölçüm çağrısıyla GCGenerationInfo.FragmentationAfterBytesaynı değerleri raporlar.

.NET nesneleri ayrıldığında, başlangıçta bellekte bitişik olarak yerleştirilme eğilimindedir. Ancak, bu nesnelerin bazıları daha sonra GC tarafından toplanırsa, kalan canlı nesneler arasında kullanılmayan bellek boşlukları oluşturur. Bu boşluklar, GC yığınının şu anda nesneleri depolamak için kullanılmayan bölümünü temsil eder ve genellikle "parçalanma" olarak adlandırılır. Nesne boyutu boşluklardan birine sığacak kadar küçükse GC, yeni nesne ayırmaları için gelecekte parçalanma baytlarını yeniden kullanabilir. GC, nesneler yerinde sabitlenmediği sürece kalan canlı nesneleri yan yana taşıyan özel bir sıkıştırma çöp toplama işlemi de gerçekleştirebilir.

.NET GC'nin nasıl çalıştığı, GC performansını analiz etme ve rol parçalanmanın oynadığı rol hakkında daha fazla bilgi için bkz . .NET bellek performansı analizi.

Şu şekilde kullanılabilir: .NET 9.0.

Metrik: dotnet.gc.pause.time
Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
dotnet.gc.pause.time Sayaç s İşlem başladıktan sonra GC'de duraklatılan toplam süre.

Bu ölçüm çağrısıyla GC.GetTotalPauseDuration()aynı değerleri raporlar.

.NET GC bir koleksiyon her çalıştığında, hangi nesnelere hala başvuruldığını belirlemek için yönetilen kodu çalıştıran tüm iş parçacıklarını kısa bir süre duraklatması gerekir. Bu ölçüm, işlemin başlamasından bu yana tüm bu duraklama sürelerinin toplamını bildirir. İş parçacıklarının GC için duraklatılmış zaman dilimini ve yönetilen kodu çalıştırabildikleri süreyi belirlemek için bu ölçümü kullanabilirsiniz.

Şu şekilde kullanılabilir: .NET 9.0.

Metrik: dotnet.jit.compiled_il.size
Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
dotnet.jit.compiled_il.size Sayaç By İşlem başladıktan sonra derlenen ara dil baytlarının sayısı.

Bu ölçüm çağrısıyla JitInfo.GetCompiledILBytesaynı değerleri raporlar.

Bir .NET uygulaması oluşturduğunuzda, yönetilen kod başlangıçta C#, VB veya F# gibi üst düzey bir dilden Ara dile (IL) derlenmiş olur. Ardından program çalıştırıldığında ,NET tam zamanında (JIT) derleyicisi IL'yi makine koduna dönüştürür.

Bir yöntem ilk kez çalıştırıldığında JIT derlemesi gerçekleştiğinden, çoğu JIT derlemesi uygulama başlatma sırasında gerçekleşme eğilimindedir. JIT derlenen IL miktarını azaltmak, uygulama başlatma süresini iyileştirebilir.

Şu şekilde kullanılabilir: .NET 9.0.

Metrik: dotnet.jit.compiled_methods
Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
dotnet.jit.compiled_methods Sayaç {method} İşlem başladıktan sonra JIT derleyicisi (yeniden) derlenen yöntemlerin sayısı.

Bu ölçüm çağrısıyla JitInfo.GetCompiledMethodCountaynı değerleri raporlar.

Bir .NET uygulaması oluşturduğunuzda, yönetilen kod başlangıçta C#, VB veya F# gibi üst düzey bir dilden Ara dile (IL) derlenmiş olur. Ardından program çalıştırıldığında ,NET tam zamanında (JIT) derleyicisi IL'yi makine koduna dönüştürür.

Bir yöntem ilk kez çalıştırıldığında JIT derlemesi gerçekleştiğinden, çoğu JIT derlemesi uygulama başlatma sırasında gerçekleşme eğilimindedir. JIT'nin derlenmesi gereken yöntemlerin sayısını azaltmak, uygulama başlatma süresini iyileştirebilir.

Şu şekilde kullanılabilir: .NET 9.0.

Metrik: dotnet.jit.compilation.time
Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
dotnet.jit.compilation.time Sayaç s İşlem başladıktan sonra JIT derleyicisinin yöntemleri derlemek için harcadığı süre.

Bu ölçüm çağrısıyla JitInfo.GetCompilationTimeaynı değerleri raporlar.

Bir .NET uygulaması oluşturduğunuzda, yönetilen kod başlangıçta C#, VB veya F# gibi üst düzey bir dilden Ara dile (IL) derlenmiş olur. Ardından program çalıştırıldığında ,NET tam zamanında (JIT) derleyicisi IL'yi makine koduna dönüştürür.

Bir yöntem ilk kez çalıştırıldığında JIT derlemesi gerçekleştiğinden, çoğu JIT derlemesi uygulama başlatma sırasında gerçekleşme eğilimindedir. JIT derlemesi için harcanan süreyi azaltmak, uygulama başlatma süresini iyileştirebilir.

Şu şekilde kullanılabilir: .NET 9.0.

Metrik: dotnet.thread_pool.thread.count
Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
dotnet.thread_pool.thread.count UpDownCounter {thread} Şu anda var olan iş parçacığı havuzu iş parçacığı sayısı.

Bu ölçüm çağrısıyla ThreadPool.ThreadCountaynı değerleri raporlar.

.NET, iş öğelerini diğer iş parçacıklarına zamanlamak için bir iş parçacığı havuzu kullanır. Bu ölçüm, o anda bu iş parçacığı havuzu tarafından yönetilen çalışan iş parçacıklarının sayısını sağlar.

Şu şekilde kullanılabilir: .NET 9.0.

Metrik: dotnet.thread_pool.work_item.count
Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
dotnet.thread_pool.work_item.count Sayaç {work_item} İşlem başladıktan sonra iş parçacığı havuzunun tamamlamış olduğu iş öğelerinin sayısı.

Bu ölçüm çağrısıyla ThreadPool.CompletedWorkItemCountaynı değerleri raporlar.

.NET, iş öğelerini diğer iş parçacıklarına zamanlamak için bir iş parçacığı havuzu kullanır. Bu ölçüm, iş parçacığı havuzu iş parçacıkları tarafından yürütülen iş öğelerinin sayısını sağlar.

Şu şekilde kullanılabilir: .NET 9.0.

Metrik: dotnet.thread_pool.queue.length
Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
dotnet.thread_pool.queue.length UpDownCounter {work_item} İş parçacığı havuzu tarafından işlenmek üzere şu anda kuyruğa alınmış iş öğelerinin sayısı.

Bu ölçüm çağrısıyla ThreadPool.PendingWorkItemCountaynı değerleri raporlar.

.NET, iş öğelerini diğer iş parçacıklarına zamanlamak için bir iş parçacığı havuzu kullanır. Bu ölçüm, iş parçacığı havuzu iş parçacıklarından biri tarafından yürütülmek üzere şu anda kuyruğa alınmış iş öğelerinin sayısını sağlar.

Şu şekilde kullanılabilir: .NET 9.0.

Metrik: dotnet.monitor.lock_contentions
Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
dotnet.monitor.lock_contentions Sayaç {contention} İşlem başladığından beri bir monitör kilidi alınmaya çalışılırken çekişme sayısı.

Bu ölçüm çağrısıyla Monitor.LockContentionCountaynı değerleri raporlar.

.NET, veya gibi API'lerle veya lock deyimiyle yönetilen herhangi bir nesneyi kilit olarak Monitor.Enter kullanmayı destekler. İkinci bir iş parçacığı onu almaya çalışırken bir iş parçacığı zaten kilit tutuyorsa, buna kilit çekişmesi denir.

Şu şekilde kullanılabilir: .NET 9.0.

Metrik: dotnet.timer.count
Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
dotnet.timer.count UpDownCounter {timer} Şu anda etkin olan zamanlayıcı örneklerinin sayısı.

Bu ölçüm çağrısıyla Timer.ActiveCountaynı değerleri raporlar.

Şu şekilde kullanılabilir: .NET 9.0.

Metrik: dotnet.assembly.count
Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
dotnet.assembly.count UpDownCounter {assembly} Şu anda yüklü olan .NET derlemelerinin sayısı.

Bu ölçüm, çağrılmasıyla AppDomain.GetAssemblies() aynı değerleri raporlar ve ardından döndürülen dizinin uzunluğunu denetler.

Şu şekilde kullanılabilir: .NET 9.0.

Metrik: dotnet.exceptions
Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
dotnet.exceptions Sayaç {exception} Yönetilen kodda oluşan özel durumların sayısı.
Öznitelik Type Açıklama Örnekler İletişim durumu
error.type Dize Oluşan özel durum türü. System.OperationCanceledException; Contoso.MyException Required

Bu ölçüm, olaya yapılan çağrıları AppDomain.FirstChanceException sayma ile aynı değerleri raporlar.

Şu şekilde kullanılabilir: .NET 9.0.