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