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

CPU ve GPU çerçeve işleme sürelerini (kare süreleri) tahmin etmek, uygulamanızın performansını anlamak ve performans sorunlarını tespit etmek için çok önemlidir. AGI ile bir uygulamanın profilini oluşturduğunuzda System Profiler kare sürelerini tahmin etmek için kullanabileceğiniz iz verilerini sağlar.

CPU süreleri

AGI'da bir sistem profilinin CPU kanalındaki 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 kare gönderme etkinlikleri arasındaki süreyi içeren zaman aralığını seçin. Çerçeve gönderme etkinlikleri, eglSwapBuffers (OpenGL için) ve vkQueuePresentKHR (Vulkan için) şeklindedir.

Birkaç eglSwapBuffer etkinliğinin ekran görüntüsü.
Şekil 1. Çeşitli eglSwapBuffer etkinlikleri.


Bir vkQueuepresentKHR etkinliğinin ekran görüntüsü.
Şekil 2. Bir vkQueuePresentKHR etkinliği.

Bu ölçüm toplam CPU süresine dair bir tahmindir,ancak etkin CPU süresini yansıtmayabilir. Örneğin, GPU'ya bağlı uygulamalarda CPU, yeni bir kare göndermeden önce GPU'nun çalışmasını tamamlamasını bekleyebilir. Bu durum genellikle dequeueBuffer, eglSwapBuffer (OpenGL için) veya vkQueuePresent (Vulkan için) etkinliği CPU süresinin büyük bir kısmını kapladığında meydana gelir. Bekleme süresi, toplam CPU süresine dahil edilir, ancak etkin CPU süresine dahil edilmez.

dequeueBuffer ve eglSwapBuffer etkinlikleri sırasında çok miktarda boşta kalma durumunu gösteren ekran görüntüsü.
Şekil 3. dequeueBuffer ve eglSwapBuffer etkinlikleri sırasında çok fazla boşta kalma.

Etkin CPU süresi

Aktif CPU süresi, CPU'nun uygulama kodunu boşta olmadan ne zaman çalıştıracağını belirler.

Etkin CPU süresini ölçmek için CPU etkinliklerinin hemen üzerindeki Çalışıyor dilimlerini görüntüleyin. Çalışıyor durumunda olan iki kare gönderme etkinliği arasındaki izlemenin tüm bölümlerini sayın. Çalışan iş parçacıkları eklediğinizden emin olun.

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


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

Etkin CPU süresini ölçmenin diğer bir yolu da CPU kanallarındaki uygulama dilimlerini görüntülemektir. Bu dilimler CPU çalışırken gösterilir ve Çalışıyor dilimlere karşılık gelir.

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

Uygulama dilimlerinin tanımlanmasına yardımcı olması için uygulamanıza ATrace işaretçileri ekleyebilirsiniz. Bu işlem, Sistem Profili'nin CPU izlemesinde işaretçiler gösterir.

CPU kanalındaki bir ATrace işaretçisinin ekran görüntüsü.
Şekil 8. CPU kanalındaki bir ATrace işaretçisi.

GPU kare sürelerini tahmin etme

GPU kare sürelerini tahmin etmek için System Profiler'da GPU dilimleri veya GPU sayaçlarını kullanabilirsiniz. GPU dilimleri kullanılırken tahmin daha doğrudur.

GPU dilimleri

System Profiler'da GPU dilim bilgileri varsa uygulamanızın tek bir kareyle ilişkilendirilmiş görevler üzerinde çalışırken harcadığı toplam süreyi ölçerek çok doğru GPU kare süresi bilgileri alabilirsiniz.

Mali cihazlar

Mali cihazlarda GPU dilimleri parça, parça olmayan ve bazen de parça olmayan tamamlayıcı parçalara sahiptir. Daha az karmaşık karelerde, parça ve parça olmayan işler ardışıktır. Bu nedenle, bir çerçevenin çalışmasını diğerinden ayırt etmek için aktif GPU işi arasındaki boşluklar kontrol edilebilir.

Alternatif olarak, GPU'ya gönderilen çalışmaya aşinaysanız gönderilen oluşturma geçişlerinin kalıbının tanımlanması, karenin ne zaman başlayıp bittiği hakkında bilgi sağlar.

