Pomiar mocy komponentu

Zużycie energii przez poszczególne komponenty można określić, porównując bieżące natężenie pochodzące z parametru urządzenia, gdy komponent jest w żądanym stanie (np. włączony, aktywny, skanowany) oraz gdy jest wyłączony. Zmierz średni chwilowy prąd pobierany przez urządzenie w temperaturze pokojowej napięcia znamionowego z użyciem zewnętrznego monitora zasilania, takiego jak zasilacz sieciowy lub narzędzi do monitorowania baterii (np. Monsoon Solution Inc. Power Monitor i Power Tool).

Producenci często podają informacje o bieżącym zużyciu danego komponentu. Użyj tych informacji, jeśli dokładnie odzwierciedlają natężenie prądu pobranego z baterii urządzenia w praktyk. Sprawdź jednak wartości podane przez producenta, zanim zastosujesz je na urządzeniu profil zasilania.

Kontroluj zużycie energii

Podczas pomiaru upewnij się, że urządzenie nie jest podłączone do zewnętrznego źródła ładowania, jako połączenie USB z hostem programistycznym używanym podczas uruchamiania Android Debug Bridge (adb). Urządzenie może pobierać prąd z hosta, zmniejszając w ten sposób pomiary na baterii. Unikaj USB połączeń On-The-Go (OTG), ponieważ urządzenie OTG może pobierać prąd z testowanego urządzenia.

Z wyłączeniem mierzonego komponentu system powinien działać ze stałym poziomem mocy aby uniknąć niedokładności pomiarów spowodowanych zmianami innych komponentów. Systemowy Działania, które mogą wprowadzać niepożądane zmiany w pomiarach mocy, to m.in.:

  • Aktywność związana z odbieraniem, przesyłaniem i skanowaniem przez sieć komórkową oraz Wi-Fi i Bluetooth. Kiedy nie mierzy energii radiowej komórki, ustaw urządzenie w trybie samolotowym i włącz Wi-Fi lub Bluetooth jako odpowiednie.
  • Włącz/wyłącz ekran. Kolory wyświetlane przy włączonym ekranie mogą wpływać na pobieranie energii w niektórych technologiach ekranów. Wyłącz ekran podczas pomiaru wartości komponentów innych niż ekran.
  • Zawieszenie/wznowienie systemu. Wyłączenie ekranu może spowodować zawieszenie systemu, umieszczanie części urządzenia w stanie niskiego zużycia energii lub wyłączenia. Może to mieć wpływ na zużycie energii przez mierzonego składnika i wprowadzać duże różnice w odczytach mocy, gdy system jest okresowo odczytywany wznowi wysyłanie alarmów itp. Aby uzyskać szczegółowe informacje, zapoznaj się z sekcją System sterowania zawiesić.
  • Procesory zmieniające szybkość i przechodzące lub zamykające stan bezczynności algorytmu szeregowania o niskim zużyciu energii. Podczas normalnego działania system często koryguje szybkość procesora, Rdzenie procesora i inne stany systemu, takie jak szybkość magistrali pamięci i napięcia szyn energetycznych związane z procesorami i pamięcią. Podczas testów te korekty wpływają na pomiar mocy:
    • Operacje skalowania szybkości procesora mogą zmniejszyć skalę skalowania zegara i napięcia w magistralach pamięci i innych podstawowych komponentów systemu.
    • Planowanie aktywności może mieć wpływ na procent czasu, jaki procesory mają w stanie bezczynności o niskim zużyciu energii. Informacje o tym, jak zapobiegać występowaniu tych korekt podczas testowania, znajdziesz w sekcji Kontrolowanie szybkości procesora.

Na przykład Jan Droid chce obliczyć screen.on dla urządzenia. On włącza tryb samolotowy na urządzeniu, uruchamia urządzenie w stabilnym stanie, wstrzymuje procesor stałą szybkością i używa częściowej blokady uśpienia, by zapobiec uśpieniu systemu. Następnie odwraca urządzenie Wyłączenie ekranu i wykona pomiar (200 mA). Następnie Jan co najmniej włącza ekran urządzenia. jasność i wykona kolejny pomiar (300 mA). Wartość screen.on to 100 mA (300–200).

Uwaga: w przypadku komponentów, które nie mają płaskiej fali zużycia prądu, gdy aktywnego (np. radia komórkowego lub Wi-Fi), mierz średni poziom prądu w czasie za pomocą zasilania oraz ich monitorowania.

W przypadku korzystania z zewnętrznego źródła zasilania zamiast baterii urządzenia system może zauważyć problemów spowodowanych niepodłączonym termistorem baterii lub zintegrowanymi stykami wskaźnika paliwa (np. odczytywanie temperatury baterii lub pozostałej pojemności baterii może spowodować wyłączenie jądra lub Androida ). Fałszywe baterie mogą przekazywać sygnały na termistorze lub stykiach wskaźnika paliwa, które przypominają temperaturę i stanu obciążenia dla normalnego systemu, a także może być źródłem przydatnych potencjalnych klientów podłączenia do zewnętrznych źródeł zasilania. Można również zmodyfikować system tak, aby ignorował nieprawidłowe dane z rozładowanej baterii.

Kontrolowanie zawieszenia systemu

W tej sekcji opisano, jak uniknąć stanu zawieszenia systemu, gdy nie ma on zakłócać działania systemu z innymi pomiarami i jak mierzyć pobór energii w stanie zawieszenia systemu, mierzyć skuteczność.

Zapobieganie zawieszaniu systemu

Zawieszenie systemu może powodować niepożądane różnice w pomiarach mocy i umieszczać komponenty systemu w stanach o małej mocy, które są nieodpowiednie do pomiaru aktywnego zużycia energii. Aby uniemożliwić systemowi zawieszenia przy wyłączonym ekranie, użyj tymczasowej częściowej blokady uśpienia. Podłącz kabel USB urządzenie do hosta programistycznego, a następnie uruchom to polecenie:

adb shell "echo temporary > /sys/power/wake_lock"

W trybie wake_lock wyłączenie ekranu nie powoduje zawieszenia systemu. (Zanim zaczniesz mierzyć zużycie energii, musisz odłączyć kabel USB od urządzenia).

Aby usunąć blokadę wybudzania:

adb shell "echo temporary > /sys/power/wake_unlock"

Pomiar zawieszenia systemu

Aby zmierzyć pobór mocy w stanie zawieszenia systemu, zmierz wartość cpu.idle w profilu zasilania. Przed pomiarem:

  • Usuń istniejące blokady uśpienia (w sposób opisany powyżej).
  • Ustaw urządzenie w trybie samolotowym, aby uniknąć równoczesnej aktywności przez radio komórkowe, co może działać na procesorze innym niż układ SOC, który jest kontrolowany przez zawieszenie systemu.
  • Aby sprawdzić, czy system jest w stanie zawieszenia:
    • Potwierdzenie bieżących odczytów ustabilizuje wartość. Odczyty powinny mieścić się w oczekiwanym zakresie zakres zużycia energii w stanie zawieszenia SOC oraz zużycie energii przez system komponenty, które pozostają zasilane (np. USB PHY).
    • Sprawdzam dane wyjściowe konsoli systemowej.
    • Monitorowanie stanu systemu na zewnątrz (np. wyłączenie diody LED, gdy nie jest w urządzeniu) zawiesić).

Kontroluj szybkość procesora

Aktywne procesory można połączyć w tryb online lub offline, napięcia (możliwe, że miało to również wpływ na szybkość magistrali pamięci i inne stany zasilania systemu), i może wprowadzać stany bezczynności o mniejszej mocy w pętli bezczynności jądra. Przy pomiarze różnych procesorów stanów zasilania profilu zasilania, unikaj wariancji poboru mocy przy pomiarze innych parametrów. W profilu zasilania zakładamy, że wszystkie procesory mają taką samą dostępną szybkość i charakter zasilania.

Przy pomiarze mocy procesora lub przy utrzymaniu jego stałej mocy w celu wykonania innych pomiarów liczbę procesorów połączonych ze stałą siecią (np. jeden procesor jest w trybie online, a pozostałe offline/podłączono od źródła zasilania). Pozostawienie wszystkich procesorów oprócz jednego w trybie planowania bezczynności może być akceptowalne wyników. Rezygnacja z platformy Androida za pomocą dodatku adb shell stop może zmniejszyć planowania aktywności.

W profilu zasilania musisz określić dostępne szybkości procesora dla urządzenia cpu.speeds. Aby zobaczyć listę dostępnych szybkości procesora, uruchom polecenie:

adb shell cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state

Prędkości te odpowiadają odpowiednim pomiarom mocy w wartości cpu.active.

W przypadku platform, na których liczba rdzeni połączonych w tryb online znacząco wpływa na zużycie energii, możesz może być konieczne zmodyfikowanie sterownika cpufreq lub zarządzania dla platformy. Obsługiwane przez większość platform sterować szybkością procesora za pomocą regulatora cpufreq przestrzeni użytkownika i używać interfejsów sysfs do ustawiania prędkość działania. Aby na przykład ustawić szybkość 200 MHz w systemie z 1 procesorem lub ze wszystkimi procesorami współużytkowanymi typową zasadą cpufreq, użyj konsoli systemowej lub powłoki adb, aby uruchomić następujące polecenia:

echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

Uwaga: dokładne polecenia różnią się w zależności od implementacji cpufreq platformy.

Te polecenia zapewniają, że nowa prędkość nie wykracza poza dozwolone granice, ustaw nową prędkość, a następnie wydrukuje szybkość działania procesora (do weryfikacji). Jeśli bieżący minimalna szybkość przed wykonaniem jest większa niż 200 000, może być konieczne odwrócenie kolejności z pierwszych 2 wierszy lub ponownie wykonać pierwszy wiersz, aby zmniejszyć minimalną prędkość przed ustawiając maksymalną prędkość.

