Analyser l'utilisation de la bande passante de la mémoire des données de sommets
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
La bande passante mémoire des données de vertex peut potentiellement brider les performances du GPU de votre jeu. Certains compteurs d'un profil système AGI peuvent vous aider à diagnostiquer les problèmes de bande passante de la mémoire des vertex.
Compteurs Qualcomm Adreno
Sur les appareils équipés de GPU Qualcomm Adreno, voici quelques compteurs notables :
Compteur
Description
Lecture de la mémoire des sommets
Bande passante des données de vertex lues à partir de la mémoire externe.
Nombre moyen d'octets par sommet
Taille moyenne des données de vertex, en octets.
% de décrochage de la récupération des sommets
Pourcentage de cycles d'horloge pendant lesquels le GPU est bloqué sur les données de vertex.
Compteurs ARM Mali (en cours de développement)
Sur les appareils équipés de GPU ARM Mali, voici quelques compteurs notables :
Compteur
Description
Charger/stocker les beats lus à partir de la mémoire externe
Nombre de bits de données lus à partir de la mémoire externe par l'unité de chargement/stockage, en moyenne sur les cœurs de nuanceur.
Charger/stocker les beats de lecture à partir du cache L2
Battements de données lus à partir du cache L2 par l'unité de chargement/stockage, en moyenne sur les cœurs de nuanceur.
[Plus]
Pour calculer la bande passante globale à partir des battements de lecture moyens, la valeur du compteur est multipliée par la largeur du bus (généralement 16 octets) et par le nombre total de cœurs de nuanceur. [Plus]
Analyse des contre-mesures
Pour mesurer le comportement de ces compteurs, vous pouvez mesurer la bande passante moyenne et maximale au cours d'une seule trame de GPU, qui peut être délimitée par un bloc contigu d'utilisation du GPU.
Figure 1 : Bande passante de lecture de la mémoire des sommets pour un seul frame, avec une valeur moyenne de 327 Mbit/s et une valeur maximale de 1,16 Gbit/s
Nous vous recommandons de ne pas dépasser une bande passante de lecture de la mémoire des sommets de 1, 5 Go/s (valeur maximale) et de 500 Mo/s (valeur moyenne). Des valeurs élevées indiquent l'un des problèmes courants suivants :
La taille des sommets est trop importante : les sommets peuvent avoir des attributs volumineux ou un grand nombre d'attributs, ce qui affecte le temps d'ombrage des sommets en général.
Les flux d'attributs de vertex ne sont pas fractionnés : les attributs de vertex sont entrelacés dans un seul tampon, ce qui réduit l'efficacité du cache.
Trop de sommets envoyés par frame : les modèles complexes et/ou un grand nombre de modèles peuvent occuper une bande passante plus importante et prendre plus de temps à ombrer.
Les problèmes de taille des vertex peuvent également être diagnostiqués à l'aide de la piste Moyenne des octets / vertex, qui ne doit pas dépasser 32 octets ou vertex.
Figure 2 : Taille moyenne des sommets pour une seule frame, avec une valeur moyenne de 31,3 octets
Le meilleur moyen de déterminer lequel de ces problèmes vous rencontrez est d'effectuer une trace de profil de frame pour analyser les formats de vertex.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/07/27 (UTC)."],[],[],null,["# Analyze vertex memory bandwidth usage\n\nThe memory bandwidth of vertex data can be a potential bottleneck for your game's GPU performance. There are some counters in an AGI system profile that can help diagnose vertex 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| Vertex Memory Read | Bandwidth of vertex data read from external memory. |\n| Average Bytes/Vertex | Average size of vertex data, in bytes. |\n| % Vertex Fetch Stall | Percentage of clock cycles where the GPU is blocked on vertex data. |\n\nARM Mali counters (WIP)\n-----------------------\n\nOn devices with ARM Mali GPUs, some notable counters include:\n\n| Counter | Description |\n|--------------------------------------------|----------------------------------------------------------------------------------------------|\n| Load/store read beats from external memory | Data beats read from external memory by the load/store unit, averaged over the shader cores. |\n| Load/store read beats from L2 cache | Data beats read from the L2 cache by the load/store 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. \\[More\\]\n\nCounter analysis\n----------------\n\nTo measure the behavior of these counters, you can measure the average and peak\nbandwidth over the course of a single GPU frame, which can be delineated with a\ncontiguous block of **GPU Utilization**.\n**Figure 1:**Vertex memory read bandwidth for a single frame, with an average value of 327 MBps and a peak value of 1.16 GBps\n\nWe recommend a peak vertex memory read bandwidth of no higher than 1.5 GBps, and an average bandwidth no higher than 500 MBps. Higher values are indicators of one of a few common issues:\n\n- **Vertex size is too big**: Vertices may have large vertex attributes or a large number of vertex attributes, affecting vertex shading time at large.\n- **Vertex attribute streams are not split**: Vertex attributes are interleaved into a single buffer, reducing cache efficiency.\n- **Too many vertices submitted per frame**: Complex models and/or a large number of models may take up greater bandwidth and take longer to shade.\n\nVertex size issues may also be diagnosed through the **Average Bytes / Vertex**\ntrack, which we recommend to be no higher than 32 bytes or verteces.\n**Figure 2:**Average vertex size for a single frame, with an average value of 31.3 bytes\n\nThe best way to diagnose which of these problems you may be facing is by taking a frame profile trace to [analyze vertex formats](/agi/frame-trace/vertex-formats)."]]