CPU ve GPU kare işleme sürelerini tahmin etme

CPU ve GPU kare işleme sürelerini (kare süreleri) tahmin etmek, uygulamanızın performansını anlamak ve darboğazları bulmak için önemlidir. AGI ile bir uygulamanın profilini oluşturduğunuzda Sistem Profilleyici, kare sürelerini tahmin etmek için kullanabileceğiniz izleme verileri sağlar.

CPU süreleri

AGI'de, sistem profilinin CPU kanalında toplam ve etkin CPU kare sürelerini görüntüleyebilirsiniz.

Toplam CPU süresi

Harcanan toplam CPU süresini ölçmek için art arda ç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 etkinliklerinin ekran görüntüsü.
Şekil 1. İki eglSwapBuffer etkinliği arasındaki süre.


vkQueuePresentKHR etkinliğinin ekran görüntüsü.
Şekil 2. İki vkQueuePresentKHR etkinliği arasındaki süre.

Bu ölçüm,toplam CPU süresinin bir tahminidir ancak etkin CPU süresini temsil etmez. Örneğin, GPU'ya bağlı uygulamalarda CPU, yeni bir kare göndermeden önce GPU'nun çalışmasını tamamlamasını beklemeyebilir. 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ü kapladığında ortaya çıkar. Bekleme süresi, etkin CPU süresine değil, toplam CPU süresine dahil edilir.

dequeueBuffer ve eglSwapBuffer etkinlikleri sırasında çok fazla boşta kalma süresini gösteren ekran görüntüsü.
3.şekil dequeueBuffer ve eglSwapBuffer etkinlikleri sırasında CPU'nun büyük miktarda boşta kalması

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, Çalışıyor durumundaki izlemenin tüm bölümlerini sayın. Çalışan mesaj dizilerini eklediğinizden emin olun.

Etkin CPU süresini ölçmek için kullanılabilecek iki CPU süresi döneminin ekran görüntüsü.
Şekil 5. Etkin CPU süresini ölçmek için kullanılabilen iki CPU süresi dönemi.


Ana iş parçacığı boştayken diğer çalışan iş parçacıkları olan çok iş parçacıklı bir uygulamanın ekran görüntüsü.
Şekil 6. Ana iş parçacığı boştayken çalışan başka iş parçacıkları olan çok iş parçacıklı bir uygulama.

Etkin CPU süresini ölçmenin bir diğer yolu da CPU kanallarındaki uygulama dilimlerini görüntülemektir. Bu dilimler, CPU'nun ne zaman çalıştığını gösterir ve Çalışıyor dilimleriyle eşleşir.

CPU kanalıyla eşleşen sabitlenmiş bir iş parçacığının çalışma durumunu gösteren ekran görüntüsü.
7. şekil. Sabitlenmiş iş parçacığının çalışma durumu, CPU kanalıyla eşleşiyor.

Uygulama dilimlerini belirlemeye yardımcı olmak için uygulamanıza ATrace işaretçileri ekleyebilirsiniz. Bu durumda işaretçiler, Sistem Profilleyici'nin CPU kanalında gösterilir.

CPU kanalında gösterilen ATrace dilimlerinin ekran görüntüsü.
Şekil 8. CPU kanalında gösterilen ATrace dilimleri.

GPU kare sürelerini tahmin etme

GPU kare sürelerini tahmin etmek için Sistem Profilleyici'de GPU dilimlerini veya GPU sayaçları kullanabilirsiniz. GPU dilimleri kullanıldığında tahmin daha doğru olur.

GPU dilimleri

Sistem Profilleyici'de GPU dilimi bilgileri mevcutsa uygulamanızın tek bir kareyle ilişkili görevler üzerinde çalıştığı toplam süreyi ölçerek çok doğru GPU kare süresi bilgileri edinebilirsiniz.

Mali cihazlar

Mali cihazlarda GPU dilimleri parça, parça olmayan ve bazen ek parça olmayan parçalara sahiptir. Daha az karmaşık karelerde, parça ve parça dışı çalışma sıralı olduğundan bir karenin çalışmasını diğerinden ayırt etmek için etkin GPU çalışması arasındaki boşluklar aranabilir.

Alternatif olarak, GPU'ya gönderilen işe aşinaysanız gönderilen oluşturma geçişlerinin desenini tanımlamak, bir karenin ne zaman başladığı ve bittiği hakkında bilgi sağlar.

Sırayla yürütülen birden fazla karenin ekran görüntüsü.
Şekil 9. Sırayla yürütülen birden fazla kare.
AGI'nin tek bir karenin çalışmasına yakınlaştırıldığı ekran görüntüsü.
Şekil 10. Bir karenin çalışmasına yakınlaştırılmış.

Daha fazla paralelleştirilmiş GPU iş akışı olan uygulamalarda, her dilim için Seçim bölmesinde aynı submissionID değerine sahip tüm kareleri arayarak GPU kare sürelerini alabilirsiniz.

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 kanalını kullanarak gönderim kimliklerini takip edin. Bir gönderim dilimi seçildiğinde, gönderime karşılık gelen tüm GPU etkinlik dilimleri vurgulanır.

