Pomiar wartości mocy

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

Aby określić wartości profili zasilania, użyj sprzętu, który mierzy zużycie energii przez urządzenie, i wykonaj różne operacje, w przypadku których potrzebne są informacje. Zmierz zużycie energii podczas tych operacji i oblicz wartości (w razie potrzeby wyznacz różnice w stosunku do innych podstawowych wartości 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 natężenie prądu przez czas, przez jaki podsystem był aktywny, i oblicza wartość w mAh, która jest następnie używana do oszacowania ilości energii z baterii zużytej przez aplikację lub podsystem.

Urządzenia z kontrolerami Bluetooth, modemu i Wi-Fi z Androidem 7.0 lub nowszym mogą podawać dodatkowe wartości mocy uzyskane z danych chipsetu.

Urządzenia z heterogenicznymi procesorami

Profil zasilania urządzeń z rdzeniami procesora o heterogenicznej architekturze musi zawierać te dodatkowe pola:

  • Łączna liczba procesorów w każdym klastrze (wyrażona w cpu.clusters.cores).
  • Szybkości procesora obsługiwane przez każdy klaster.
  • Aktywne zużycie energii przez procesor w przypadku każdego klastra.

Aby odróżnić aktywne zużycie energii przez procesor od obsługiwanych prędkości procesora w klastrach, do nazwy tablicy dołącz numer klastra. Numery klastrów są przypisywane w kolejności rdzeni procesora w drzewie urządzeń jądra. Na przykład w architekturze heterogenicznej, która ma 2 klastry z 4 rdzeniami:

  • klaster0 składa się z procesorów 0–3
  • klaster1 składa się z procesorów 4–7

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

Przykłady procesorów i prędkoś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 opis dostępnych ustawień wartości mocy. Aby wyświetlić przykładowy plik w AOSP, zobacz power_profile.xml.

Nazwa Opis Przykładowa wartość Uwagi
ambient.on Dodatkowe zużycie energii, gdy ekran jest w trybie uśpienia, otoczenia lub zawsze włączonym zamiast wyłączonym. około 100 mA, -
screen.on Dodatkowa moc zużywana, gdy ekran jest włączony przy minimalnej jasności. 200 mA Obejmuje kontroler dotykowy i podświetlenie wyświetlacza. Przy jasności 0, a nie przy minimalnej jasności Androida, która zwykle wynosi 10 lub 20%.
screen.full Dodatkowa moc zużywana, gdy ekran ma maksymalną jasność, w porównaniu z ekranem o minimalnej jasności. 100–300 mA Ułamek tej wartości (zależny od jasności ekranu) jest dodawany do wartości screen.on, aby obliczyć zużycie energii przez ekran.
wifi.on Dodatkowe zużycie energii, gdy Wi-Fi jest włączone, ale nie odbiera, nie przesyła ani nie skanuje. 2 mA -
wifi.active Dodatkowa energia zużywana podczas przesyłania lub odbierania danych przez Wi-Fi. 31 mA -
wifi.scan Dodatkowe zużycie energii podczas skanowania punktów dostępu Wi-Fi. 100 mA -
dźwięk Dodatkowa moc zużywana podczas dekodowania/kodowania dźwięku za pomocą procesora DSP. około 10 mA Używany do dźwięku DSP.
film Dodatkowa moc zużywana podczas dekodowania wideo za pomocą procesora DSP. około 50 mA Używane w przypadku filmów DSP.
camera.avg Średnie zużycie energii przez podsystem aparatu w typowych aplikacjach aparatu. 600 mA Jest to przybliżone oszacowanie dla aplikacji, która wyświetla podgląd i wykonuje 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 Dodatkowe zużycie energii przez GPS w zależności od siły sygnału. Jest to wpis z wieloma wartościami, po jednej dla każdego poziomu sygnału, od najsłabszego do najsilniejszego. 30 mA, 10 mA -
gps.on Dodatkowe zużycie energii podczas wyszukiwania sygnału GPS. 50 mA -
radio.active Dodatkowa moc zużywana podczas przesyłania i odbierania danych przez radio komórkowe. 100–300 mA -
radio.scanning Dodatkowe zużycie energii, gdy radio komórkowe wysyła sygnał do stacji bazowej. 1,2 mA -
radio.on Dodatkowe zużycie energii, gdy radio komórkowe jest włączone. Jest to wpis wielowartościowy, po jednym dla każdej siły sygnału (brak sygnału, słaby, umiarkowany, silny). 1,2 mA Niektóre radia zwiększają moc, gdy szukają stacji bazowej 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ść, będzie ona używana dla wszystkich mocy. Jeśli podasz 2 wartości, pierwsza zostanie użyta w przypadku braku sygnału, druga – w przypadku wszystkich innych sił sygnału itd.
bluetooth.controller.idle Średni pobór prądu (mA) przez kontroler Bluetooth w stanie bezczynności. - Te wartości nie są szacowane, ale pochodzą z karty danych kontrolera. Jeśli jest kilka stanów odbioru lub transmisji, obliczana jest średnia z tych stanów. Dodatkowo system zbiera teraz dane dotyczące skanowania Bluetooth Low Energy (LE) i Bluetooth.

Android 7.0 i nowsze nie używają już wartości mocy Bluetooth w przypadku bluetooth.active (używanej podczas odtwarzania dźwięku przez Bluetooth A2DP) i bluetooth.on (używanej, gdy Bluetooth jest włączony, ale nieaktywny).
bluetooth.controller.rx Średni pobór prądu (mA) przez kontroler Bluetooth podczas odbierania. -
bluetooth.controller.tx Średni pobór prądu (mA) przez kontroler Bluetooth podczas transmisji. -
bluetooth.controller.voltage Średnie napięcie robocze (mV) kontrolera Bluetooth. -
modem.controller.sleep Średni pobór prądu (mA) przez kontroler modemu w trybie uśpienia. 0 mA Te wartości nie są szacowane, ale pochodzą z arkusza danych kontrolera. Jeśli jest kilka stanów odbioru, obliczana jest ich średnia. Jeśli jest wiele stanów transmisji, podanie wartości dla każdego z nich jest obsługiwane od Androida 9.
modem.controller.idle Średni pobór prądu (mA) przez kontroler modemu w stanie bezczynności. -
modem.controller.rx Średni pobór prądu (mA) przez kontroler modemu podczas odbierania. -
modem.controller.tx Średni pobór prądu (mA) przez kontroler modemu podczas transmisji przy różnych poziomach mocy RF. Jest to wpis z wieloma wartościami, po jednej dla każdego poziomu mocy transmisji. 100 mA, 200 mA, 300 mA, 400 mA, 500 mA
modem.controller.voltage Średnie napięcie robocze (mV) kontrolera modemu. -
wifi.controller.idle Średni pobór prądu (mA) przez kontroler Wi-Fi w trybie bezczynności. - Te wartości nie są szacowane, ale pochodzą z karty danych kontrolera. Jeśli jest kilka stanów odbioru lub transmisji, obliczana jest średnia z tych stanów.
wifi.controller.rx Średni pobór prądu (mA) kontrolera Wi-Fi podczas odbierania. -
wifi.controller.tx Średni pobór prądu (mA) przez kontroler Wi-Fi podczas transmisji. -
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, 1 000 000 KHz, 1 500 000 KHz Liczba i kolejność wpisów muszą odpowiadać wpisom mA w pliku cpu.active.
cpu.idle Całkowita moc pobierana przez system, gdy procesory (i układ SoC) są w stanie uśpienia systemu. 3 mA -
cpu.awake Dodatkowa moc zużywana, gdy procesory są w stanie bezczynności (pętla bezczynności jądra); system nie jest w stanie zawieszenia. 50 mA Platforma może mieć więcej niż 1 stan bezczynności o różnym poziomie zużycia energii. Wybierz reprezentatywny stan bezczynności na dłuższe okresy bezczynności harmonogramu (kilka milisekund). Sprawdź wykres zasilania na urządzeniu pomiarowym i wybierz próbki, w których procesor zużywa najmniej energii. Odrzuć próbki o wyższych wartościach, w których procesor przestał być w stanie bezczynności.
cpu.active Dodatkowa moc zużywana przez procesory przy różnych prędkościach. 100 mA, 120 mA, 140 mA, 160 mA, 200 mA Wartość reprezentuje moc zużywaną przez szyny procesora podczas pracy z różnymi prędkościami. Ustaw maksymalną szybkość w jądrze na każdą z dozwolonych szybkości i ustal szybkość procesora na tym poziomie. Liczba i kolejność wpisów odpowiadają liczbie i kolejności wpisów w cpu.speeds.
cpu.clusters.cores Liczba rdzeni w każdym klastrze procesorów. 4, 2 Wymagane tylko w przypadku urządzeń z heterogeniczną architekturą procesora. Liczba wpisów i ich kolejność powinny być zgodne z liczbą wpisów klastra w przypadku atrybutów cpu.active i cpu.speeds. Pierwszy wpis reprezentuje liczbę rdzeni procesora w klastrze 0, drugi wpis reprezentuje liczbę rdzeni procesora w klastrze 1 itd.
battery.capacity Całkowita pojemność baterii w mAh. 3000 mAh -

Skanowanie Bluetooth Low Energy (LE)

W przypadku urządzeń z Androidem 7.0 system zbiera dane dotyczące skanowania w trybie Low Energy (LE) i ruchu sieciowego Bluetooth (np. RFCOMM i L2CAP) oraz przypisuje te działania do aplikacji, która je zainicjowała. Skanowanie Bluetooth jest przypisywane do aplikacji, która je zainicjowała, ale skanowanie wsadowe nie jest (zamiast tego jest przypisywane do aplikacji Bluetooth). W przypadku aplikacji, która skanuje przez N milisekund, koszt skanowania wynosi N milisekund czasu odbioru i N milisekund czasu transmisji. Cały pozostały czas kontrolera jest przypisywany do ruchu sieciowego lub aplikacji Bluetooth.