Les caractéristiques d'utilisation de la mémoire d'une application sont un aspect fondamental de ses performances. Vous pouvez utiliser le Profiler système pour analyser ces caractéristiques en examinant les informations disponibles sur le compteur de GPU.
Appareils Adreno
Sur les appareils Adreno, commencez par mettre en évidence une période correspondant à une seule frame GPU, comme décrit dans Estimer les temps de traitement des frames par le CPU et le GPU. Utilisez la technique décrite sur cette page, qui consiste à utiliser le compteur % d'utilisation du GPU ou un compteur similaire pour vos limites de temps de rendu. En effet, tous les compteurs utilisent la même technique de timing et permettent d'obtenir des estimations plus précises de l'utilisation de la mémoire (par rapport à l'utilisation des limites de temps de rendu dérivées des tranches de GPU dont les données sont collectées indépendamment des données de suivi des compteurs).
Totaux de lecture/écriture
Une fois que vous avez mis en surbrillance un seul frame dans le profileur, commencez par examiner les compteurs Total de lecture (octets/s) et Total d'écriture (octets/s). Ces compteurs donnent une bonne idée globale de la quantité de données qui traversent le bus mémoire au cours d'une seule frame. Faites de votre mieux pour minimiser la quantité de données que vous envoyez sur le bus, car la bande passante mémoire est une source importante de décharge de la batterie sur les appareils mobiles.
Vous pouvez également examiner les compteurs Vertex Memory Read (Bytes/Second) et Texture Memory Read (Bytes/Second) pour déterminer la partie de la bande passante utilisée pour les données de vertex et de texture.
Ce que vous considérez comme "bon" pour ces valeurs dépend du type de charges de travail observées dans votre application. Par exemple, les applications 2D peuvent utiliser des quantités relativement importantes (~2 Go/s et plus) de bande passante de lecture de la mémoire de texture, mais la bande passante de la mémoire de vertex peut être très faible (~50 Mo/s). Pour en savoir plus, consultez la documentation sur l'analyse de la bande passante de la mémoire des sommets et l'analyse de l'utilisation de la bande passante de la mémoire des textures.
Récupérer les stands
Examinez les compteurs % Décrochage de la récupération des sommets, % Décrochage de la récupération des textures et % Décrochage sur la mémoire système, car ils vous donneront des indications sur les performances globales de la mémoire de votre application. Si les valeurs sont supérieures à environ 5%, cela suggère que votre application ne dispose pas les données en mémoire de manière efficace ou n'y accède pas de manière efficace pour profiter du cache. Pour savoir comment améliorer l'utilisation de la mémoire pour ces types d'assets, consultez Analyser la bande passante de la mémoire des données de sommets et Analyser l'utilisation de la bande passante de la mémoire des données de texture.
Appareils Mali
Sur les appareils Mali, commencez par mettre en évidence une période correspondant à une seule frame GPU, comme décrit dans Estimer les temps de traitement des frames CPU et GPU. Utilisez la technique décrite sur cette page, qui consiste à utiliser le compteur % d'utilisation du GPU ou un compteur similaire pour vos limites de temps de rendu. En effet, tous les compteurs utilisent la même technique de timing et permettent d'obtenir des estimations plus précises de l'utilisation de la mémoire (par rapport à l'utilisation des limites de temps de rendu dérivées des tranches de GPU dont les données sont collectées indépendamment des données de suivi des compteurs).
Totaux externes de sortie
Après avoir mis en surbrillance un seul frame dans le Profileur système, commencez par examiner les compteurs Octets de lecture externe de sortie et Octets d'écriture externe de sortie. Ces compteurs donnent une bonne idée globale de la quantité de données qui traversent le bus mémoire au cours d'une seule frame. Faites de votre mieux pour minimiser la quantité de données que vous envoyez sur le bus, car la bande passante mémoire est une source importante de décharge de la batterie sur les appareils mobiles.
Saisir les totaux internes
Des compteurs vous fournissent également des informations sur les caches eux-mêmes. Les compteurs qui vous intéressent sont "Cycles d'arrêt de lecture/écriture internes d'entrée". Des valeurs élevées pour ces compteurs signifient que vous accédez correctement au cache, mais que trop de requêtes de lecture sont effectuées. Par conséquent, le code du nuanceur est à l'arrêt en attendant d'accéder à la mémoire.
Récupérer les stands
Les prochains compteurs à examiner sont Vertex Prefetcher Stall Cycles et Texture Fetch Stall, car ils vous donneront des indications sur les performances globales de la mémoire de votre application. Si vous constatez des valeurs supérieures à environ 5 %, cela signifie que vous ne disposez pas nos données en mémoire de manière efficace ou que vous n'y accédez pas de manière efficace pour profiter du cache. Consultez les articles sur l'analyse de la bande passante de la mémoire [Vertex|Texture] pour savoir comment améliorer l'utilisation de la mémoire pour ces types d'assets.