Aracılığıyla paylaş


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 bir yavaşlığı veya işlemin duraklamasını tanılayın. 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, bir müşteri yoğun sezonda bazı istek veya siparişlerin perakende web sitesine geçmediğini bildirdiğinde araç 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ı denetleyin 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. CPU Kullanımı aracını, klavye kısayolu Alt+F2 kullanarak ve ardından CPU Kullanımı seçeneğini seçerek ya da dotnet-trace veya dotnet-monitor gibi bir araçla önceden toplanmış bir izleme dosyasını açarak ç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. Sürümde CPU Kullanımı aracını çalıştırabilir veya derlemelerde hata ayıklayabilirsiniz. Daha fazla bilgi için bkz. Yayın veya hata ayıklama derlemelerinde 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 Release yapı 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: Kodiyileştirmeye yönelik başlangıç kılavuzu.

Genellikle, yerel makine yüklü uygulamanın çalışmasını en iyi şekilde taklit eder. 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

  1. 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ı (veya Yerel Makine) seçin.

    Yayını Seç ve Yerel Makineyi gösteren ekran görüntüsü.

    Yayın ve Yerel Makine'yi Seç'i gösteren ekran görüntüsü.

  2. Hata ayıklama >Performans Profilerseçin.

  3. Kullanılabilir araçlaraltında CPU Kullanımı'i seçin ve ardından Başlat'i seçin.

    Profil oluşturucuyu başlatmadan önce Koleksiyon duraklatılmış olarak başlat seçeneğini etkinleştirirseniz, tanılama oturumu ekranında Kaydet 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.

  4. Uygulama başlatıldıktan sonra tanılama oturumu başlar ve CPU kullanım verilerini görüntüler. Veri toplamayı bitirdiğinizde, Toplamayı Durduröğesini seçin.

    CPU Kullanımı veri toplamayı durdur seçeneğini gösteren ekran görüntüsü. CPU Kullanımı veri toplamayı durdur

    CPU Kullanımı veri toplamayı durdur seçeneğini gösteren ekran görüntüsü. CPU Kullanımı veri toplamayı durdur

    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, Profil oluşturma hatalarını giderme ve sorunları düzeltmebölümüne bakın.

    Screenshot that shows CPU Usage report.CPU Kullanımı raporunu gösteren ekran görüntüsü. CPU Kullanımı raporuCPU Usage report

    Screenshot that shows CPU Usage report.CPU Kullanımı raporunu gösteren ekran görüntüsü. CPU Kullanımı raporuCPU Usage report

    Görüntülenecek konuları seçmek veya seçimini kaldırmak için Filtre açılır listesini kullanın ve Arama kutusunu kullanarak belirli bir konu veya düğümü arayın.

CPU kullanımı veri sütunları

Ad Açıklama
Toplam CPU [birim, %] Toplam % veri denklemi

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, %] Kendi kendine % denklem

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. Buna ek olarak, Copilot kullanıyorsanız Copilot'a sor düğmesi Copilot sohbet penceresini açar ve Copilot kodunuz ve tanımlanan sorunlara göre ö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 İşlevler görünümünü açmak için en üstteki işlevlerden birine tıklayın.

Rapor, tanılama verilerinin farklı görünümlerini sağlar:

Görüntüle Açıklama
Arayan/Aranan Belirli bir işlev için CPU süresinin, bu işlevi çağıran işlevlerin ve bu işlevin çağırdığı işlevlerin ayrıntılı incelemesi. Performans verileri, veri toplama dönemi için toplanır. Çağrı yolunu takip etmek için çağıran işlevleri ve çağrılan işlevleri seçebilirsiniz.
Çağrı ağacı İşlev çağrı yolunun hiyerarşik görünümü. En çok CPU süresini alan çağrı yollarını (sık erişimli yol) tanımlamak için kullanılır.
Modül Tek tek modüllerde harcanan ve veri toplama süresi boyunca toplanan CPU zamanının görünümü. Yüksek çağrı sayısı ve/veya performans sorunlarının birleşiminden kaynaklanan performans sorunları olabilecek modülleri tanımlamak için kullanılır.
Işlev Tek tek işlevlerde harcanan ve veri toplama süresi boyunca toplanan CPU zamanının görünümü. Yüksek çağrı sayısı ve/veya performans sorunlarının birleşiminden kaynaklanan performans sorunları olabilecek işlevleri tanımlamak için kullanılır.
Alev grafiği Alev grafiği görselleştirmesinde işlev çağrı yolunun hiyerarşik görünümü. En çok CPU süresini alan çağrı yollarını (sık erişimli yol) tanımlamak için kullanılır.

