Analisi dell'utilizzo della larghezza di banda della memoria della trama
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
La larghezza di banda della memoria dei dati delle texture può essere un potenziale collo di bottiglia per le prestazioni della GPU della tua app. In un profilo di sistema AGI sono presenti alcuni contatori che possono aiutare a diagnosticare i problemi di larghezza di banda della memoria di trama.
Contatori Qualcomm Adreno
Sui dispositivi con GPU Qualcomm Adreno, alcuni contatori degni di nota sono:
Negozia
Descrizione
BW lettura memoria texture (byte/secondo)
Larghezza di banda dei dati delle texture letti dalla memoria esterna.
% texture L1 mancanti
Errore della cache L1 a causa del recupero delle texture.
% di texture non di base
Percentuale di recuperi di texture che sono mipmap.
% filtrata anisotropica
Percentuale di texel filtrata anisotropica.
Contatori ARM Mali
Sui dispositivi con GPU ARM Mali, alcuni contatori degni di nota includono:
Negozia
Descrizione
Lettura della trama dalla memoria esterna
Battiti di dati letti dalla memoria esterna dall'unità di texture, calcolati in media sui core dello shabbyr.
Battiti di lettura texture dalla cache L2
Battiti di dati letti dalla cache L2 dall'unità di texture, calcolata in media sui core dello shardr.
[Altro]
Per calcolare la larghezza di banda complessiva dai battiti medi di lettura, il valore del contatore viene moltiplicato per la larghezza del bus (in genere 16 byte) e per il numero totale di core dello shabbyr.
Analisi dei contatori
Per misurare il comportamento di questi contatori, misura la larghezza di banda media e massima nel corso di un singolo frame GPU, quindi definisci la definizione con un blocco contiguo di utilizzo della GPU.
Figura 1. Larghezza di banda per la lettura della memoria di texture per un singolo frame, con un valore medio di 565 MBps e un valore di picco di 2,30 GBps
Consigliamo una larghezza di banda media di lettura della memoria di trama non superiore a 1 GBps e una larghezza di banda di picco non superiore a 3 GBps. Inoltre, il fallimento della cache L1 della texture non deve essere superiore al 10%. Valori più elevati per la larghezza di banda o la cache L1 possono essere indicatori di problemi di texture più profondi, tra cui:
Texture troppo grandi: le texture di grandi dimensioni aumentano le dimensioni del pacco, sono più costose e possono ridurre l'efficienza della cache.
Le texture non sono compresse: tutti gli smartphone Android supportano alcuni tipi di compressione delle texture, che sia ETC1 o ASTC. Le texture devono essere compresse per ridurre le dimensioni del pacchetto e la larghezza di banda della texture.
Altro: dovrebbero essere presi in considerazione diversi altri problemi relativi alle texture, tra cui le texture Power-of-2, la mipmapping, il filtro anisotropico e altro ancora. Alcuni di questi possono essere osservati nel profilo di sistema, come descritto di seguito, mentre altri potrebbero richiedere un'indagine più approfondita.
Per i giochi tridimensionali con fotocamera senza costi, gli asset texture dovrebbero utilizzare mipmapping, in modo che gli oggetti distanti dalla fotocamera abbiano una larghezza di banda di memoria ridotta, una migliore efficienza della cache delle texture e una migliore qualità dell'immagine. Per i dispositivi che utilizzano GPU Qualcomm Adreno, la percentuale di contatori di texture non di base inferiori in media al 10% potrebbe indicare una mipmapping inadeguata.
Figura 2. Trame non di base per un singolo frame, con un valore medio del 9,2%
Un altro fattore da considerare è l'uso del filtro anisotropico, descritto dal contatore % filtro anisotropico per le GPU Qualcomm Adreno per la proporzione di texl filtrati in modo anisotropico. Sebbene ciò possa migliorare la qualità visiva per alcuni giochi, può anche essere molto costoso e il suo utilizzo deve essere ponderato in base ai costi delle prestazioni della GPU.
Figura 3. Perecità dell'anisotropico filtrata per un singolo frame, con un valore medio del 10,8%
Il modo migliore per diagnosticare problemi più specifici è eseguire una traccia del profilo del frame per analizzare gli asset delle texture.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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."]]