Doku belleği bant genişliği kullanımını analiz etme
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
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:
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.
Ş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.
Ş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.
Ş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.
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-07-27 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-07-27 UTC."],[],[],null,["# Analyze texture memory bandwidth usage\n\nThe memory bandwidth of texture data can be a potential bottleneck for your\napp's GPU performance. There are some counters in an **AGI System Profile** that can help diagnose texture memory bandwidth issues.\n\nQualcomm Adreno counters\n------------------------\n\nOn devices with Qualcomm Adreno GPUs, some notable counters include:\n\n| Counter | Description |\n|---------------------------------------|------------------------------------------------------|\n| Texture Memory Read BW (Bytes/Second) | Bandwidth of texture data read from external memory. |\n| % Texture L1 Miss | L1 cache miss from fetching textures. |\n| % Non-Base Level Textures | Percentage of texture fetches that are mipmaps. |\n| % Anisotropic Filtered | Percentage of texels that are anisotropic filtered. |\n\nARM Mali counters\n-----------------\n\nOn devices with ARM Mali GPUs, some notable counters include:\n\n| Counter | Description |\n|-----------------------------------------|-------------------------------------------------------------------------------------------|\n| Texture read beats from external memory | Data beats read from external memory by the texture unit, averaged over the shader cores. |\n| Texture read beats from L2 cache | Data beats read from the L2 cache by the texture unit, averaged over the shader cores. |\n| \\[More\\] | |\n\nTo calculate the overall bandwidth from average read beats, the counter value is multiplied by the bus width (typically 16 bytes) and by the total number of shader cores.\n\nCounter analysis\n----------------\n\nTo measure the behavior of these counters, measure the average and peak\nbandwidth over the course of a single GPU frame, and then delineate with a contiguous block of GPU Utilization.\n**Figure 1.**Texture memory read bandwidth for a single frame, with average value of 565 MBps and peak value of 2.30 GBps\n\nWe recommend an average texture memory read bandwidth of no higher than 1 GBps, and a peak bandwidth no higher than 3 GBps. Texture L1 cache miss should also be no higher than 10%. Higher values for bandwidth or L1 cache may be indicators of deeper texture issues, including:\n\n- *Textures are too large*: Large textures bloat your package size, and are more expensive and may reduce cache efficiency.\n- *Textures are uncompressed*: All Android phones support some types of texture compression, whether it's ETC1 or ASTC. Textures should be compressed to reduce package size and reduce texture bandwidth.\n- *Other*: A variety of other texture concerns should be considered, including power-of-2 textures, mipmapping, anisotropic filtering, and more. Some of these may be observed from the System Profile as discussed below, whereas others may require deeper investigation.\n\nFor three-dimensional games with a free camera, texture assets should use [mipmapping](/agi/sys-trace/link), such that objects at a distance from the camera will have reduced memory bandwidth, better texture cache efficiency, and better image quality. For devices using Qualcomm Adreno GPUs, % **Non-Base Level Textures** counters lower than 10% on average may indicate inadequate mipmapping.\n**Figure 2.**Non-base level textures for a single frame, with an average value of 9.2%\n\nAnother consideration is the use of anisotropic filtering, which is described by the **% Anisotropic Filtered** counter for Qualcomm Adreno GPUs for the proportion of texels that are anisotropic filtered. While this may improve visual quality for some games, it can also be very expensive, and its use should be weighed against the GPU performance cost.\n**Figure 3.**Perecentage of anisotropic filtered for a single frame, with average value of 10.8%\n\nThe best way to diagnose more specific problems is through taking a frame\nprofile trace to analyze texture assets."]]