Medindo Valores de Potência

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

Para determinar os valores dos perfis de energia, use um hardware que meça a energia usada pelo dispositivo e execute as várias operações para as quais as informações são necessárias. Meça o uso de energia durante essas operações e calcule os 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 energia são fornecidos em corrente (ampères). A estrutura do Android multiplica a corrente pelo tempo em que o subsistema esteve ativo e calcula o valor de mAh, que é usado para estimar a quantidade de bateria consumida pelo aplicativo/subsistema.

Dispositivos com controladores Bluetooth, modem e Wi-Fi executando o Android 7.0 e superior podem fornecer valores de energia 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 deve incluir os seguintes campos adicionais:

  • Número total de CPUs para cada cluster (expresso em cpu.clusters.cores).
  • Velocidades de CPU suportadas por cada cluster.
  • Consumo de energia da CPU ativa para cada cluster.

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

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

A estrutura do Android usa esses números de núcleo da CPU quando lê as estatísticas dos arquivos sysfs em: /sys/devices/system/cpu/cpu<number>/cpufreq/stats .

Exemplo de CPUs e velocidades de cluster:

<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 energia

A tabela a seguir descreve as configurações de valor de energia disponíveis. Para visualizar o arquivo de amostra em AOSP, consulte power_profile.xml .

Nome Descrição Exemplo de valor Notas
ambient.on Energia adicional usada quando a tela está no modo soneca/ambiente/sempre ligado em vez de desligado. cerca de 100mA -
Tela ligada Energia adicional usada quando a tela é ligada com brilho mínimo. 200 mA Inclui controlador de toque e luz de fundo da tela. Com brilho 0, não o mínimo do Android, que tende a ser 10 ou 20%.
tela cheia Energia adicional usada quando a tela está com brilho máximo, em comparação com a tela com brilho mínimo. 100 mA-300 mA Uma fração desse valor (com base no brilho da tela) é adicionada ao valor screen.on para calcular o uso de energia da tela.
wi-fi.ligado Energia adicional usada quando o Wi-Fi está ativado, mas não está recebendo, transmitindo ou escaneando. 2 mA -
wi-fi.ativo 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 -
áudio Potência adicional usada durante a decodificação/codificação de áudio via DSP. cerca de 10mA Usado para áudio DSP.
vídeo Energia adicional usada durante a decodificação de vídeo via DSP. cerca de 50mA Usado para vídeo DSP.
câmera.média Consumo médio de energia pelo subsistema da câmera para uma aplicação típica de câmera. 600 mA Pretendido como uma estimativa aproximada para um aplicativo executando uma visualização e capturando aproximadamente 10 imagens de resolução total por minuto.
câmera.lanterna Potência média usada pelo módulo de flash da câmera quando ligado. 200 mA -
gps.signalquality based Potência adicional usada pelo GPS com base na intensidade do sinal. Esta é uma entrada de vários valores, um por intensidade de sinal, do mais fraco ao mais forte. 30 mA, 10 mA -
gps.on Energia adicional usada quando o GPS está adquirindo um sinal. 50 mA -
radioativo Energia adicional usada quando o rádio celular está transmitindo/recebendo. 100 mA-300 mA -
radio.scanning Energia adicional usada quando o rádio celular está chamando a torre. 1,2 mA -
rádio ligado Energia adicional usada quando o rádio celular está ligado. Esta é uma entrada de vários valores, um por intensidade de sinal (sem sinal, fraco, moderado, forte). 1,2 mA Alguns rádios aumentam a potência quando procuram uma torre de celular e não detectam um sinal. Os valores podem ser os mesmos ou diminuir com o aumento da intensidade do sinal. Se você fornecer apenas um valor, o mesmo valor será usado para todos os pontos fortes. Se você fornecer dois valores, o primeiro será usado para sem sinal, o segundo valor será usado para todas as outras intensidades e assim por diante.
bluetooth.controller.idle Consumo médio de corrente (mA) do controlador Bluetooth quando ocioso. - Esses valores não são estimados, mas retirados da folha de dados do controlador. Se houver vários estados de recebimento ou transmissão, a média desses estados será obtida. Além disso, o sistema agora coleta dados para varreduras de baixa energia (LE) e Bluetooth .