Aby zmierzyć zużycie prądu przez procesor działający z różną prędkością, w konsoli systemowej umieść CPU w pętli związanej z CPU, używając polecenia:

# while true; do true; done

Wykonuj pomiar w trakcie wykonywania pętli.

Niektóre urządzenia mogą ograniczać maksymalną szybkość procesora podczas ograniczania temperatury z powodu zbyt dużej pomiaru temperatury (tzn. po okresach długotrwałego korzystania z procesorów z dużą prędkością). Zwróć uwagę na przez wykorzystanie danych wyjściowych z konsoli systemowej podczas wykonywania pomiarów lub przez sprawdzenie i logu jądra po zakończeniu pomiaru.

W przypadku wartości cpu.awake mierz energię zużywaną, gdy system nie jest zawieszać i nie wykonywać zadań. Procesor powinien być w bezczynnej pętli algorytmu szeregowania o niskim zużyciu energii , prawdopodobnie wykonując instrukcję ARM Wait For Event, lub w stanie niskiego zużycia energii specyficznego dla układu SOC. charakteryzujący się krótkim czasem oczekiwania, odpowiedni do użytku w stanie bezczynności.

W przypadku wartości cpu.active mierz energię, gdy system nie jest w trybie zawieszenia, który nie wykonuje zadań. Jeden procesor (zwykle główny) powinien uruchomić zadanie, a wszystkie inne procesory powinien być w stanie bezczynności.

Zmierz moc ekranu

Podczas pomiaru zasilania z ekranu upewnij się, że inne urządzenia są normalnie włączone, gdy ekran jest są też włączone. Jeśli na przykład ekran dotykowy i podświetlenie wyświetlacza byłyby normalnie włączone, przy włączonym ekranie, upewnij się, że podczas pomiaru są włączone urządzenia, aby uzyskać realistyczny przykład ekran po zużyciu energii.

Niektóre technologie wyświetlania różnią się zużyciem energii w zależności od wyświetlanych kolorów, powodując pomiary mocy mogą się znacznie różnić w zależności od tego, co wyświetla się na ekranie w momencie pomiar skuteczności. Podczas pomiaru upewnij się, że na ekranie wyświetla się coś, co jest naładowane do charakterystycznych cech realistycznego ekranu. Łącz się z całkowicie czarnym ekranem (który zużywa najmniejszą moc (w przypadku niektórych technologii) i cały biały ekran. Często wybierany jest widok harmonogramu w aplikacji Kalendarz, który zawiera elementy białe i inne niż białe.

Zmierz poziom naładowania ekranu przy minimalnej i maksymalnej jasności wyświetlacza/podświetlenia. Aby ustawić minimalną jasność:

  • Używanie interfejsu Androida (niezalecane). Wybierz Ustawienia > Jasność wyświetlacza ustaw suwak na minimalną jasność wyświetlacza. Interfejs Androida pozwala jednak na ustawienie jasności tylko na co najmniej 10–20% możliwej jasności panelu lub podświetlenia i nie pozwala na ustawianie tak niską jasność, że ekran może być niewidoczny bez większego wysiłku.
  • Użyj pliku sysfs (zalecane). Jeśli to możliwe, użyj pliku sysfs do sterowania poziom jasności panelu aż do minimalnej jasności wymaganej przez sprzęt.

Dodatkowo, jeśli plik sysfs platformy umożliwia włączenie panelu LCD, podświetlenia ekran dotykowy lub ekran dotykowy, użyj pliku do wykonywania pomiarów przy włączonym i wyłączonym ekranie. W przeciwnym razie ustaw częściową blokadę uśpienia, aby system nie uśpiał urządzenia, a następnie włącz i wyłącz ekran przyciskiem zasilania.

Pomiar mocy Wi-Fi

Wykonuj pomiary sieci Wi-Fi w sieci stosunkowo cichej. Unikaj wykonywania dodatkowych czynności przetwarzania dużych ilości ruchu związanego z transmisjami, który nie jest związany z mierzoną aktywnością.

Wartość wifi.on określa zużycie energii, gdy sieć Wi-Fi jest włączona, ale nie jest aktywnego transmitowania lub odbierania danych. Jest to często mierzona jako różnica między bieżącym pobieraniem w stan zawieszenia systemu (uśpienia) z włączoną lub wyłączoną siecią Wi-Fi.

Wartość wifi.scan to pomiar energii zużytej podczas skanowania sieci Wi-Fi w celu uzyskania dostępu pkt. Aplikacje mogą aktywować skanowanie Wi-Fi za pomocą klasy WifiManager startScan()Interfejs API. Możesz też otworzyć Ustawienia > sieć Wi-Fi działająca w punkcie dostępu skanuje co kilka sekund z wyraźnym skokiem zużycia energii, ale należy odjąć ekran tych pomiarów.

Uwaga: korzystaj z kontrolowanej konfiguracji (np. iperf), by generować odbieranie i transmisje w sieci. ruchu.