dotTrace Notlarım

Uygulama geliştirme dünyasında yer alan herkezin muhakkat yolunun geçeği sokaktır, uygulama performans analizi, performansı uygulama geliştirme yada uygulamayı daha performanslı hale getirme. Bu yolda ya yazdığınız kodların “best practice” araştırır uygularsınız yada performans analizi uygulamaları ile uygulamanızı(kodunuzu) analiz eder uzun süren yada fazla işlemci yükü oluşturan yerleri tespit edip düzenleme yaparsınız.

İşte bu senaryolarda kullanılan performans analizi uygulamalarından biri de ReSharper geliştiricisi JetBrains tarafından sunulan “dotTrace” uygulamasıdır.

Performans analizi uygulamaları temel olarak, yazdığınız uygulamanın memory, cpu, hangi kod satırı kaç kere işlendi, ne kadar sürdü vs gibi metrik bilgiler çıkararak size sunan yazılımlardır. Hatta bazı uygulamalar yazdığınız kodu analiz edip kodunuzun kısmi bölümlerine best practice kullanımlar önermektedir.

Aşağıdaki notlar dotTrace ayrıntılı anlatımı değildir. İnceleyip kullanırken temel yapıyı anlamak, ve üzerine programı kullanmayı anlamak için aldığım temel düzelde notlardır. Derinlemesine olmasa da programı açınca rahatlıkla kavrayabilmenizi sağlayacak notlardır.

dotTrace

.net 4.0 ve üstü yazılımları profile edebilmenizi sağlar.(Bence büyük eksik eski uygulamalarınızı analiz edemeyeceğiniz anlamına geliyor bu durum ve bu noktadan sonra başka uygulamalara yönenlemeniz gerekebilir. )

profile_application

Profile Application Types (Profile Edilebilecek Uygulama Çeşitleri)

  • Standalone > Console, WPF uygulamaları
  • WindowsStore > Windows 8, 8.1 uygulamaları
  • Silverlight
  • Webdev > WebAplication, IISExpress, Local Dev Server uygulamladı
  • WCF
  • IIS > Direk IIS üzerindenki uygulamanızı takip etmenizi sağlar  (bu işlem için admin yetkisi ile dotTrace çalıştırmanız gerekir)
  • IISExpresss
  • WindowsService.NetProcess > Herhangi .net process takip etmenizi sağlar

Profile Çeşitleri

profiling_modes

  • Sampling
    • Number of call raporda yer almıyor(method kaç kere çağrıldı)
    • Zaman bilgisi vardır.(Methodun çalışması ne kadar sürdü)
    • Thread sayıları vardır (native,sistem threadleri)
    • Method çağrım hiyerarşisi vardır
    • Sürekli kod takibi yapılmaz 5, 11 ms aralıklar ile data toplanır
    • En çok kullanılan analiz tipidir
  • Tracing
    • Sampling tüm özellikleri + call number bilgisi yer alır
    • 2. En çok kullanılan analiz tipidir
  • Line by Line
    • Tracing + satır, statement düzeyinde data toplar
    • Programın çalışma süresini oldukça uzatır (Ayrıntılı data toplandığı için)
    • Sadece ileri derece sorunlar için kullanılır
    • pdb gerektirir (Kod üzerinde analiz sonuçlarını gösterebilmek için)
    • Statement düzeyinde call count verir
  • Timeline
    • Ayrıntılı Analiz ve multithread uygulamalar için uygundur
    • Datayı; Thread, Event, GC, IO, App Event gibi heryerden toplar, her bir satır ne kadara zaman almış bilgisi içerir.
    • En ayrıntılı inceleme filtreleme ekranı vardır.

timeline_viewer

Profile Tipine göre program çalışma sürelerine etkiler azdan çoğa doğru

  1. Sampling
  2. Timeline
  3. Tracing
  4. Line by Line (çok fazla etkisi var)

Snapshots inceleme Ekranı

screen-shot-2016-09-11-at-15-53-25

Threads Tree(All call stacks)
Uygulama tarafından oluşturulan tüm threadlerin, tüm akışın görülmesini sağlar.
Main Thread kırmızı bayrak ile gösterilir
Çöp kutusu ile finalizer thread anlamına gelir
DotTrace kritik işlemlerin akışını kırmızı üçgenler ile gösterir
Sistem kodları silinik gözükür, onlarda düzenleme yapılamaz

Call Tree
Tüm akışı daha ayrıntılı listeler,fonk akışı ile

Plain List
Tüm fonk liste halinde verir
-Time,ms > Fonk ve fonk içinde çağrılan diğer fonk için harcanan toplam zaman
-Own Time,ms > sadce ilgili fonk içinde harcanan zaman alt fonk(lar) zamanlarını içermez
-Own Total > 0 yakınsa sub fonk zaman harcamış demek, 100 yakınsa kendi içinde zaman harcamış demek

Hot spots
Çalıştırılması en çok zaman alan fonk listeler, dikkat edilmeli ki en uzun zaman alan kod bottleneck değildir kodun kendi davranışı olabilir

Back Traces
Fonk giden yolu tersten görmeye yarar, fonk dan > main thread doğru

DotTraceNode

screen-shot-2016-09-11-at-15-56-08

Snapshots içindeki her bir satıra denir. En baştan sona doğru
-Thread içinde o node için geçen zamanın yüzde karşılığı
-Çağrılan fonk kısa ismi
-Fonk ve altındaki fonk toplam çağrım süresi
-Fonk kaç kere çağrıldığı

Remote Profiling

Sunucuda yer alan uygulamayı uzaktan profile etmemizi sağlar.
Remote Profiling agent sunucua run ediliyor. Çalışan uygulama size bağlanılacak bir adres verir. Bu adresi “Remote” ekranında adres kısmına yazarak herhangi profile tipi ile uygulamanızı analiz edebilirsiniz. Fakat analiz uzakta ve gerçek sunucuda gerçekleşeceği için genellikle sistemi çok yormayacak profile tipleri tercih edilir. Ayrıca datanın uzaktan geçeceği de düşünülmelidir. Snapshot inceleme için aktarılması zaman alacaktır.

Kaynaklar

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someonePrint this page

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir