Pomiar wartości mocy

Producenci urządzeń muszą podać profil zasilania komponentu /frameworks/base/core/res/res/xml/power_profile.xml.

Aby określić wartości profili zasilania, użyj sprzętu, który mierzy moc wykorzystywaną przez urządzenie, i wykonuj różne operacje, do których potrzebne są informacje. Zmierz zużycie energii podczas tych operacji i oblicz wartości (odpowiednio oblicz różnice w porównaniu z innymi wartościami bazowymi zużycia energii).

Celem profilu zasilania jest odpowiednie oszacowanie zużycia baterii, dlatego wartości profilu zasilania są podawane w amperach. Platforma Android mnoży bieżącą wartość przez czas, przez jaki podsystem był aktywny, i oblicza wartość w mAh, która jest następnie używana do oszacowania ilości energii zużytej przez aplikację lub podsystem.

Urządzenia z Androidem 7.0 lub nowszym z kontrolerami Bluetooth, modemem i Wi-Fi mogą dostarczać dodatkowe wartości mocy uzyskane z danych chipsetów.

Urządzenia z niejednorodnymi procesorami

Profil zasilania dla urządzeń z rdzeniami procesora o różnej architekturze musi zawierać te dodatkowe pola:

  • Łączna liczba procesorów w każdym klastrze (wyrażona w cpu.clusters.cores).
  • Szybkość procesora obsługiwana przez każdy klaster.
  • Zużycie energii przez aktywny procesor w każdym klastrze.

Aby odróżnić aktywne zużycie energii procesora i obsługiwane prędkości procesora w klastrach, dodaj numer klastra do nazwy tablicy. Numery klastrów są przypisywane według kolejności rdzeni procesora w drzewie urządzenia jądra. Na przykład w przypadku heterogenicznej architektury z 2 klastrami z 4 rdzeniami:

  • cluster0 składa się z cpu0-3
  • cluster1 składa się z cpu4-7

Platforma Androida używa tych liczb rdzeni procesora podczas odczytywania statystyk z plików sysfs w: /sys/devices/system/cpu/cpu<number>/cpufreq/stats.

Przykład procesorów i szybkości klastra:

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

Wartości mocy

W tabeli poniżej znajdziesz dostępne ustawienia wartości mocy. Przykładowy plik w AOSP znajdziesz tutaj: power_profile.xml.

Nazwa Opis Przykładowa wartość Uwagi
ambient.on Dodatkowa moc zużywana, gdy ekran jest w trybie uśpienia, trybu nieaktywnego lub stałego włączonego. około 100 mA -
screen.on Dodatkowa ilość energii zużywana, gdy ekran jest włączony z minimalną jasnością. 200 mA Obejmuje kontroler dotykowy i podświetlenie wyświetlacza. przy jasności 0, a nie minimalnej jasności Androida, która zwykle wynosi 10–20%.
screen.full Dodatkowa moc zużywana przy maksymalnej jasności w porównaniu z ekranem przy minimalnej jasności 100 mA–300 mA Ułamek tej wartości (na podstawie jasności ekranu) jest dodawany do wartości „screen.on” w celu obliczenia zużycia energii przez ekran.
wifi.on Dodatkowa energia zużywana, gdy Wi-Fi jest włączone, ale nie odbiera, nie przesyła ani nie skanuje. 2 mA -
wifi.active Dodatkowa moc używana podczas przesyłania lub odbierania danych przez Wi-Fi. 31 mA -
wifi.scan Dodatkowa energia zużywana, gdy Wi-Fi skanuje punkty dostępu. 100 mA -
ścieżkom audio Dodatkowa moc używana podczas dekodowania/kodowania dźwięku za pomocą DSP. ok. 10 mA Służy do dźwięku z usług DSP.
film Dodatkowa moc używana podczas dekodowania wideo przez DSP. około 50 mA Służy do reklam wideo w DSP.
kamera.śr. Średnie zużycie energii przez podsystem aparatu w przypadku typowej aplikacji do obsługi aparatu. 600 mA To szacunkowe dane związane z aplikacją uruchomioną w wersji testowej i rejestrującą około 10 zdjęć w pełnej rozdzielczości na minutę.
camera.flashlight Średnia moc zużywana przez moduł lampy błyskowej aparatu, gdy jest włączony. 200 mA -
gps.signalqualitybased Dodatkowa moc używana przez GPS na podstawie siły sygnału. To wpis z wieloma wartościami, po 1 na każdą siłę sygnału, od najsłabszego do najsilniejszego. 30 mA, 10 mA -
gps.on Dodatkowa energia zużywana podczas ustalania sygnału przez GPS. 50 mA -
radio.aktywny Dodatkowa moc używana podczas nadawania/odbierania przez radio komórkowe. 100 mA-300 mA -
radio.scanning Dodatkowa moc używana, gdy radio komórkowe wysyła sygnał do wieży. 1,2 mA -
radio.on Dodatkowa energia zużywana, gdy radio komórkowe jest włączone. Jest to wpis z wieloma wartościami, po jednym na siłę sygnału (brak sygnału, słaby, średni, silny). 1,2 mA Niektóre radioodbiorniki zwiększają moc, gdy szukają wieży komórkowej i nie wykrywają sygnału. Wartości mogą być takie same lub maleć wraz ze wzrostem siły sygnału. Jeśli podasz tylko jedną wartość, ta sama wartość zostanie zastosowana do wszystkich atrybutów. Jeśli podasz 2 wartości, pierwsza będzie używana w przypadku braku sygnału, druga – we wszystkich pozostałych przypadkach i tak dalej.
bluetooth.controller.idle Średnie pobieranie prądu (mA) przez kontroler Bluetooth w stanie spoczynku. - Te wartości nie są szacunkowe, lecz pochodzą z arkusza danych kontrolera. Jeśli występuje wiele stanów odbioru lub nadawania, obliczana jest średnia tych stanów. System zbiera teraz też dane o skanowaniu Bluetooth Low Energy (LE) i Bluetooth.

