Analyser l'efficacité de la mémoire

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 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).

La piste d'utilisation s'aligne sur les compteurs correspondants en dessous.
Figure 1 Piste d'utilisation alignée sur les compteurs correspondants ci-dessous

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 vue d'ensemble 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.

Compteurs totaux de lecture et d'écriture
Figure 2 Compteurs totaux de lecture et d'écriture

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.

Compteurs de lecture de la mémoire de texture et des sommets
Figure 3 Compteurs de lecture de la mémoire des textures et des sommets

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'éléments, 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.

Compteurs de blocage de mémoire
Figure 4. Compteurs de blocage de mémoire

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).

La piste d'utilisation s'aligne sur les compteurs qui vous intéressent ci-dessous.
Figure 5. La piste d'utilisation s'aligne sur les compteurs qui vous intéressent ci-dessous.

Afficher les totaux externes

Après avoir mis en surbrillance un seul frame dans le Profileur système, commencez par examiner les compteurs Output External Read bytes et Output External Write bytes. 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.

Suivre les compteurs externes de sortie
Figure 6. Suivi des compteurs de sortie externe

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 de blocage [lecture|écriture] internes d'entrée". Des valeurs élevées pour ces compteurs signifient que vous accédez au cache, mais que trop de requêtes de lecture sont effectuées. Par conséquent, le code du nuanceur est bloqué en attendant d'accéder à la mémoire.

Suivre les compteurs internes d'entrée
Figure 7. Suivi des compteurs internes d'entrée

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.

Le compteur "Fetch Stalls" suit les
Figure 8 Le compteur "Fetch Stalls" suit