O Android 7.0 e posterior 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 ocioso).
bluetooth.controller.rx Consumo médio de corrente (mA) do controlador Bluetooth ao receber. -
bluetooth.controller.tx Consumo médio de corrente (mA) do controlador Bluetooth durante a transmissão. -
bluetooth.controller.voltage Tensão operacional média (mV) do controlador Bluetooth. -
modem.controller.sleep Consumo médio de corrente (mA) do controlador do modem quando inativo. 0 mA Esses valores não são estimados, mas retirados da folha de dados do controlador. Se houver vários estados de recebimento, a média desses estados será obtida. Se houver vários estados de transmissão, é possível especificar um valor para cada estado de transmissão a partir do Android 9.
modem.controller.idle Consumo médio de corrente (mA) do controlador do modem quando ocioso. -
modem.controller.rx Consumo médio de corrente (mA) do controlador do modem ao receber. -
modem.controller.tx Consumo médio de corrente (mA) do controlador do modem ao transmitir em diferentes níveis de potência de RF. 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, 500 mA
modem.controller.tensão Tensão operacional média (mV) do controlador do modem. -
wifi.controller.idle Consumo médio de corrente (mA) do controlador Wi-Fi quando ocioso. - Esses valores não são estimados, mas retirados da folha de dados do controlador. Se houver vários estados de recebimento ou transmissão, a média desses estados será obtida.
wifi.controller.rx Consumo médio de corrente (mA) do controlador Wi-Fi ao receber. -
wifi.controller.tx Consumo médio de corrente (mA) do controlador Wi-Fi durante a transmissão. -
wi-fi.controlador.voltagem Tensão operacional média (mV) do controlador Wi-Fi. -
cpu.speeds Esta é uma entrada de vários valores que lista cada velocidade de CPU possível em KHz. 125000 KHz, 250000 KHz, 500000 KHz, 1000000 KHz, 1500000 KHz O número e a ordem das entradas devem corresponder às entradas mA em cpu.active.
cpu.idle Potência total consumida pelo sistema quando as CPUs (e o SoC) estão no estado de suspensão do sistema. 3mA -
cpu.wake Energia adicional usada quando as CPUs estão em estado ocioso de programação (loop ocioso do kernel); o sistema não está no estado de suspensão do sistema. 50 mA Sua plataforma pode ter mais de um estado inativo em uso com diferentes níveis de consumo de energia; escolha um estado ocioso representativo para períodos mais longos de ociosidade do agendador (vários milissegundos). Examine o gráfico de potência do seu equipamento de medição e escolha amostras onde a CPU está em seu menor consumo, descartando amostras maiores onde a CPU saiu ociosa.
cpu.ativo Energia adicional usada pelas CPUs ao executar em velocidades diferentes. 100 mA, 120 mA, 140 mA, 160 mA, 200 mA O valor representa a energia usada pelos trilhos da CPU ao executar em velocidades diferentes. Defina a velocidade máxima no kernel para cada uma das velocidades permitidas e atrele a CPU a essa 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 que cada cluster de CPU contém. 4, 2 Necessário apenas para dispositivos com arquiteturas de CPU heterogêneas . 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 no cluster0, a segunda entrada representa o número de núcleos de CPU no cluster1 e assim por diante.
Capacidade de carga Capacidade total da bateria em mAh. 3000 mAh -

Varreduras de baixa energia (LE) e Bluetooth

Para dispositivos com Android 7.0, o sistema coleta dados para varreduras de baixa energia (LE) e tráfego de rede Bluetooth (como RFCOMM e L2CAP) e associa essas atividades ao aplicativo inicial. As varreduras Bluetooth estão associadas ao aplicativo que iniciou a varredura, mas as varreduras em lote não estão (e, em vez disso, estão associadas ao aplicativo Bluetooth). Para uma varredura de aplicativo por N milissegundos, o custo da varredura é 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 aplicativo Bluetooth.