Android 7.0 i nowsze nie używają już wartości mocy Bluetooth dla bluetooth.active (używanego podczas odtwarzania dźwięku przez Bluetooth A2DP) i bluetooth.on (używanego, gdy Bluetooth jest włączony, ale nieaktywny).
bluetooth.controller.rx Średnie pobieranie prądu (mA) przez kontroler Bluetooth podczas odbierania. -
bluetooth.controller.tx Średnie pobieranie prądu (mA) przez kontroler Bluetooth podczas transmisji. -
bluetooth.controller.voltage Średnie napięcie robocze (mV) kontrolera Bluetooth. -
modem.controller.sleep Średnie pobieranie prądu (mA) przez kontroler modemu w stanie uśpienia. 0 mA Wartości te nie są szacunkowe, ale pochodzą z arkusza danych kontrolera. Jeśli istnieje wiele stanów odbierania, używana jest średnia z tych stanów. Jeśli jest wiele stanów przesyłania, określenie wartości każdego z nich jest obsługiwane od Androida 9.
modem.kontroler.nieaktywny Średnie pobieranie prądu (mA) przez kontroler modemu w stanie bezczynności. -
modem.controller.rx Średnie pobieranie prądu (mA) przez kontroler modemu podczas odbierania. -
modem.controller.tx Średnie pobór prądu (mA) przez kontroler modemu podczas przesyłania z różnymi poziomami mocy częstotliwości radiowej. Jest to wpis z wieloma wartościami, z jedną wartością na poziom mocy nadawania. 100 mA, 200 mA, 300 mA, 400 mA, 500 mA
modem.controller.voltage Średnie napięcie robocze (mV) kontrolera modemu. -
wifi.controller.idle Średnie pobieranie prądu (mA) przez kontroler Wi-Fi w stanie bezczynności. - Te wartości nie są szacunkowe, lecz pochodzą z arkusza danych kontrolera. Jeśli występuje wiele stanów odbioru lub nadawania, obliczana jest średnia z tych stanów.
wifi.controller.rx Średnie pobór prądu (mA) przez kontroler Wi-Fi podczas odbierania. -
wifi.controller.tx Średnie pobieranie prądu (mA) przez kontroler Wi-Fi podczas przesyłania danych. -
wifi.controller.voltage Średnie napięcie robocze (mV) kontrolera Wi-Fi. -
cpu.speeds Jest to wpis wielowartościowy, który zawiera listę wszystkich możliwych szybkości procesora w kHz. 125 000 kHz, 250 000 kHz, 500 000 kHz, 1000 000 kHz, 1500 000 kHz Liczba i kolejność wpisów muszą odpowiadać wpisom mA w pliku cpu.active.
cpu.idle Łączna moc pobierana przez system, gdy procesory (i system SoC) są w stanie zawieszenia. 3 mA -
CPU.awake Dodatkowa moc używana, gdy procesory są w stanie bezczynności (pętla bezczynności jądra); system nie jest w stanie zawieszenia. 50 mA Twoja platforma może mieć więcej niż 1 stan bezczynności o różnych poziomach zużycia energii. Wybierz reprezentatywny stan bezczynności dla dłuższych okresów bezczynności algorytmu szeregowania (kilka milisekund). Przejrzyj wykres mocy na swoim sprzęcie pomiarowym i wybierz próbki, w których procesor ma najniższe zużycie energii. Odrzuć wyższe próbki, w których procesor nie był w stanie bezczynności.
cpu.active Dodatkowa moc wykorzystywana przez procesory działające z różnymi prędkościami. 100 mA, 120 mA, 140 mA, 160 mA, 200 mA Wartość reprezentuje moc używaną przez szyny procesora podczas pracy z różnymi prędkościami. Ustaw maksymalną prędkość jądra na każdą z dozwolonych prędkości i przystosuj do niej procesor. Liczba i kolejność wpisów odpowiada liczbie i kolejności wpisów w parametrze cpu.speeds.
cpu.clusters.cores Liczba rdzeni w każdym klastrze procesora. 4, 2 Wymagany tylko w przypadku urządzeń z niejednorodnymi architekturami procesorów. Liczba wpisów i kolejność powinny być zgodne z liczbą wpisów klastra dotyczących cpu.active i cpu.speeds. Pierwsza pozycja reprezentuje liczbę rdzeni procesora w klastrze 0, druga pozycja reprezentuje liczbę rdzeni procesora w klastrze 1 itd.
bateria.pojemność Łączna pojemność baterii w mAh. 3000 mAh -

Skanowanie Bluetooth Low Energy (LE) i Bluetooth

W przypadku urządzeń z Androidem 7.0 system gromadzi dane dotyczące skanowania Low Energy (LE) i ruchu w sieci Bluetooth (np. RFCOMM i L2CAP) oraz wiąże te działania z aplikacją inicjującą. Skanowanie Bluetooth jest powiązane z aplikacją, która zainicjowała skanowanie, ale skanowania wsadowe nie są powiązane (tylko z aplikacją Bluetooth). W przypadku skanowania aplikacji przez N milisekundy czas skanowania wynosi N milisekund, a czasu TX N milisekund. Pozostały czas pracy kontrolera jest przypisywany do ruchu sieciowego lub aplikacji Bluetooth.