Doku belleği bant genişliği kullanımını analiz etme

Doku verilerinin bellek bant genişliği, uygulamanızın GPU performansında olası bir performans sorunu olabilir. AGI Sistem Profili'nde doku belleği bant genişliği sorunlarının teşhis edilmesine yardımcı olabilecek bazı sayaçlar vardır.

Qualcomm Adreno sayaçları

Qualcomm Adreno GPU'lara sahip cihazlarda önemli sayaçlardan bazıları şunlardır:

Karşı Teklif Açıklama
Doku Belleği Okuma Siyah Beyaz (Bayt/Saniye) Harici bellekten okunan doku verilerinin bant genişliği.
Doku %1 Kaçırma L1 önbellek, dokuları getiremiyor.
Temel Seviyede Olmayan Dokuların Yüzdesi Mipmap olan doku getirmelerinin yüzdesi.
Anisotropik Filtrelenen % Anisotropik filtrelenmiş texel'lerin yüzdesi.

ARM Mali sayaçları

ARM Mali GPU'lara sahip cihazlarda önemli sayaçlardan bazıları şunlardır:

Karşı Teklif Açıklama
Harici bellekten doku okuma vuruşları Doku birimi tarafından harici bellekten okunan veri atışları. Gölgelendirici çekirdekleri üzerinden ortalaması alınır.
L2 önbellekten doku okuma vuruşları L2 önbelleğinden doku birimi tarafından okunan veri atışları, gölgelendirici çekirdeklerin ortalaması üzerinden hesaplanır.
[Diğer]

Ortalama okuma atışlarından gelen toplam bant genişliğini hesaplamak için sayaç değeri, veri yolu genişliği (genellikle 16 bayt) ve gölgelendirici çekirdeklerin toplam sayısıyla çarpılır.

Karşıt analizi

Bu sayaçların davranışını ölçmek için tek bir GPU çerçevesi boyunca ortalama ve en yüksek bant genişliğini ölçün, ardından bitişik bir GPU Kullanımı blokuyla tanımlayın.

Doku belleği, tek bir kare için ortalama 565 MB/sn ve en yüksek değer 2,30 GB/sn olan okuma bant genişliği
Şekil 1. Doku belleği okuma bant genişliği, tek bir kare için ortalama 565 MB/sn ve en yüksek değer 2,30 GB/sn.

Ortalama doku belleğinin okuma bant genişliğinin 1 GB/sn'den yüksek olmamasını ve en yüksek bant genişliğinin 3 GB/sn'den yüksek olmamasını öneririz. Doku L1 önbellek eksikliği de %10'dan yüksek olmamalıdır. Daha yüksek bant genişliği veya L1 önbelleği değerleri, aşağıdakiler de dahil olmak üzere daha derin doku sorunlarının göstergesi olabilir:

  • Dokular çok büyük: Büyük dokular paket boyutunuzu şişirir, daha pahalıdır ve önbellek verimliliğini azaltabilir.
  • Dokular sıkıştırılmamıştır: Tüm Android telefonlar, ETC1 veya ASTC gibi bazı doku sıkıştırma türlerini destekler. Paket boyutunu küçültmek ve doku bant genişliğini azaltmak için dokular sıkıştırılmalıdır.
  • Diğer: 2 dokuların gücü, mipmapping, anisotropik filtreleme ve daha birçok doku ile ilgili diğer çeşitli sorunlar dikkate alınmalıdır. Bunlardan bazıları aşağıda açıklandığı gibi Sistem Profili'nde görülebilir, diğerlerinin ise daha ayrıntılı araştırma yapılması gerekebilir.

Ücretsiz kamerası olan üç boyutlu oyunlarda, doku öğelerinin yanlış uygulama kullanması gerekir. Böylece, kameradan belirli bir uzaklıkta bulunan nesneler daha düşük bellek bant genişliğine, daha iyi doku önbelleği verimliliğine ve daha iyi görüntü kalitesine sahip olur. Qualcomm Adreno GPU'ları kullanan cihazlarda, ortalama olarak %10'un altındaki Temel Düzey Olmayan Dokuların Yüzdesi sayaçları yetersiz taşıma aktarımına işaret edebilir.

Tek bir kare için ortalama %9, 2 değerinde taban düzeyinde olmayan dokular
Şekil 2. Ortalama%9, 2 değerinde tek bir kare için temel düzeyde olmayan dokular

Dikkat edilmesi gereken bir başka nokta da anisotropik filtrelemenin kullanılmasıdır. Bu, anisotropik filtrelenmiş texellerin oranı için Qualcomm Adreno GPU'ları için Anisotropik Filtrelenen% sayacında açıklanmaktadır. Bu yöntem bazı oyunlarda görsel kalitesini iyileştirebilir, ancak aynı zamanda çok pahalı olabilir ve bu özelliğin kullanımı, GPU performans maliyetine göre hesaplanmalıdır.

Tek bir kare için filtrelenmiş anisotropik yüzdesi, ortalama %10,8 değeriyle
Şekil 3. Tek bir kare için filtrelenen anisotropik yüzdesi, ortalama%10,8 değeriyle

Daha spesifik sorunları teşhis etmenin en iyi yolu, doku öğelerini analiz etmek için çerçeve profili izi almaktır.