Sırayla yürütülmekte olan birden fazla karenin ekran görüntüsü.
Şekil 9. Birden fazla karenin sırayla yürütülmesi.
AGI'nin tek bir karenin çalışmasına yakınlaştırıldığı ekran görüntüsü.
Şekil 10. Tek bir karenin çalışmasına yakınlaştırıldı.

Daha yoğun şekilde paralelleştirilmiş GPU iş akışına sahip uygulamalarda, her bir dilim için Seçim bölmesinde aynı submissionID'ye sahip tüm kareleri arayarak GPU kare süreleri elde edebilirsiniz.

Vulkan tabanlı uygulamalarda, 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 kare üzerindeki çalışmanın başka bir kareyle çakışabileceği paralel hale getirilmiş 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ş GPU iş yükü.


Seçili bir kare için çeşitli Vulkan etkinliklerinin ekran görüntüsü.
Şekil 12. Seçili bir kare için çeşitli Vulkan etkinlikleri.

Adreno cihazlar

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

Sırayla yürütülmekte olan birden fazla karenin ekran görüntüsü.
Şekil 13. Birden fazla karenin sırayla yürütülmesi.
Birden fazla oluşturma geçişinin olduğu bir karede AGI'nin yakınlaştırıldığı ekran görüntüsü.
Şekil 14. Birden fazla oluşturma geçişinin olduğu bir kareye yakınlaştırma.

Daha önce açıklanan Mali senaryosuna benzer: Uygulama Vulkan kullanıyorsa Vulkan Etkinlikleri kanalı, çerçeveyi yürütmek için gönderilen çalışmayla ilgili bilgi sağlar. Oluşturma geçişlerini vurgulamak için çerçeveyle ilişkilendirilen Vulkan Etkinlikleri dillerini tıklayın.

Seçili bir kare için Vulkan etkinlikleri içeren Vulkan tabanlı bir uygulamanın ekran görüntüsü
Şekil 15. Seçili bir kare için Vulkan etkinlikleri içeren 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 çalışma hakkında bilginiz varsa oluşturma sırasında kullanılan kalıbı belirleyebilir ve bu bilgilerden çerçeve sınırlarını belirleyebilirsiniz.

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

GPU sayaçları

Bir izde GPU dilim bilgileri yoksa GPU sayacı kanallarını kullanarak GPU kare süresini tahmin edebilirsiniz.

Mali cihazlar

Mali cihazlarda, yoğun GPU kullanmayan bir uygulamanın GPU kare süresini tahmin etmek için GPU kullanımı kanalını kullanabilirsiniz. Daha az GPU kullanan uygulamalarda, sürekli yüksek etkinlik yerine düzenli olarak yüksek ve düşük GPU etkinliği görülür. 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 cihazda GPU kullanımının ve GPU Sırası kanallarının ekran görüntüsü.
Şekil 17. Mali cihazlarda GPU kullanımı ve GPU Sırası izler.

Uygulama daha fazla GPU kullanıyorsa GPU kare sürelerini tahmin etmek için parça ve parça olmayan kanalları kullanabilirsiniz. Parça ve parça olmayan kanalların etkinlik düzeylerinde 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.

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

Adreno cihazlar

Adreno cihazlarda, uygulama yoğun GPU'lu değilse GPU kare sürelerini, bir önceki bölümde belirtilen Mali cihazlarda yaptığınız gibi tahmin edebilirsiniz.

Adreno cihazlarda GPU kullanımının ve GPU Sırası kanallarının ekran görüntüsü.
Şekil 19. Adreno cihazlarda GPU kullanımı ve GPU Sırası izler.

Uygulama daha fazla GPU kullanıyorsa GPU kare sürelerini tahmin etmek için Vertex Talimatları/Saniye ve Parça Talimatları / Saniye kanallarını kullanabilirsiniz. Bu kanalların etkinlik düzeylerinde 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.

Vertex Talimatlarının / İkinci parçanın ekran görüntüsü.
Şekil 20. Vertex Talimatlar / İkinci parça.

Şu diğer parçalarda benzer bilgiler sunulabilir:

  • Nokta Gölgelendirilmiş / Saniye
  • Parça Gölgeli / Saniye
  • Zaman Gölgelendirme Köşeleri Yüzdesi
  • Zaman Bölümleri Yüzdesi