,

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

Para determinar os valores dos perfis de energia, use um hardware que meça a energia usada pelo dispositivo e execute as várias operações para as quais as informações são necessárias. Meça o uso de energia durante essas operações e calcule os 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 energia são fornecidos em corrente (ampères). A estrutura do Android multiplica a corrente pelo tempo em que o subsistema esteve ativo e calcula o valor de mAh, que é usado para estimar a quantidade de bateria consumida pelo aplicativo/subsistema.

Dispositivos com controladores Bluetooth, modem e Wi-Fi executando o Android 7.0 e superior podem fornecer valores de energia 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 deve incluir os seguintes campos adicionais:

  • Número total de CPUs para cada cluster (expresso em cpu.clusters.cores).
  • Velocidades de CPU suportadas por cada cluster.
  • Consumo de energia da CPU ativa para cada cluster.

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

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

A estrutura do Android usa esses números de núcleo da CPU quando lê as estatísticas dos arquivos sysfs em: /sys/devices/system/cpu/cpu<number>/cpufreq/stats .

Exemplo de CPUs e velocidades de cluster:

<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 energia

A tabela a seguir descreve as configurações de valor de energia disponíveis. Para visualizar o arquivo de amostra em AOSP, consulte power_profile.xml .

Nome Descrição Exemplo de Valor Notas
ambient.on Energia adicional usada quando a tela está no modo soneca/ambiente/sempre ligado em vez de desligado. cerca de 100mA -
Tela ligada Energia adicional usada quando a tela é ligada com brilho mínimo. 200 mA Inclui controlador de toque e luz de fundo da tela. Com brilho 0, não o mínimo do Android, que tende a ser 10 ou 20%.
tela cheia Energia adicional usada quando a tela está com brilho máximo, em comparação com a tela com brilho mínimo. 100 mA-300 mA Uma fração desse valor (com base no brilho da tela) é adicionada ao valor screen.on para calcular o uso de energia da tela.
wi-fi.ligado Energia adicional usada quando o Wi-Fi está ativado, mas não está recebendo, transmitindo ou escaneando. 2 mA -
wi-fi.ativo 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 -
áudio Potência adicional usada durante a decodificação/codificação de áudio via DSP. cerca de 10 mA Usado para áudio DSP.
vídeo Energia adicional usada durante a decodificação de vídeo via DSP. cerca de 50mA Usado para vídeo DSP.
câmera.média Consumo médio de energia pelo subsistema da câmera para uma aplicação típica de câmera. 600 mA Pretendido como uma estimativa aproximada para um aplicativo executando uma visualização e capturando aproximadamente 10 imagens de resolução total por minuto.
câmera.lanterna Potência média usada pelo módulo de flash da câmera quando ligado. 200 mA -
gps.signalquality based Potência adicional usada pelo GPS com base na força do sinal. Esta é uma entrada de vários valores, um por intensidade de sinal, do mais fraco ao mais forte. 30 mA, 10 mA -
gps.on Energia adicional usada quando o GPS está adquirindo um sinal. 50 mA -
radioativo Energia adicional usada quando o rádio celular está transmitindo/recebendo. 100 mA-300 mA -
radio.scanning Energia adicional usada quando o rádio celular está chamando a torre. 1,2 mA -
rádio ligado Energia adicional usada quando o rádio celular está ligado. Esta é uma entrada de vários valores, um por intensidade de sinal (sem sinal, fraco, moderado, forte). 1,2 mA Alguns rádios aumentam a potência quando procuram uma torre de celular e não detectam um sinal. Os valores podem ser os mesmos ou diminuir com o aumento da intensidade do sinal. Se você fornecer apenas um valor, o mesmo valor será usado para todos os pontos fortes. Se você fornecer dois valores, o primeiro será usado para sem sinal, o segundo valor será usado para todas as outras intensidades e assim por diante.
bluetooth.controller.idle Consumo médio de corrente (mA) do controlador Bluetooth quando ocioso. - Esses valores não são estimados, mas retirados da folha de dados do controlador. Se houver vários estados de recebimento ou transmissão, a média desses estados será obtida. Além disso, o sistema agora coleta dados para varreduras de baixa energia (LE) e Bluetooth .

