Performans Profili Oluşturucu'da CPU profili oluşturmayı kullanarak performansı analiz etme (C#, Visual Basic, C++, F#)
Uygulamanızdaki performans sorunlarını araştırmaya başlamanın iyi bir yolu, CPU profil oluşturucu kullanarak CPU kullanımını anlamaktır. Visual Studio'nun CPU Kullanımı performans aracı, C++, C#/Visual Basic'te kod yürütülürken harcanan CPU etkin hesaplama süresini ve harcanan yüzdeyi gösterir.
CPU Kullanımı aracı size yardımcı olabilir:
Ekibinizin kod tabanında yavaş bir yavaşlık veya işlemin yanıt vermiyor olduğunu tanılama. Araç, ekibinizin üretim koduyla ilgili sorunu tanılamanıza yardımcı olabilir. Performans sorunlarını analiz edip tanılayabilmek için otomatik içgörüler ve verilerinizin çeşitli görünümlerini sağlar.
DevOps senaryolarındaki performans sorunlarını belirleme Örneğin, araç bir müşterinin yoğun sezonda bazı isteklerin veya siparişlerin perakende web sitesine geçmediğini bildirmesine yardımcı olabilir. Sorunlar genellikle üretim aşamasındadır ve o anda hata ayıklamak zordur, ancak bu araç sorunla ilgili yeterli bilgi ve kanıt yakalamanıza yardımcı olabilir. Bir izleme dosyası topladıktan sonra analiz, olası nedenleri anlamanıza ve kodunuzun bağlamında önerilerde bulunarak sorunu çözmek için sonraki adımları izlemenize yardımcı olabilir.
Yüksek CPU kullanımını denetleme Gecikme sorununuz bir API isteği içinde değilse, CPU Kullanımı aracıyla ilgili yüksek CPU kullanımı ve diğer ilgili sorunları de kontrol edebilirsiniz. CPU Kullanımı aracı, performans sorunlarını belirlemenize yardımcı olabilir, böylece iyileştireceğiniz yeri daraltabilirsiniz.
CPU Kullanımı aracı hem yerel izleme oturumları hem de üretim için yararlıdır. ALT+F2 klavye kısayolunu ve ardından CPU Kullanımı'nı seçerek veya dotnet-trace veya dotnet-monitor gibi bir araç kullanarak zaten toplanmış bir izleme açarak CPU Kullanımı aracını çalıştırabilirsiniz. (.NET üretim kodu için büyük olasılıkla izlemeleri bu şekilde toplayabilirsiniz.)
CPU Kullanımı aracını açık bir Visual Studio projesinde, yüklü bir Microsoft Store uygulamasında veya çalışan bir uygulama veya işleme iliştirilmiş olarak çalıştırabilirsiniz. CPU Kullanımı aracını hata ayıklama ile veya hata ayıklama olmadan çalıştırabilirsiniz. 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.
Aşağıdaki yönergelerde, Visual Studio Performans Profil Oluşturucu'yu kullanarak hata ayıklayıcı olmadan CPU Kullanımı aracının nasıl kullanılacağı gösterilmektedir. Örneklerde yerel makinede Yayın derlemesi kullanılır. Sürüm derlemeleri gerçek uygulama performansının en iyi görünümünü sağlar. CPU Kullanımı aracını kullanarak performansı geliştirmeyi gösteren bir öğretici için bkz . Örnek olay incelemesi: Kodu iyileştirmeye yönelik başlangıç kılavuzu.
Genellikle, yerel makine yüklü uygulama yürütmeyi en iyi şekilde çoğaltır. Uzak bir cihazdan veri toplamak için uygulamayı Uzak Masaüstü Bağlantısı üzerinden değil doğrudan cihazda çalıştırın.
CPU kullanım verilerini toplama
Visual Studio projesinde çözüm yapılandırmasını Yayın olarak ayarlayın ve dağıtım hedefi olarak Yerel Windows Hata Ayıklayıcısı'nı (veya Yerel Makine) seçin.
Performans Profili Oluşturucu hatalarını ayıkla'ya> tıklayın.
Kullanılabilir araçlar'ın altında CPU Kullanımı'nı ve ardından Başlat'ı seçin.
Profil oluşturucuyu başlatmadan önce Koleksiyonla başlat duraklatıldı seçeneğini etkinleştirirseniz, tanılama oturumu görünümünde Kayıt düğmesini seçene kadar veriler toplanmaz.
Not
Aracı daha verimli hale getirme hakkında daha fazla bilgi için bkz . Profil Oluşturucu ayarlarını iyileştirme.
Uygulama başlatıldıktan sonra tanılama oturumu başlar ve CPU kullanım verilerini görüntüler. Veri toplamayı bitirdiğinizde Koleksiyonu Durdur'u seçin.
CPU Kullanımı aracı verileri analiz eder ve raporu görüntüler. Veri toplama veya görüntüleme konusunda sorun yaşıyorsanız bkz . Profil oluşturma hatalarını giderme ve sorunları giderme.
Görüntülenecek iş parçacıklarını seçmek veya seçimini kaldırmak için Filtre açılan listesini kullanın ve belirli bir iş parçacığını veya düğümü aramak için Arama kutusunu kullanın.
CPU kullanımı veri sütunları
Veri Akışı Adı | Açıklama |
---|---|
Toplam CPU [birim, %] | Cpu hesaplama süresinin milisaniyesi ve işlev çağrıları tarafından kullanılan CPU yüzdesi ve seçilen zaman aralığında işlev tarafından çağrılan işlevler. Bu, bir zaman aralığındaki toplam CPU etkinliğini kullanılabilir toplam CPU ile karşılaştıran CPU Kullanımı zaman çizelgesi grafiğinden farklıdır. |
Self CPU [birim, %] | CPU hesaplama süresinin milisaniyesi ve işlev tarafından çağrılan işlevler hariç olmak üzere seçilen zaman aralığında işleve yapılan çağrılar tarafından kullanılan CPU yüzdesi. |
Modül | Bazı görünümlerde, işlevi içeren modülün adını gösteren Modül sütunu gösterilir. |
CPU içgörülerini analiz etme
En İyi İçgörüler bölümünde herhangi bir içgörü görünürse, belirtilen sorun hakkında daha fazla bilgi edinmek için sağlanan bağlantıyı kullanın. Ayrıca, Copilot kullanıyorsanız Copilot'a Sor düğmesi Copilot sohbet penceresini açar ve Copilot kodunuz ve tanımlanan sorunlar temelinde öneriler sağlar.
Daha fazla bilgi için bkz . CPU içgörüleri.
CPU kullanımını analiz etme
CPU Kullanımı raporunu analiz etmek için Ayrıntıları aç'a tıklayın veya üst işlevlerden birine tıklayarak İşlevler görünümünü açın.
Rapor, tanılama verilerinin farklı görünümlerini sağlar:
- Arayan/arayan
- Çağrı ağacı
- Modül
- İşlevler
- Alev grafiği
Raporu analiz etmek için Ayrıntılı rapor oluştur'a tıklayın.
Rapor, tanılama verilerinin farklı görünümlerini sağlar:
- Arayan/arayan
- Çağrı ağacı
Arayan/aranan dışındaki tüm görünümlerde, tanılama raporu En yüksekten en düşüğe kadar Toplam CPU'ya göre sıralanır. Sütun başlıklarını seçerek sıralama düzenini veya sıralama sütununu değiştirin. İlgilendiğiniz bir işleve çift tıklayabilirsiniz ve işlevin kaynağını ve bu işlevde zamanın nereye harcandığını gösteren vurguyu görürsünüz. Tabloda işlevler (Toplam CPU) olarak adlandırılanlar dahil olmak üzere işlevde harcanan süre gibi verileri içeren sütunlar ve işlevler (Self CPU) hariç bir işlevde harcanan zamanı gösteren ikinci bir sütun gösterilir.
Bu veriler, işlevin kendisinin performans sorunu olup olmadığını değerlendirmenize yardımcı olabilir. Uç noktalarınızın yavaş olmasının veya kaynak tüketiminin ağır olmasının nedeninin üçüncü taraf kod veya çalışma zamanı kitaplıkları olup olmadığını görmek için yöntemin ne kadar veri görüntülediğini belirleyin.
Alev grafiğini kullanma hakkında daha fazla bilgi için bkz . Alev Grafı ile sık erişimli yolları belirleme.
CPU Kullanımı çağrı ağacı
Çağrı ağacını görüntülemek için rapordaki üst düğümü seçin. Varsayılan olarak, CPU Kullanımı sayfası Çağıran/Çağıran görünümüne açılır. Geçerli Görünüm açılan listesinde Çağrı Ağacı'nı seçin.
Arama 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 ve Sık Erişimli Yolu Göster düğmelerine tıklayabilirsiniz.
Çağrı ağacı yapısı
Görsel | Açıklama |
---|---|
UYGULAMAYı temsil eden CPU Kullanımı çağrı ağacındaki en üst düzey düğüm. | |
Çoğu uygulamada Dış Kodu Göster seçeneği devre dışı bırakıldığında ikinci düzey düğüm bir [Dış Kod] düğümüdür. Düğüm, uygulamayı başlatan ve durduran sistem ve çerçeve kodunu içerir, kullanıcı arabirimini çizer, iş parçacığı zamanlamasını denetler ve uygulamaya diğer düşük düzeyli hizmetler sağlar. | |
İ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. | |
Bir yöntemin alt düğümleri yalnızca üst yöntemin çağrıları için verilere sahiptir. Dış Kodu Göster devre dışı bırakıldığında, uygulama yöntemleri bir [Dış Kod] düğümü de içerebilir. |
Harici kod
Kodunuz tarafından yürütülen sistem ve çerçeve işlevlerine dış kod adı verilir. Dış kod işlevleri uygulamayı başlatır ve durdurur, kullanıcı arabirimini çizer, iş parçacığını denetler ve uygulamaya diğer alt düzey hizmetleri sağlar. Çoğu durumda dış kodla ilgilenmezsiniz, bu nedenle CPU Kullanımı çağrı ağacı bir kullanıcı yönteminin dış işlevlerini tek bir [Dış Çağrı] düğümünde toplar.
Dış kodun arama yollarını görüntülemek için, ana rapor özet sayfasında (sağ bölme) Ayarlar açılan menüsünden Yalnızca Kodumu Göster'in seçimini kaldırın ve uygula'yı seçin. (Ayarlar açılan menüsü, ayrıntılı görünümlerde değil ana rapor özeti sayfasında bulunur.)
Kodunuz tarafından yürütülen sistem ve çerçeve işlevlerine dış kod adı verilir. Dış kod işlevleri uygulamayı başlatır ve durdurur, kullanıcı arabirimini çizer, iş parçacığını denetler ve uygulamaya diğer alt düzey hizmetleri sağlar. Çoğu durumda dış kodla ilgilenmezsiniz, bu nedenle CPU Kullanımı çağrı ağacı bir kullanıcı yönteminin dış işlevlerini bir [Dış Kod] düğümünde toplar.
Dış kodun çağrı yollarını görüntülemek için, ana tanılama raporu sayfasında (sağ bölme) Filtre açılan listesinden Dış Kodu Göster'i ve ardından Uygula'yı seçin. ARDıNDAN CPU Kullanımı sayfasının Çağrı Ağacı görünümü dış kod çağrılarını genişletir. (Filtre açılan listesi, ayrıntılı görünümlerde değil ana tanılama sayfasında kullanılabilir.)
Yalnızca Kodumu Göster'i devre dışı bırakdığınızda, CPU Kullanımı sayfasının Çağrı Ağacı görünümü dış kod çağrılarını genişletir.
Birçok dış kod çağrı zinciri iç içe yerleştirilmiş olduğundan, zincirin genişliği İşlev Adı sütununun görüntüleme genişliğini aşabilir. ardından işlev adları aşağıdaki görüntüde gösterildiği gibi görünür.
Birçok dış kod çağrı zinciri iç içe yerleştirilmiş olduğundan, zincirin genişliği İşlev Adı sütununun görüntüleme genişliğini aşabilir. İşlev adları daha sonra .... olarak görünür.
Aradığınız işlev adını bulmak için arama kutusunu kullanın. Seçili satırın üzerine gelin veya verileri görüntülemek için yatay kaydırma çubuğunu kullanın.
CPU kullanım çağrısı ağacında zaman uyumsuz işlevler
Derleyici zaman uyumsuz bir yöntemle karşılaştığında, yöntemin yürütülmesini denetlemek için gizli bir sınıf oluşturur. Kavramsal olarak, sınıf bir durum makinesidir. sınıfı, özgün yöntemleri zaman uyumsuz olarak çağıran derleyici tarafından oluşturulan işlevlere ve bunları çalıştırmak için gereken geri çağırmalara, zamanlayıcılara ve yineleyicilere sahiptir. Bir üst yöntem özgün yöntemi çağırdığında, derleyici yöntemini üst öğesinin yürütme bağlamından kaldırır ve gizli sınıf yöntemlerini uygulama yürütmeyi denetleen sistem ve çerçeve kodu bağlamında çalıştırır. Zaman uyumsuz yöntemler genellikle bir veya daha fazla farklı iş parçacığında yürütülür ancak her zaman yürütülür. Bu kod, CPU Kullanımı çağrı ağacında ağacın üst düğümünün hemen altında [Dış Kod] düğümünün alt öğeleri olarak görünür.
Aşağıdaki örnekte, [Dış Kod] altındaki ilk iki düğüm, durum makine sınıfının derleyici tarafından oluşturulan yöntemleridir. Üçüncü düğüm, özgün yöntemine yapılan çağrıdır.
Neler olduğunu göstermek için oluşturulan yöntemleri genişletin:
MainPage::GetMaxNumberAsyncButton_Click
yalnızca görev değerlerinin listesini yönetir, sonuçların üst sınırını hesaplar ve çıkışı görüntüler.MainPage+<GetMaxNumberAsyncButton_Click>d__3::MoveNext
çağrısına sarmalayan 48 görevi zamanlamak ve başlatmak içinGetNumberAsync
gereken etkinliği gösterir.MainPage::<GetNumberAsync>b__b
çağıranGetNumber
görevlerin etkinliğini gösterir.
Arama sayılarını toplama (.NET)
çağrı sayılarını İşlevler görünümünde görüntülemek istiyorsanız, profil oluşturucuyu başlatmadan önce ayarı etkinleştirebilirsiniz. Bu ayar .NET proje türleri için desteklenir ve işlemin profil oluşturucu altında başlatılmasını gerektirir. Ekleme senaryosu desteklenmez.
Performans Profili Oluşturucu'da CPU Kullanımı için Ayarlar simgesini seçin.
Arama sayılarını topla (yalnızca.NET) seçeneğini etkinleştirin.
CPU kullanım verilerini toplayın.
İşlevler görünümünü açın ve Çağrı sayısı sütununun görünür olarak ayarlandığından emin olun.
Sütunu görmüyorsanız, görünür sütunları seçmek için bir sütun başlığına sağ tıklayın.