Medir valores de potência

Os fabricantes de dispositivos precisam fornecer um perfil de energia do componente /frameworks/base/core/res/res/xml/power_profile.xml:

Para determinar valores para perfis de potência, use um hardware que meça a potência que estão sendo usados pelo dispositivo e realizar as várias operações para as quais mais informações são necessárias. Medir o uso de energia durante essas operações e calcular dos valores, derivando diferenças de outros usos de energia de linha de base conforme apropriado.

Como o objetivo de um perfil de energia é estimar o consumo de bateria adequadamente, os valores do perfil de potência são fornecidos em corrente (amps). O framework do Android multiplica a atual pela hora em que o subsistema esteve ativo e calcula o valor de mAh, que é usado para estimar a quantidade de bateria drenados pelo app ou subsistema.

Dispositivos com Bluetooth, modem e controladores de Wi-Fi com Android 7.0 e maior pode fornecer valores de potência adicionais obtidos dos dados do chipset.

Dispositivos com CPUs heterogêneas

O perfil de energia para dispositivos com núcleos de CPU de arquitetura heterogênea precisa incluir os seguintes campos adicionais:

  • Número total de CPUs para cada cluster, expresso em cpu.clusters.cores.
  • Velocidades de CPU com suporte em cada cluster.
  • Consumo de energia da CPU ativa para cada cluster.

Para diferenciar entre o consumo de energia da CPU ativa e a CPU com suporte para clusters, anexe o número do cluster ao nome da matriz. cluster são atribuídos na ordem dos núcleos de CPU na árvore de dispositivos do kernel. Para exemplo, em uma arquitetura heterogênea que tem dois (2) clusters com quatro (4) núcleos:

  • cluster0 consiste em cpu0-3
  • cluster1 consiste em cpu4-7

O framework do Android usa esses números de núcleo da CPU ao ler estatísticas. dos arquivos sysfs em: /sys/devices/system/cpu/cpu<number>/cpufreq/stats.

Exemplo de CPUs e velocidades de clusters:

<array name="cpu.active.cluster0">
<value>200</value>
<value>300</value>
<value>400</value>
</array>
<array name="cpu.speeds.cluster0">
<value>600000</value>
<value>800000</value>
<value>1200000</value>
</array>

<array name="cpu.active.cluster1">
<value>400</value>
<value>500</value>
<value>600</value>
</array>
<array name="cpu.speeds.cluster1">
<value>800000</value>
<value>1200000</value>
<value>1400000</value>
</array>

Valores de potência

A tabela a seguir descreve as configurações de valores de potência disponíveis. Para acessar exemplo de arquivo no AOSP, consulte power_profile.xml.

Nome Descrição Valor de exemplo Observações
ambiente.on Energia adicional usada quando a tela está no modo Soneca/ambiente/sempre ativada, em vez de desligada. cerca de 100 mA -
screen.on Energia adicional usada quando a tela está ligada com o brilho mínimo. 200 mA Inclui controle touchscreen e luz de fundo da tela. Com brilho 0, não o mínimo do Android, que tende a ser 10 ou 20%.
screen.full Energia adicional usada quando a tela está no brilho máximo, em comparação com tela com brilho mínimo. 100 mA a 300 mA Uma fração desse valor (com base no brilho da tela) é adicionada ao screen.on para calcular o uso de energia da tela.
wifi.on Energia adicional usada quando o Wi-Fi está ligado, mas não está recebendo transmissão ou digitalização. 2 mA -
wifi.active Energia adicional usada ao transmitir ou receber por Wi-Fi. 31 mA -
wifi.scan Energia adicional usada quando o Wi-Fi está procurando pontos de acesso. 100 mA -
vários idiomas Energia adicional usada na decodificação/codificação de áudio via DSP. cerca de 10 mA Usado para áudio DSP.
vídeo Energia adicional usada na decodificação de vídeo via DSP. cerca de 50 mA Usado para vídeo DSP.
câmera.méd. Uso médio de energia pelo subsistema da câmera em uma câmera típica app. 600 mA É uma estimativa aproximada de um app em execução em uma prévia. e capturando aproximadamente 10 imagens de resolução máxima por minuto.
câmera.lanterna Energia média usada pelo módulo de flash da câmera quando ativado. 200 mA -
gps.signalqualitybased Energia adicional usada pelo GPS com base na intensidade do sinal. Essa é uma entrada de vários valores, uma por intensidade de sinal, do mais fraco para o mais forte. 30 mA, 10 mA -
gps.on Energia adicional usada quando o GPS está adquirindo um sinal. 50 mA -
radio.active Energia adicional usada quando o rádio celular está transmitindo/recebendo. 100 mA a 300 mA -
radio.scanning Energia adicional usada quando o rádio celular está atravessando a torre. 1,2 mA -
radio.on Energia adicional usada quando o rádio celular está ligado. Esta é uma entrada de vários valores, uma por intensidade de sinal (sem sinal, fraco, moderado, forte). 1,2 mA Alguns rádios aumentam a energia quando procuram uma torre de celular e não detectar um sinal. Os valores podem ser os mesmos ou diminuir com o aumento do indicador força Se você fornecer apenas um valor, o mesmo valor será usado para todos pontos fortes. Se você fornecer dois valores, o primeiro será usado para nenhum sinal, o o segundo valor é usado para todos os outros pontos fortes e assim por diante.
bluetooth.controller.idle Valor médio de consumo atual (mA) do controle Bluetooth quando inativo. - Esses valores não são estimados, mas extraídos da folha de dados de o controlador. Se houver vários estados de recebimento ou transmissão, a média desses estados é tomada. Além disso, o sistema agora coleta dados para Buscas por Bluetooth de baixa energia (LE).

