Analisar a eficiência da memória

As características de uso da memória de um app são um aspecto fundamental do desempenho dele. Você pode usar o System Profiler para analisar essas características observando as informações do contador de GPU disponíveis.

Dispositivos Adreno

Em dispositivos Adreno, comece destacando um período consistente com um único frame da GPU, conforme descrito em Estimar os tempos de processamento de frames da CPU e da GPU. Use a técnica descrita nesta página que envolve o uso da utilização de % de GPU ou de uma faixa de contagem semelhante para os limites de tempo para a renderização do frame, já que todos os rastreamentos de contador usam a mesma técnica de tempo e permite estimativas mais precisas da utilização da memória (em comparação ao uso dos limites de tempo para a renderização de frames derivados das frações de GPU em que os dados são coletados de forma independente dos dados de rastreamento de contador).

Rastreamento de utilização alinhado com os contadores relevantes abaixo dele
Figura 1. Rastreamento de utilização alinhado com os contadores relevantes abaixo dela

Totais de leitura/gravação

Depois de destacar um único frame no criador de perfil, comece analisando os contadores Read Total (Bytes/sec) e Write Total (Bytes/sec). Esses contadores fornecem uma boa visão geral da quantidade de dados que cruza o barramento de memória ao longo de um único frame. Faça o possível para minimizar a quantidade de dados enviados pelo barramento, já que a largura de banda da memória é uma grande fonte de consumo de bateria em dispositivos móveis.

Total de contadores de leitura + gravação
Figura 2. Total de contadores de leitura e gravação

Também é possível examinar os contadores de Leitura de memória Vertex (bytes/segundo) e Leitura de memória da textura (bytes/segundo) para determinar a parte da largura de banda usada para dados de vértice e textura.

Contadores de leitura de memória Vertex + Texture
Figura 3. Contadores de leitura de memória da Vertex + Texture

O que você considera "bom" para esses valores depende do tipo de cargas de trabalho visadas no seu app. Por exemplo, os aplicativos 2D podem ter quantidades relativamente grandes (aproximadamente 2+ GB/s) de largura de banda de leitura da memória de textura sendo usadas, mas a largura de banda da memória do vértice pode ser muito mínima (aproximadamente 50 MB/s). Para mais detalhes, consulte a documentação sobre Analisar a largura de banda da memória do vértice e Analisar o uso da largura de banda da memória de textura.

Barracas de busca

Confira os contadores % de parada de Vertex Vertex, % de parada de busca de textura e % de parada na memória do sistema. Eles oferecem algumas dicas para o desempenho geral da memória do nosso aplicativo. Se os valores forem mais altos que aproximadamente 5%, isso sugere que o app não está colocando dados na memória de maneira eficiente ou acessa os dados de maneira eficiente para aproveitar o cache. Consulte Analisar a largura de banda de memória do vértice e Analisar o uso da largura de banda da memória de textura para ver detalhes sobre como melhorar o uso de memória para esses tipos de recurso.

Contadores de armazenamento em memória
Figura 4. Contadores de paradas de memória

Dispositivos Mali

Em dispositivos Mali, comece destacando um período consistente com um único frame da GPU, conforme descrito em Estimar tempos de processamento de frames da CPU e da GPU. Use a técnica descrita nesta página que envolve o uso da utilização de % de GPU ou de uma faixa de contagem semelhante para os limites de tempo para a renderização do frame, já que todos os rastreamentos de contador usam a mesma técnica de tempo e permite estimativas mais precisas da utilização da memória (em comparação ao uso dos limites de tempo para a renderização de frames derivados das frações de GPU em que os dados são coletados de forma independente dos dados de rastreamento de contador).

Trilha de utilização alinhada com os contadores do seu interesse abaixo dela
Figura 5. Rastreamento de utilização alinhado aos contadores do seu interesse abaixo dele

Totais externos de saída

Depois de destacar um único frame no System Profiler, comece analisando os contadores de Output External Read bytes Output External Write bytes. Esses contadores fornecem uma boa visão geral da quantidade de dados que atravessa o barramento de memória ao longo de um único frame. Faça o possível para minimizar a quantidade de dados enviados pelo barramento, já que a largura de banda da memória é uma grande fonte de consumo de bateria em dispositivos móveis.

Faixas de contador externo de saída
Figura 6. Faixas de contador externo de saída

Inserir totais internos

Há também contadores que fornecem informações sobre os próprios caches. Os contadores do seu interesse são "Ciclos de inatividade internos de [leitura|gravação] de entrada". Valores mais altos para eles significam que o cache está sendo acessado, mas há muitas solicitações de leitura sendo feitas e, como resultado, o código do sombreador está esperando para ter acesso à memória.

Inserir faixas de contagem interna
Figura 7. Inserir faixas de contador interno

Barracas de busca

O próximo conjunto de contadores que você pode analisar são os ciclos de parada do pré-busca do Vertex e os contadores de parada de busca de textura, que oferecem algumas dicas para o desempenho geral da memória do aplicativo. Valores superiores a 5% significam que você não está inserindo nossos dados na memória de forma eficiente ou acessando nossos dados de uma maneira eficiente para aproveitar o cache. Confira os artigos sobre análise da largura de banda de memória [Vertex|Texture] para saber como melhorar o uso da memória nesses tipos de recursos.

Buscar faixas do contador de lojas
Figura 8. Buscar faixas do contador de lojas