Bir karedeki çalışmanın başka bir kareyle çakışma ihtimali olan paralel GPU iş yükünün ekran görüntüsü.
Şekil 11. Bir kare üzerindeki çalışmanın başka bir kareyle çakışabileceği paralelleştirilmiş bir GPU iş yükü.


Bir kare için seçilen çeşitli Vulkan etkinliklerinin ekran görüntüsü.
12. şekil. Bir kare için seçilen birkaç Vulkan etkinliği.

Adreno cihazlar

Adreno cihazlarda GPU dilimleri GPU Sırası 0 parçasında görünür ve her zaman sırayla temsil edilir. Böylece, bir karenin oluşturma geçişlerini temsil eden tüm dilimlere bakabilir ve GPU kare sürelerini ölçmek için bunları kullanabilirsiniz.

Sırayla yürütülen birden fazla karenin ekran görüntüsü.
Şekil 13. Sırayla yürütülen birden fazla kare.
AGI'nin birden fazla oluşturma geçişi içeren bir karede yakınlaştırıldığı ekran görüntüsü.
Şekil 14. Birden fazla oluşturma geçişi içeren bir kareye yakınlaştırılmış görünüm.

Daha önce açıklanan Mali senaryosuna benzer şekilde: Uygulama Vulkan kullanıyorsa Vulkan Etkinlikleri kanalı, kareyi yürütmek için gönderilen çalışma hakkında bilgi sağlar. Oluşturma geçişlerini vurgulamak için kareyle ilişkili Vulkan Etkinlikleri dilimlerini tıklayın.

Karedeki Vulkan etkinliklerinin seçildiği Vulkan tabanlı bir uygulamanın ekran görüntüsü.
Şekil 15. Bir kare için Vulkan etkinliklerinin seçildiği Vulkan tabanlı bir uygulama.

Uygulamanın büyük ölçüde GPU'ya 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şe aşinaysanız oluşturma geçişlerinin hangi modelle yürütüldüğünü belirleyebilir ve bu bilgilerden kare sınırlarını belirleyebilirsiniz.

Çerçeve sınırlarını belirlemeye yardımcı olan bir oluşturma geçişi kalıbına sahip, GPU'ya yoğun şekilde bağlı bir uygulamanın ekran görüntüsü.
16. şekil. Kare sınırlarını tanımlamaya yardımcı olan bir oluşturma geçişi kalıbına sahip, GPU'ya yoğun şekilde bağlı bir uygulama.

GPU sayaçları

Bir izlemede GPU dilimi bilgileri kullanılamıyorsa GPU sayacı kanalları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ı kanalını kullanabilirsiniz. GPU kullanımı daha az olan uygulamalarda, sürekli yüksek etkinlik yerine düzenli olarak yüksek ve düşük GPU etkinliği dönemleri olur. GPU kullanımı kanalını kullanarak GPU kare sürelerini tahmin etmek için kanaldaki yüksek etkinlik dönemlerinin süresini ölçün.

Mali cihazdaki GPU kullanımı ve GPU sırası kanallarının ekran görüntüsü.
17. şekil. Mali cihazdaki GPU kullanımı ve GPU sırası.

Uygulama GPU'ya daha yoğun ihtiyaç duyuyorsa 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 kuyruğu kullanımı ve parça dışı kuyruk kullanımı kanallarını kullanabilirsiniz. Parça ve parça olmayan parçalarda kalıplar arayarak bir çerçevenin sınırlarının nerede olduğuna dair kaba bir tahminde bulunabilir ve bunu GPU çerçeve süresini ölçmek için kullanabilirsiniz.

Parça ve parça olmayan parçaların ekran görüntüsü.
18. şekil. Parça ve parça olmayan parçalar.

Adreno cihazlar

Adreno cihazlarda, uygulama GPU yoğun değilse GPU kare sürelerini önceki bölümdeki Mali cihazlarda olduğu gibi tahmin edebilirsiniz.

Adreno cihazdaki GPU kullanım yüzdesinin ve GPU sırası kanallarının ekran görüntüsü.
Şekil 19. Adreno cihazdaki GPU kullanımı yüzdesi ve GPU sırası kanalları.

Uygulama GPU'ya daha yoğunsa ve uygulamanın GPU kullanım yüzdesi sürekli olarak yüksekse GPU kare sürelerini tahmin etmek için Nokta Talimatı/Saniye ve Parça Talimatı / Saniye kanallarını kullanabilirsiniz. Bu kanalların etkinlik seviyelerinde kalıplar arayarak bir karenin sınırlarının nerede olduğuna dair kaba bir tahmin elde edebilir ve bunu GPU kare süresini ölçmek için kullanabilirsiniz.

Nokta Talimatları / İkinci parçanın ekran görüntüsü.
20. şekil. Vertex Talimatı / Saniye kanalını seçin.

Aşağıdaki diğer kanallar da benzer bilgiler sağlayabilir:

  • Gölgelenen Köşe Noktası Sayısı / Saniye
  • Gölgeli Parça Sayısı / Saniye
  • Gölgelendirme için kullanılan köşelerin yüzdesi
  • Gölgelendirme Parçalarının Geçtiği Süre Yüzdesi