Uygulamanızın performansını anlamak ve darboğazları bulmak için CPU ve GPU kare işleme sürelerini (kare oluşturma süreleri) tahmin etmek çok önemlidir. AGI ile bir uygulamanın profilini oluşturduğunuzda System Profiler, kare sürelerini tahmin etmek için kullanabileceğiniz izleme verileri sağlar.
CPU süreleri
AGI'da, sistem profilinin CPU izinde toplam ve etkin CPU kare sürelerini görüntüleyebilirsiniz.
Toplam CPU süresi
Harcanan toplam CPU süresini ölçmek için,
ardışık çerçeve gönderme etkinlikleri arasındaki süreyi içeren zaman aralığını seçin. Kare gönderme etkinlikleri eglSwapBuffers (OpenGL için) ve vkQueuePresentKHR (Vulkan için) şeklindedir.
eglSwapBuffer etkinliği arasındaki süre.
vkQueuePresentKHR etkinliği arasındaki süre.Bu ölçüm,toplam CPU süresinin bir tahminidir ancak etkin CPU süresini mutlaka temsil etmez. Örneğin, GPU'ya bağlı uygulamalarda CPU, yeni bir kare göndermeden önce GPU'nun işini tamamlamasını bekleyebilir. Bu durum genellikle bir dequeueBuffer, eglSwapBuffer (OpenGL için) veya vkQueuePresent (Vulkan için) etkinliği CPU süresinin büyük bir bölümünü kullandığında ortaya çıkar.
Bekleme süresi, toplam CPU süresine dahil edilir ancak etkin CPU süresine dahil edilmez.
dequeueBuffer ve eglSwapBuffer etkinlikleri sırasında büyük miktarda CPU boşta kalma durumu.
Etkin CPU süresi
Etkin CPU süresi, CPU'nun boşta kalma durumunda olmadan uygulama kodunu ne zaman çalıştırdığını belirler.
Etkin CPU süresini ölçmek için CPU etkinliklerinin hemen üzerindeki Çalışıyor dilimlerini görüntüleyin. İki çerçeve gönderme etkinliği arasındaki ve Çalışıyor durumunda olan izlemenin tüm bölümlerini sayın. Çalışan iş parçacıklarını eklediğinizden emin olun.
Etkin CPU süresini ölçmenin bir diğer yolu, uygulama dilimlerini CPU parçalarında görüntülemektir. Bu dilimler, CPU'nun ne zaman çalıştığını gösterir ve Çalışıyor dilimleriyle eşleşir.
Uygulama dilimlerini belirlemeye yardımcı olması için uygulamanıza ATrace işaretçileri ekleyebilirsiniz. Bu işlem, işaretçileri Sistem Profiler'ın CPU izinde gösterir.
GPU kare sürelerini tahmin etme
GPU kare sürelerini tahmin etmek için Sistem Profiler'da GPU dilimlerini veya GPU sayaçlarını kullanabilirsiniz. GPU dilimleri kullanıldığında tahmin daha doğru olur.
GPU dilimleri
Sistem Profiler'da GPU dilimi bilgileri varsa uygulamanızın tek bir kareyle ilişkili görevler üzerinde çalışırken harcadığı toplam süreyi ölçerek çok doğru GPU kare süresi bilgileri edinebilirsiniz.
Mali cihazlar
Mali cihazlarda GPU dilimlerinde parça, parça olmayan ve bazen ek parça olmayan parçalar bulunur. Daha az karmaşık karelerde, parça ve parça olmayan işler sıralı olduğundan bir karenin işini diğerinden ayırt etmek için etkin GPU işleri arasındaki boşluklara bakılabilir.
Alternatif olarak, GPU'ya gönderilen çalışmaya aşina iseniz gönderilen oluşturma geçişlerinin kalıbını belirlemek, bir karenin ne zaman başlayıp ne zaman bittiği hakkında bilgi sağlar.
GPU iş akışı daha fazla paralelleştirilmiş uygulamalarda, her dilim için Seçim bölmesinde aynı submissionID değerine sahip tüm kareleri arayarak GPU kare sürelerini elde edebilirsiniz.
Vulkan tabanlı uygulamalarda, bir kare oluşturmak için birden fazla gönderim kullanılabilir. Her gönderim için bir dilim içeren Vulkan Etkinlikleri izini kullanarak gönderim kimliklerini takip edin. Bir gönderim dilimi seçildiğinde gönderime karşılık gelen tüm GPU etkinliği dilimleri vurgulanır.
Adreno cihazlar
Adreno cihazlarda GPU dilimleri GPU Sırası 0 izinde görünür ve her zaman sıralı olarak gösterilir. Böylece bir karenin oluşturma geçişlerini temsil eden tüm dilimlere bakabilir ve bunları GPU kare sürelerini ölçmek için kullanabilirsiniz.
Daha önce açıklanan Mali senaryosuna benzer şekilde: Uygulama Vulkan kullanıyorsa Vulkan Etkinlikleri izi, kareyi yürütmek için gönderilen çalışma hakkında bilgi sağlar. Render geçişlerini vurgulamak için kareyle ilişkili Vulkan Events dilimlerini tıklayın.
Uygulamanın GPU'ya yoğun şekilde bağlı olması nedeniyle GPU çerçeve sınırlarının ayırt edilmesinin daha zor olduğu bazı senaryolar vardır. Bu senaryolarda, GPU'ya gönderilen iş hakkında bilgi sahibiyseniz oluşturma geçişlerinin yürütüldüğü kalıbı belirleyebilir ve bu bilgilerden kare sınırlarını tespit edebilirsiniz.
GPU sayaçları
Bir izde GPU dilimi bilgileri yoksa GPU sayacı parçalarını kullanarak GPU kare süresini tahmin edebilirsiniz.
Mali cihazlar
Mali cihazlarda, GPU yoğun olmayan bir uygulamanın GPU kare süresini tahmin etmek için GPU kullanımı izini kullanabilirsiniz. GPU yoğunluğu daha az olan uygulamalarda, sürekli yüksek etkinlik yerine düzenli olarak yüksek ve düşük GPU etkinliği dönemleri görülür. GPU kullanımı izini kullanarak GPU kare sürelerini tahmin etmek için izdeki yüksek etkinlik dönemlerinin süresini ölçün.
Uygulama GPU'yu daha yoğun kullanıyorsa GPU kullanımı sürekli olarak çok yüksek olabilir. Bu durumda, GPU etkinliğini izlemek ve GPU kare sürelerini tahmin etmek için parça sırası kullanımı ve parça olmayan sıra kullanımı izlerini kullanabilirsiniz. Parça ve parça olmayan parçalardaki kalıpları arayarak bir çerçevenin sınırlarının nerede olduğuna dair kabaca bir tahmin elde edebilir ve bunu GPU çerçeve süresini ölçmek için kullanabilirsiniz.
Adreno cihazlar
Adreno cihazlarda, uygulama GPU yoğun değilse GPU kare sürelerini, önceki bölümde Mali cihazlarda yaptığınız gibi tahmin edebilirsiniz.
Uygulama daha fazla GPU yoğunsa ve uygulamada GPU kullanım yüzdesi sürekli olarak yüksekse GPU kare sürelerini tahmin etmek için Vertex Talimatları/Saniye ve Parça Talimatları / Saniye izlerini kullanabilirsiniz. Bu parçaların etkinlik düzeylerindeki kalıplara bakarak bir karenin sınırlarının nerede olduğuna dair kabaca bir tahmin elde edebilir ve bunu GPU kare süresini ölçmek için kullanabilirsiniz.
Aşağıdaki diğer izler de benzer bilgiler sağlayabilir:
- Vertices Shaded / Second
- Saniyede gölgelendirilen parçalar
- Zaman Gölgeleme Köşeleri Yüzdesi
- Zaman gölgelendirme parçalarının yüzdesi