CPU kullanımını analiz ederek uygulama performansını ölçme (C#, Visual Basic, C++, F#)

Hata ayıklayıcıyla tümleşik CPU Kullanımı tanılama aracıyla hata ayıklarken performans sorunlarını bulun. Ayrıca, hata ayıklayıcı eklemeden veya çalışan bir uygulamayı hedefleyerek CPU kullanımını analiz edebilirsiniz. Daha fazla bilgi için bkz . Hata ayıklayıcı ile veya hata ayıklayıcı olmadan profil oluşturma araçlarını çalıştırma.

Hata ayıklayıcı duraklatıldığında, Tanılama Araçları penceresindeki CPU Kullanımı aracı, uygulamanızda yürütülen işlevler hakkında bilgi toplar. Araç, çalışma gerçekleştiren işlevleri listeler ve örnekleme oturumunun belirli segmentlerine odaklanmak için kullanabileceğiniz bir zaman çizelgesi grafiği sağlar.

Önemli

Hata ayıklayıcıyla tümleşik Tanılama Araçları, ASP.NET, ASP.NET Core gibi Visual Studio'da .NET geliştirme ve yerel/C++ geliştirme için desteklenir. İlgili Visual Studio iş yükü gereklidir. Hata ayıklayıcı ile profil oluşturma araçlarını çalıştırmak için Windows 8 ve üzeri gereklidir (Tanılama Araçları penceresi).

Bu öğreticide şunları yapacaksınız:

  • CPU kullanım verilerini toplama
  • CPU kullanım verilerini analiz etme

CPU Kullanımı size ihtiyacınız olan verileri vermezse, Performans Profili Oluşturucu'daki diğer profil oluşturma araçları size yardımcı olabilecek farklı türde bilgiler sağlar. Çoğu durumda, uygulamanızın performans sorunu bellek, işleme kullanıcı arabirimi veya ağ isteği süresi gibi CPU'nuzdan başka bir şeyden kaynaklanıyor olabilir.

1. Adım: CPU kullanım verilerini toplama

  1. Visual Studio'da hata ayıklamak istediğiniz projeyi açın ve uygulamanızda CPU kullanımını incelemek istediğiniz noktada bir kesme noktası ayarlayın.

  2. analiz etmek istediğiniz işlevin veya kod bölgesinin sonunda ikinci bir kesme noktası ayarlayın.

    İki kesme noktası ayarlayarak, veri toplamayı analiz etmek istediğiniz kod bölümleriyle sınırlayabilirsiniz.

  3. Tanılama Araçları penceresi, siz kapatmadığınız sürece otomatik olarak görüntülenir. Pencereyi yeniden açmak için Windows>Tanılama Araçlarını Göster hatalarını ayıkla'ya>tıklayın.

  4. Araç çubuğundaki Araçları Seç ayarıyla CPU Kullanımı, Bellek Kullanımı veya her ikisini birden görmeyi seçebilirsiniz. Visual Studio Enterprise çalıştırıyorsanız, Araçlar>Seçenekleri>IntelliTrace'te IntelliTrace'i de etkinleştirebilir veya devre dışı bırakabilirsiniz.

    Screenshot that shows Diagnostics Tools.

    Screenshot that shows Diagnostics Tools.

    Esas olarak CPU kullanımına bakacağız, bu nedenle CPU Kullanımı'nın etkinleştirildiğinden (varsayılan olarak etkindir) emin olun.

  5. Hata Ayıklamayı>Başlat Hata Ayıklama'ya (veya araç çubuğunda başlat'a veya F5'e) tıklayın.

    Uygulamanın yüklenmesi tamamlandığında Tanılama Araçları'nın Özet görünümü görüntülenir. Pencereyi açmanız gerekiyorsa Windows>Tanılama Araçlarını Göster hatalarını ayıkla'ya>tıklayın.

    Screenshot that shows Diagnostics Tools Summary Tab.

    Screenshot that shows Diagnostics Tools Summary Tab.

    Olaylar hakkında daha fazla bilgi için bkz . Tanılama Araçları penceresinin Olaylar sekmesinde arama ve filtreleme.

  6. İlk kesme noktanıza isabet edilmesine neden olacak senaryoyu çalıştırın.

  7. Hata ayıklayıcı duraklatılırken CPU Kullanımı verilerinin toplanmasını etkinleştirin ve ardından CPU Kullanımı sekmesini açın.

    Screenshot that shows Diagnostics Tools enable CPU profiling.

    Screenshot that shows Diagnostics Tools enable CPU profiling.

    CPU Profilini Kaydet'i seçtiğinizde Visual Studio işlevlerinizi ve bunların yürütülmesinin ne kadar zaman alacağını kaydetmeye başlar. Toplanan bu verileri yalnızca uygulamanız kesme noktasında durdurulduğunda görüntüleyebilirsiniz.

  8. Uygulamayı ikinci kesme noktanıza çalıştırmak için F5 tuşuna basın.

    Şimdi, uygulamanız için özellikle iki kesme noktası arasında çalışan kod bölgesine yönelik performans verileriniz var.

    Profil oluşturucu iş parçacığı verilerini hazırlamaya başlar. Bitmesini bekleyin.

    Screenshot that shows Diagnostics Tools preparing threads.

    Screenshot that shows Diagnostics Tools preparing threads.

    CPU Kullanımı aracı, raporu CPU Kullanımı sekmesinde görüntüler.

    Screenshot that shows Diagnostics Tools CPU Usage Tab.

    Screenshot that shows Diagnostics Tools CPU Usage Tab.

  9. Analiz edilecek daha belirli bir kod bölgesi seçmek istiyorsanız CPU zaman çizelgesinde bir bölge seçin (profil oluşturma verilerini gösteren bir bölge olmalıdır).

    Screenshot that shows Diagnostics Tools selecting a time segment.

    Screenshot that shows Diagnostics Tools selecting a time segment.

    Bu noktada verileri analiz etmeye başlayabilirsiniz. Veri toplama veya görüntüleme konusunda sorun yaşıyorsanız bkz . Profil oluşturma hatalarını giderme ve sorunları giderme.

    İpucu

    Performans sorunlarını belirlemeye çalışırken birden çok ölçüm yapın. Performans doğal olarak çalıştır-çalıştır arasında değişir ve kod yolları genellikle DLL'leri yükleme, JIT derleme yöntemleri ve önbellekleri başlatma gibi tek seferlik başlatma çalışmalarından dolayı ilk kez çalıştırıldığında daha yavaş yürütülür. Birden çok ölçüm alarak, gösterilen ölçümün aralığı ve ortanca değeri hakkında daha iyi bir fikir edinmiş olursunuz. Bu sayede ilk kez yapılan ölçümlerle bir kod alanının kararlı durum performansını karşılaştırabilirsiniz.

2. Adım: CPU kullanım verilerini analiz etme

CPU Kullanımı altındaki işlevlerin listesini inceleyerek, en çok iş yapan işlevleri belirleyerek ve ardından her birine daha yakından bakarak verilerinizi analize başlamanızı öneririz.

  1. İşlev listesinde, en çok iş yapan işlevleri inceleyin.

    Screenshot that shows Diagnostics Tools CPU Usage Function List.

    Screenshot that shows Diagnostics Tools CPU Usage Function List.

    İpucu

    İşlevler, en çok iş yapanlardan başlayarak sırasıyla listelenir (çağrı sırasına göre değildir). Bu, en uzun süre çalışan işlevleri hızla belirlemenize yardımcı olur.

  2. İşlev listesinde, çok fazla iş yapan uygulama işlevlerinizden birine çift tıklayın.

    Bir işleve çift tıkladığınızda, sol bölmede İşlevler görünümü açılır. Açılan menüden Arayan/Arayan görünümü'nü seçin.

    Screenshot that shows Diagnostics Tools Caller Callee View.

    Bu görünümde, seçili işlev başlıkta ve Geçerli İşlev kutusunda gösterilir (Bu örnekte DoWork). Geçerli işlevi çağıran işlev, sol tarafta İşlevleri Çağırma altında, geçerli işlev tarafından çağrılan işlevler ise sağ taraftaki Çağrılan İşlevler kutusunda gösterilir. (Geçerli işlevi değiştirmek için iki kutuyu da seçebilirsiniz.)

    Bu görünümde toplam süre (ms) ve işlevin tamamlanması için geçen genel uygulama çalışma süresinin yüzdesi gösterilir. İşlev Gövdesi ayrıca işlev gövdesinde harcanan toplam süreyi (ve zaman yüzdesini) işlev çağırmada harcanan ve çağrılan işlevler dışında gösterir.

    Bir işleve çift tıkladığınızda, arayan/çağıran görünümü sol bölmede açılır.

    Screenshot that shows Diagnostics Tools Caller Callee View.

    Bu görünümde, seçili işlev başlıkta ve Geçerli İşlev kutusunda (Bu örnekte GetNumber) gösterilir. Geçerli işlevi çağıran işlev, sol tarafta İşlevleri Çağırma altında, geçerli işlev tarafından çağrılan işlevler ise sağ taraftaki Çağrılan İşlevler kutusunda gösterilir. (Geçerli işlevi değiştirmek için iki kutuyu da seçebilirsiniz.)

    Bu görünümde toplam süre (ms) ve işlevin tamamlanması için geçen genel uygulama çalışma süresinin yüzdesi gösterilir. İşlev Gövdesi ayrıca işlev gövdesinde harcanan toplam süreyi (ve zaman yüzdesini) işlev çağırmada harcanan ve çağrılan işlevler dışında gösterir. (Bu örnekte, 2389 ms'den 2367'si işlev gövdesinde, kalan 22 ms ise bu işlev tarafından çağrılan dış kodda harcandı).

    İpucu

    İşlev Gövdesi'ndeki yüksek değerler, işlevin kendi içinde bir performans sorunu olduğunu gösterebilir.

  3. İşlevlerin çağrılma sırasını gösteren daha üst düzey bir görünüm görmek için bölmenin üst kısmındaki açılan listeden Ağaç Çağır'ı seçin.

    Şekildeki her numaralandırılmış alan, yordamdaki bir adımla ilgilidir.

    Diagnostics Tools Call Tree

    Görsel Açıklama
    Step 1 CPU Kullanımı çağrı ağaçlarındaki en üst düzey düğüm sahte düğümdür
    Step 2 Çoğu uygulamada, Dış Kodu Göster seçeneği devre dışı bırakıldığında ikinci düzey düğüm, uygulamayı başlatan ve durduran, kullanıcı arabirimini çizen, iş parçacığı zamanlamasını denetleen ve uygulamaya diğer düşük düzeyli hizmetleri sağlayan sistem ve çerçeve kodunu içeren bir [Dış Kod] düğümüdür.
    Step 3 İkinci düzey düğümün alt öğeleri, ikinci düzey sistem ve çerçeve kodu tarafından çağrılan veya oluşturulan kullanıcı kodu yöntemleri ve zaman uyumsuz yordamlardır.
    Step 4 Bir yöntemin alt düğümleri yalnızca üst yöntemin çağrıları için veri içerir. Dış Kodu Göster devre dışı bırakıldığında, uygulama yöntemleri bir [Dış Kod] düğümü de içerebilir.

    Sütun değerleri hakkında daha fazla bilgi aşağıdadır:

    • Toplam CPU işlevi ve işlevi tarafından çağrılan işlevler tarafından ne kadar çalışma yapıldığını gösterir. Toplam CPU değerlerinin yüksek olması, genel olarak en pahalı işlevlere işaret eder.

    • Kendi KENDINE CPU işlevin gövdesindeki kod tarafından ne kadar çalışma yapıldığını belirtir ve bu işlem tarafından çağrılan işlevler tarafından gerçekleştirilir. Yüksek Kendi Kendine CPU değerleri, işlevin kendi içinde bir performans sorunu olduğunu gösterebilir.

    • Modüller İşlevi içeren modülün adı veya [Dış Kod] düğümündeki işlevleri içeren modüllerin sayısı.

    Çağrı ağacı görünümünde CPU'nun en yüksek yüzdesini kullanan işlev çağrılarını görmek için Sık Erişimli Yolu Genişlet'e tıklayın.

    Screenshot that shows Diagnostics Tools Hot Path.

    Not

    Çağrı ağacında "bozuk" kod veya "izlenemez yığın" olarak işaretlenmiş bir kod görürseniz bu, Windows için Olay İzleme (ETW) olaylarının büyük olasılıkla bırakıldığını gösterir. Sorunu çözmek için aynı izlemeyi ikinci kez toplamayı deneyin.

Dış kodu görüntüleme

Dış kod, yazdığınız kod tarafından yürütülen sistem ve çerçeve bileşenlerindeki işlevlerdir. Dış kod, uygulamayı başlatıp durduran, kullanıcı arabirimini çizen, iş parçacığını denetleten ve uygulamaya diğer düşük düzeyli hizmetler sağlayan işlevleri içerir. Çoğu durumda, dış kodla ilgilenmezsiniz ve bu nedenle CPU Kullanımı aracı bir kullanıcı yönteminin dış işlevlerini tek bir [Dış Kod] düğümünde toplar.

Dış kodun arama yollarını görüntülemek istiyorsanız, Filtre görünümü listesinden Dış Kodu Göster'i ve ardından Uygula'yı seçin.

Screenshot that shows Choose Filter View, then Show External Code.

İşlev Adı sütununun genişliğinin en büyük bilgisayar monitörleri dışındaki tüm ekran genişliğini aşabilmesi için birçok dış kod çağrı zincirinin iç içe geçmiş olduğunu unutmayın. Bu durumda işlev adları [...] olarak gösterilir.

Aradığınız düğümü bulmak için arama kutusunu kullanın, ardından yatay kaydırma çubuğunu kullanarak verileri görünüme getirin.

İpucu

Windows işlevlerini çağıran dış kodun profilini oluşturursanız, en güncel öğesine sahip olduğunuzdan emin olmanız gerekir.pdb dosyaları. Bu dosyalar olmadan rapor görünümleriniz, şifreli ve anlaşılması zor Windows işlev adlarını listeler. İhtiyacınız olan dosyalara sahip olduğunuzdan emin olun hakkında daha fazla bilgi için bkz . Hata ayıklayıcıda simge (.pdb) ve kaynak dosyaları belirtme.

Sonraki adımlar

Bu öğreticide CPU kullanım verilerini toplamayı ve çözümlemeyi öğrendiniz. Profil oluşturucunun turunu zaten tamamladıysanız, profil oluşturma araçlarını kullanarak kodu iyileştirmeye yönelik genel bir yaklaşım hakkında bilgi edinmek isteyebilirsiniz.

Bu öğreticide, hata ayıklama sırasında CPU kullanım verilerini toplamayı ve çözümlemeyi öğrendiniz. Performans Profili Oluşturucu kullanarak sürüm derlemelerinin profilini oluşturma hakkında daha fazla bilgi edinmek isteyebilirsiniz.