Raporu analiz etmek için ayrıntılı rapor oluştur tıklayın.

Rapor, tanılama verilerinin farklı görünümlerini sağlar:

  • Arayan/Aranan
  • Çağrı ağacı

Arayan/aranan dışındaki tüm görünümlerde, tanılama raporu en yüksekten en düşüğe Toplam CPUgö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. Flame Graph ile sık erişimli yolları tanımlama.

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ğrılan görünümünde açılır. Geçerli Görünüm açılan listesinden Arama Ağacı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 tıklayabilir ve Sık Erişimli Yol Göster düğmelerini.

Çağrı ağacı yapısı

Çağrı ağacı yapısını gösteren ekran görüntüsü.

Çağrı ağacı yapısını gösteren ekran görüntüsü.

Resim Açıklama
Adım 1 UYGULAMAYı temsil eden CPU Kullanımı çağrı ağacındaki en üst düzey düğüm.
Adım 2 Ç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 yapı kodunu içerir, kullanıcı arabirimini çizer, iş parçacığı zamanlamasını denetler ve uygulamaya diğer düşük seviyeli hizmetler sağlar.
Adım 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.
Adım 4 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.

Dış kod

Kodunuz tarafından yürütülen sistem ve çerçeve işlevleri, dış kod olarak adlandırılır. 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ış Çağrı] düğümünde toplar.

Dış kodların çağrı yollarını görüntülemek için, ana rapor özet sayfasındaki (sağ bölme) Ayarlar açılır menüsünden Yalnızca Kodumu Göster seçeneğinin işaretini kaldırın ve ardından Uygulaseçeneğini seçin. (Ayarları açılan listesi, ana rapor özet sayfasında bulunur, ayrıntılı görünümlerde değil.)

ayarlar'ı gösteren ekran görüntüsü , ardından Yalnızca Kodumu Göster'i seçin.

Kodunuz tarafından yürütülen sistem ve çerçeve işlevleri, dış kod olarak adlandırılır. 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) Dış Kodu Göster seçeneğini Filtre açılan listesinden seçin ve ardından Uygula'yıseçin. CPU Kullanımı sayfasının Çağrı Ağacı görünümü dış kod çağrılarını genişletir. (Filtresi açılan menüsü, ana tanılama sayfasında bulunur, ayrıntılı görünümlerde değil.)

Dış Kodu Göster

Yalnızca Kodumu Göster 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.

Çağrı ağacında iç içe dış kodu gösteren ekran görüntüsü.

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.

Çağrı ağacında iç içe dış kodu gösteren ekran görüntüsü.

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.

İç içe geçmiş dış kodu arayın ekran görüntüsü.

İç içe geçmiş dış kodu arayın ekran görüntüsü.

CPU kullanım çağrı ağacındaki 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 değil. Bu kod, CPU Kullanımı çağrı ağacında, ağacın üst düğümünün hemen altındaki [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.

Zaman Uyumsuz düğümü gösteren ekran görüntüsü.

Neler olduğunu göstermek için oluşturulan yöntemleri genişletin:

Genişletilmiş zaman uyumsuz düğümü gösteren ekran görüntüsü.

Genişletilmiş zaman uyumsuz düğümü gösteren ekran görüntüsü.

  • 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, GetNumberAsync'e yönelik çağrının etrafında toplanmış 48 görevi zamanlamak ve başlatmak için gereken etkinliği gösterir.

  • MainPage::<GetNumberAsync>b__b, GetNumberçağıran 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.

  1. Performans Profili Oluşturucu'da CPU Kullanımı için Ayarlar simgesini seçin.

    CPU Kullanımı için ayarlar simgesini gösteren ekran görüntüsü. CPU Kullanımı için ayarlar simgesi.

  2. Çağrı sayılarını topla (yalnızca.NET) seçeneğini etkinleştirin.

    CPU Kullanımı ayarlarını gösteren ekran görüntüsü.

  3. CPU kullanım verilerini toplayın.

  4. İşlevler görünümünü açın ve Arama 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.

    Çağrı sayısı verilerini gösteren ekran görüntüsü. CPU Kullanımı için Ayarlar'ı