Bellek verimliliğini analiz etme

Bir uygulamanın bellek kullanım özellikleri, performansının temel bir unsurudur. Mevcut GPU sayaç bilgilerine bakarak bu özellikleri analiz etmek için Sistem Profil Aracı'nı kullanabilirsiniz.

Adreno cihazlar

Adreno cihazlarda ilk olarak CPU ve GPU kare işleme sürelerini tahmin etme bölümünde açıklandığı gibi tek bir GPU karesiyle tutarlı bir süreyi vurgulayarak başlayın. Sayaç kanallarının tümü aynı zamanlama tekniğini kullandığından ve bellek kullanımı hakkında daha doğru tahminler yapılmasını sağladığından (verileri sayaç izleme verilerinden bağımsız olarak toplanan GPU dilimlerinden türetilen kare süresi sınırlarının kullanılmasına kıyasla), bu sayfada açıklanan tekniği kullanarak kare süresi sınırlarınız için kare süresi sınırlarınız için GPU Yüzdesi Kullanımı veya benzer bir sayaç kanalını kullanın.

Alttaki ilgili sayaçları sıralayan kullanım kanalı
Şekil 1. Altındaki ilgili sayaçları gösteren kullanım kanalı

Toplam okuma/yazma

Profil oluşturucuda tek bir kareyi vurguladıktan sonra, Toplam Okuma (Bayt/sn) ve Yazma Toplamı (Bayt/sn) sayaçlarına bakarak başlayın. Bu sayaçlar, tek bir kare boyunca bellek veri yoluyla ne kadar verinin geçtiğine dair iyi bir genel görünüm sağlar. Bellek bant genişliği, mobil cihazlarda pilin çok hızlı tükenmesine neden olan büyük bir kaynak olduğundan veri yolu üzerinden gönderdiğiniz veri miktarını en aza indirmek için elinizden geleni yapın.

Okuma ve Yazma Toplam Sayaç
Şekil 2. Okuma ve Yazma Toplam Sayaç

Ayrıca, tepe ve doku verileri için kullanılan bant genişliğinin kısmını belirlemek üzere Vertex Bellek Okuma (Bayt/Saniye) ve Doku Belleği Okuma (Bayt/Saniye) sayaçlarını da inceleyebilirsiniz.

Vertex + Doku Bellekli Okuma Sayaçları
Şekil 3. Vertex + Doku Belleki Okuma Sayaçları

Bu değerler için "iyi" değerleriniz, uygulamanızda görülen iş yükünün türüne bağlıdır. Örneğin, 2D uygulamalarda nispeten büyük miktarlarda (~2+ GB/sn) kullanılan doku belleği okuma bant genişliği görülebilir ancak tepe noktası belleği bant genişliği çok düşük olabilir (~50 MB/sn). Daha fazla ayrıntı için Köşe belleği bant genişliğini analiz etme ve Doku bellek bant genişliği kullanımını analiz etme belgelerine göz atın.

Getirme tezgahları

Vertex Getirme Durağı %'si, Doku Getirme Durağı Yüzdesi ve Sistem Belleğindeki Bekleme %'si sayaçlarına bakın. Bunlar, uygulamamızın genel bellek performansı hakkında bazı ipuçları verir. Değerlerin yaklaşık %5'in üzerinde olması, uygulamanızın bellekte verimli bir şekilde veri dağıtmadığı ya da verilerin önbellekten yararlanmak için verilerine verimli bir şekilde eriştiği anlamına gelir. Bu tür öğeler için bellek kullanımını iyileştirmeyle ilgili ayrıntılar için Köşe belleği bant genişliğini analiz et ve Doku bellek bant genişliği kullanımını analiz et bölümlerine göz atın.

Bellek Durağı Sayaçları
Şekil 4. Bellek Durağı Sayaçları

Mali cihazlar

Mali cihazlarda önce CPU ve GPU kare işleme sürelerini tahmin etme bölümünde açıklandığı gibi ilk olarak tek bir GPU karesiyle tutarlı bir süreyi vurgulayarak başlayın. Sayaç kanallarının tümü aynı zamanlama tekniğini kullandığından ve bellek kullanımı hakkında daha doğru tahminler yapılmasını sağladığından (verileri sayaç izleme verilerinden bağımsız olarak toplanan GPU dilimlerinden türetilen kare süresi sınırlarının kullanılmasına kıyasla), bu sayfada açıklanan tekniği kullanarak kare süresi sınırlarınız için kare süresi sınırlarınız için GPU Yüzdesi Kullanımı veya benzer bir sayaç kanalını kullanın.

İlgilendiğiniz sayaçların altında sıralanan kullanım alanı
Şekil 5. İlgilendiğiniz sayaçları sıralayan kullanım alanı

Çıkış Harici Toplamları

Sistem Profil Aracı'nda tek bir kareyi vurguladıktan sonra, Çıkış Harici Okuma baytları Çıkış Harici Yazma baytları sayaçlarına bakın. Bu sayaçlar, tek bir kare boyunca bellek veri yoluyla ne kadar verinin geçtiğine dair iyi bir genel görünüm sağlar. Bellek bant genişliği, mobil cihazlarda pil tüketiminin önemli bir kaynağı olduğundan veri yolu üzerinden gönderdiğiniz veri miktarını en aza indirmek için elinizden geleni yapın.

Çıkış Harici sayaç kanalları
Şekil 6. Çıkış Harici sayaç kanalları

Dahili toplamları girin

Önbellekler hakkında size bilgi sağlayan sayaçlar da vardır. İlgilendiğiniz sayaçlar “Dahili [okuma|yazma] durak döngüleri girişi”dir. Bunların yüksek olması, önbelleğe başarılı bir şekilde ulaştığınız, ancak çok fazla okuma isteği yapıldığı ve dolayısıyla gölgelendirici kodu belleğe erişim elde etmeyi beklerken durakladığı anlamına gelir.

Dahili sayaç kanalı girin
Şekil 7. Dahili sayaç kanalları girin

Getirme tezgahları

Bakabileceğiniz bir sonraki sayaç grubu, Vertex Prefetcher Stanll Cycles (Vertex Prefetcher Stall Cycles) ve Texture Fetch Stanll (Doku Getirme Standı) sayaçlarıdır. Bunlar, uygulamamızın genel bellek performansı hakkında bazı ipuçları verir. Yaklaşık% 5'in üzerinde değerler görüyorsanız bu durum, verilerimizi belleğe verimli bir şekilde yerleştirmediğiniz veya önbelleğin avantajlarından yararlanmak için verilerimize etkili bir şekilde erişmediğiniz anlamına gelir. Bu öğe türlerinin bellek kullanımını nasıl iyileştireceğinizle ilgili ayrıntıları öğrenmek için [Vertex|Doku] Bellek Bant Genişliği Analizi makalelerine göz atın

Satış yerleri sayaç kanallarını getir
Şekil 8. Mağazalar sayaç kanallarını getir