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ü.](https://developer.android.com/static/images/agi/long-images/image1.png?authuser=5&hl=tr)
eglSwapBuffer
etkinlikleri.![Bir vkQueuepresentKHR etkinliğinin ekran görüntüsü.](https://developer.android.com/static/images/agi/long-images/image2.png?authuser=5&hl=tr)
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ü.](https://developer.android.com/static/images/agi/long-images/image3.png?authuser=5&hl=tr)
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ü.](https://developer.android.com/static/images/agi/long-images/image5.png?authuser=5&hl=tr)
![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ü.](https://developer.android.com/static/images/agi/long-images/image6.png?authuser=5&hl=tr)
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ü.](https://developer.android.com/static/images/agi/long-images/image7.png?authuser=5&hl=tr)
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ü.](https://developer.android.com/static/images/agi/long-images/image8.png?authuser=5&hl=tr)
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ü.](https://developer.android.com/static/images/agi/long-images/image9.png?authuser=5&hl=tr)
![AGI'nin tek bir karenin çalışmasına yakınlaştırıldığı ekran görüntüsü.](https://developer.android.com/static/images/agi/long-images/image10.png?authuser=5&hl=tr)
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ü.](https://developer.android.com/static/images/agi/long-images/image11.png?authuser=5&hl=tr)
![Seçili bir kare için çeşitli Vulkan etkinliklerinin ekran görüntüsü.](https://developer.android.com/static/images/agi/long-images/image12.png?authuser=5&hl=tr)
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ü.](https://developer.android.com/static/images/agi/long-images/image13.png?authuser=5&hl=tr)
![Birden fazla oluşturma geçişinin olduğu bir karede AGI'nin yakınlaştırıldığı ekran görüntüsü.](https://developer.android.com/static/images/agi/long-images/image14.png?authuser=5&hl=tr)
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ü](https://developer.android.com/static/images/agi/long-images/image15.png?authuser=5&hl=tr)
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ü.](https://developer.android.com/static/images/agi/long-images/image16.png?authuser=5&hl=tr)
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ü.](https://developer.android.com/static/images/agi/long-images/image17.png?authuser=5&hl=tr)
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ü.](https://developer.android.com/static/images/agi/long-images/image18.png?authuser=5&hl=tr)
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ü.](https://developer.android.com/static/images/agi/long-images/image19.png?authuser=5&hl=tr)
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ü.](https://developer.android.com/static/images/agi/long-images/image20.png?authuser=5&hl=tr)
Ş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