O Android 7.0 e posterior 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 ocioso).
bluetooth.controller.rx Consumo médio de corrente (mA) do controlador Bluetooth ao receber. -
bluetooth.controller.tx Consumo médio de corrente (mA) do controlador Bluetooth durante a transmissão. -
bluetooth.controller.voltage Tensão operacional média (mV) do controlador Bluetooth. -
modem.controller.sleep Consumo médio de corrente (mA) do controlador do modem quando inativo. 0 mA Esses valores não são estimados, mas retirados da folha de dados do controlador. Se houver vários estados de recebimento, a média desses estados será obtida. Se houver vários estados de transmissão, é possível especificar um valor para cada estado de transmissão a partir do Android 9.
modem.controller.idle Consumo médio de corrente (mA) do controlador do modem quando ocioso. -
modem.controller.rx Consumo médio de corrente (mA) do controlador do modem ao receber. -
modem.controller.tx Consumo médio de corrente (mA) do controlador do modem ao transmitir em diferentes níveis de potência de RF. 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, 500 mA
modem.controller.tensão Tensão operacional média (mV) do controlador do modem. -
wifi.controller.idle Consumo médio de corrente (mA) do controlador Wi-Fi quando ocioso. - Esses valores não são estimados, mas retirados da folha de dados do controlador. Se houver vários estados de recebimento ou transmissão, a média desses estados será obtida.
wifi.controller.rx Consumo médio de corrente (mA) do controlador Wi-Fi ao receber. -
wifi.controller.tx Consumo médio de corrente (mA) do controlador Wi-Fi durante a transmissão. -
wi-fi.controlador.voltagem Tensão operacional média (mV) do controlador Wi-Fi. -
cpu.speeds Esta é uma entrada de vários valores que lista cada velocidade de CPU possível em KHz. 125000 KHz, 250000 KHz, 500000 KHz, 1000000 KHz, 1500000 KHz O número e a ordem das entradas devem corresponder às entradas mA em cpu.active.
cpu.idle Potência total consumida pelo sistema quando as CPUs (e o SoC) estão no estado de suspensão do sistema. 3 mA -
cpu.wake Energia adicional usada quando as CPUs estão em estado ocioso de programação (loop ocioso do kernel); o sistema não está no estado de suspensão do sistema. 50 mA Sua plataforma pode ter mais de um estado inativo em uso com diferentes níveis de consumo de energia; escolha um estado ocioso representativo para períodos mais longos de ociosidade do agendador (vários milissegundos). Examine o gráfico de potência do seu equipamento de medição e escolha amostras onde a CPU está em seu menor consumo, descartando amostras maiores onde a CPU saiu ociosa.
cpu.ativo Energia adicional usada pelas CPUs ao executar em velocidades diferentes. 100 mA, 120 mA, 140 mA, 160 mA, 200 mA O valor representa a energia usada pelos trilhos da CPU ao executar em velocidades diferentes. Defina a velocidade máxima no kernel para cada uma das velocidades permitidas e atrele a CPU a essa 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 que cada cluster de CPU contém. 4, 2 Necessário apenas para dispositivos com arquiteturas de CPU heterogêneas . 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 no cluster0, a segunda entrada representa o número de núcleos de CPU no cluster1 e assim por diante.
Capacidade de carga Capacidade total da bateria em mAh. 3000 mAh -

Varreduras de baixa energia (LE) e Bluetooth

Para dispositivos com Android 7.0, o sistema coleta dados para varreduras de baixa energia (LE) e tráfego de rede Bluetooth (como RFCOMM e L2CAP) e associa essas atividades ao aplicativo inicial. As varreduras Bluetooth estão associadas ao aplicativo que iniciou a varredura, mas as varreduras em lote não estão (e, em vez disso, estão associadas ao aplicativo Bluetooth). Para uma varredura de aplicativo por N milissegundos, o custo da varredura é 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 aplicativo Bluetooth.