Android A versão 7.0 e versões mais recentes não usam mais os valores de energia do Bluetooth para bluetooth.active (usado ao reproduzir áudio via Bluetooth A2DP) e bluetooth.on (usado quando o Bluetooth está ativado, mas inativo).
Bluetooth.controller.rx Média de consumo atual (mA) do controle Bluetooth ao receber. -
bluetooth.controller.tx Valor médio de consumo atual (mA) do controle Bluetooth durante a transmissão. -
bluetooth.controller.voltage Tensão de operação média (mV) do controlador Bluetooth. -
modem.controller.sleep Média de consumo atual (mA) do controlador do modem em suspensão. 0 mA Esses valores não são estimados, mas extraídos da folha de dados do controlador. Se houver vários estados de recebimento, a média deles será calculada. Se houver vários estados de transmissão, especificando um valor para cada um deles é aceito a partir do Android 9.
modem.controller.idle Consumo médio atual (mA) do controlador do modem quando inativo. -
modem.controller.rx Consumo médio atual (mA) do controlador do modem ao receber. -
modem.controller.tx Consumo médio de corrente (mA) do controlador do modem ao transmitir com potência de RF diferente níveis Esta é uma entrada de vários valores com um valor por nível de potência de transmissão. 100 mA, 200 mA, 300 mA, 400 mA e 500 mA
modem.controller.voltage Tensão de operação média (mV) do controlador do modem. -
wifi.controller.idle Deslocamento médio atual (mA) do controlador de Wi-Fi quando inativo. - Esses valores não são estimados, mas extraídos da folha de dados de o controlador. Se houver vários estados de recebimento ou transmissão, a média desses estados é tomada.
wifi.controller.rx Consumo médio atual (mA) do controle de Wi-Fi ao receber. -
wifi.controller.tx Consumo médio atual (mA) do controlador Wi-Fi durante a transmissão. -
wifi.controller.voltage Tensão de operação média (mV) do controlador Wi-Fi. -
cpu.speeds Essa é uma entrada de vários valores que lista cada velocidade de CPU possível em KHz. 125.000 KHz, 250.000 KHz, 500.000 KHz, 1000.000 KHz, 1.500.000 KHz O número e a ordem das inscrições precisam corresponder às entradas de mA em cpu.active.
cpu.idle Potência total extraída pelo sistema quando as CPUs (e o SoC) estão no sistema estado suspenso. 3 mA -
CPU.awake Energia adicional usada quando as CPUs estão no estado ocioso de programação (loop inativo do kernel); sistema não está no estado de suspensão. 50 mA A plataforma pode ter mais de um estado inativo em uso com diferentes níveis de consumo de energia; escolha um estado de inatividade representativo por mais tempo períodos de inatividade do programador (vários milissegundos). Analise o gráfico de potência em seu equipamento de medição e escolher amostras em que a CPU esteja no nível mais baixo consumo, descartando amostras mais altas em que a CPU saiu ociosa.
cpu.active Energia adicional usada pelas CPUs em execução em velocidades diferentes. 100 mA, 120 mA, 140 mA, 160 mA, 200 mA O valor representa a potência usada pelas colunas da CPU quando em execução em diferentes velocidades Define a velocidade máxima no kernel para cada uma das velocidades e peg permitidas a CPU nessa velocidade. O número e a ordem das entradas correspondem ao número e ordem das entradas em cpu.speeds.
cpu.clusters.cores Número de núcleos de cada cluster de CPU. 4 e 2 Obrigatório apenas para dispositivos com CPU heterogênea do Google Cloud. O número de entradas e a ordem devem corresponder ao número de entradas de cluster para cpu.active e cpu.speeds. A primeira entrada representa o número de núcleos de CPU em cluster0, a segunda entrada representa o número de Núcleos de CPU no cluster1 e assim por diante.
capacidade da bateria Capacidade total da bateria em mAh. 3.000 mAh -

Buscas por Bluetooth de baixa energia (LE)

Para dispositivos com o Android 7.0, o sistema coleta dados para baixa energia (LE) busca e tráfego de rede Bluetooth (como RFCOMM e L2CAP) e associados essas atividades com o aplicativo que inicia. Buscas por Bluetooth associadas com o aplicativo que iniciou a verificação, mas as verificações em lote não (e são associados ao app Bluetooth). Para um app verificação por N milissegundos, o custo da verificação será de N milissegundos de tempo rx e N milissegundos de tempo tx, todo o tempo restante do controlador é atribuído ao tráfego de rede ou ao app Bluetooth.