dotTrace ile .Net Performans Analizi

Aydın Koca
Neyasis Technology
Published in
4 min readMar 26, 2020

dotTrace performans analizi ve optimizasyon için kullanabileceğimiz bir araçtır. dotTrace uygulamarımızı analiz eder, uzun süren veya işlemci yükü oluşturan yerleri tespit ederek düzenleme yapmamamıza olanak sağlar. Performans analizi uygulamaları genel olarak yazılan uygulamaların cpu, memory kullanımıyla birlikte hangi kod satırı kaç kez işlendi?, ne kadar sürdü? vb. bilgileri tespit ederek sunan yazılımlardır. Bazı performans uygulamaları kodu analiz ederek en iyi yöntemi önermektedir. dotTrace uygulamalarımızı performans ve zaman çizelgesi olmak üzere iki yöntem ile profil etmemizi sağlar.

Performans Profili

dotTrace method kaç kez çağrıldı? ve çağrı zamanlarındaki verileri performans profili oluşturma sırasında toplar.

Zaman Çizelgesi Profili

Uygulama olaylarını kaydeder ve profil oluşturma oturumu sırasında uygulama durumunun nasıl değiştiğine dair veriler yazar. Ayrıntılı analiz ve çok iş parçacıklı uygulamalar için uygundur

Performans Profili ve Zaman Çizelgesi Profili Farkları

Çoğu durum için ikisi de birbirinin yerine kullanılabilir. Her ikisi de çağrı yığını verilerini toplayarak uygulama dar boğazlarını belirlememize yardımcı olur. Zaman çizelgesi profilin temel yararı, yalnızca uygulamanız tarafından yapılan çağrıları değil, aynı zamanda bu çağrıların zamanda nasıl dağıtıldığını görmemize izin vermesidir. Bu, olayların kronolojik sırasının önemli olduğu çok iş parçacıklı uygulamaların davranışını analiz ederken son derece yararlı olabilir: Örneğin, senkronizasyon gecikmelerinin belirlenmesinde, kullanıcı ara biriminin donma nedenleri vb. Bir diğer avantajı, zaman çizelgesi profillemesinin daha geniş bir veri yelpazesi toplamasıdır. Çağrı yığını verilerine ek olarak bellek kullanımı Garbage Collection, I/O events verilerinide toplar.

Performans profili ise yalnızca method kaç kez çağrıldı ve ne kadar sürdü bilgilerini içerir. Hızlı analiz yapılmak istenilen durumlar için uygundur.

IIS Express kullanarak kodumuzu nasıl analiz edeceğimizi inceleyelim. IIS Express menüsünden web projenisin olduğu Application Path ve Open Url bölümüne http://localhost/ bilgileri girilir. Ardından Run butonu ile analiz başlatılır. Aynı zamanda bu bölümnde herhangi bir uygulama türü için ortam değişkenlerini ayarlayabiliriz.

Analiz edilmek istenen bölüm çalıştırıldığında Get Snapshot and Wait butonu ile Performance viewer ekranında kod analizi görüntülenir.

Profile Çeşitleri

Sampling

En hızlı ve en çok kullanılan analiz yöntemidir. Method çağrım hiyerarşisi ile birlikte ne kadar sürdü bilgisini içerir. Uygulamanın performansı hakkında genel bilgi edinmemizi sağlar.

Tracing

Sampling yöntemi özelliklerine ek olarak method kaç kez çağırıldı bilgisini içerir. Sampling verilerinin yeterli olmadığı algoritma karışıklığı durumlarında kullanılabilir. Sampling yönetime oranla daha yavaştır ve method çağrım süresini tam olarak ölçemez.

Line by Line

En yavaş yöntemdir. Satır satır profil oluşturma, yalnızca hangi işlevin sorunlara neden olduğunu zaten bildiğinizde ve her satırını analiz etmek istediğinizde mantıklıdır.

Timeline

En ayrıntılı filtreleme ekranına sahip yöntemdir. Çok iş parçalıklı (multithread) uygulamalar ve ayrıntılı analiz için uygundur. Thread, Event, GC, IO, App Event gibi her yerden veri toplar, her bir satır ne kadara zaman almış bilgisi içerir.

Performance Viewer Görünüm Modları

Hot Spots

Bu görünüm sekmesinde çalıştırılması en çok zaman alan methodlar yer alır.

Threads Tree(All call stacks)

Uygulama tarafındaki tüm akışın görüntülenmesini sağlar. Kritik işlemlerin akışı kırmızı üçgenler ile gösterilir.

Call Tree

Tüm akışı daha ayrıntılı listeler.

Plain List

Tüm methodları liste halinde gösterir. Belirli bir methodun daha ayrıntılı analiz edilebilmesini sağlar. Time,ms method ve method içinde çağrılan diğer method için harcanan toplam zaman. Own Time,ms ilgili method içinde harcanan zaman alt methodların zamanlarını içermez. Own Total > 0 yakınsa alt method zaman harcamış demek, 100 yakınsa method kendi içinde zaman harcamış demek.

Profiling Api

Nuget paketi sayesinde kodun bir bölümünün profilini almamıza olanak sağlar. API, analiz kapsamını ve profilini yalnızca ilgilendiğiniz kodu daraltmanıza olanak tanır. Örneğin, bazen Anlık Görüntü Al düğmesini doğru anda tıklatmak o kadar kolay değildir . Profil oluşturma API’sı ile kodunuzun tam noktasında “anlık görüntü alma” çağrısı yapabilirsiniz.

Kaynaklar:
https://www.jetbrains.com

--

--