pomiar zużycia procesora w urządzeniach mobilnych

jeśli kiedykolwiek chciałeś zmierzyć zużycie procesora w aplikacji lub grze mobilnej i utknąłeś, przeczytaj dalej, aby dowiedzieć się, jak można to osiągnąć.

podstawowym celem każdej aplikacji lub gry jest zapewnienie użytkownikowi wspaniałych wrażeń. W przypadku gier, klatek na sekundę jest dobrą miarą tego. Gdy gra nie jest w stanie zapewnić dobre wrażenia, jesteś naturalnie ciekawy wykorzystania zasobów w systemie. Może być prawdopodobne, że gra jest wąskim gardłem przez przepustowość procesora/ GPU lub pamięci. Te trzy podstawowe obszary są pierwszym punktem, gdy chcemy zidentyfikować problemy z wydajnością. Przyjrzyjmy się, jak zmierzyć zużycie procesora na urządzeniach z Androidem i iOS.

definicje

jakie jest obciążenie procesora?
zanim będziemy mogli omówić metody pomiaru zużycia procesora, ważne jest, aby wiedzieć, co rozumiemy przez definicję obciążenia procesora. CPU load mierzy ilość pracy wykonanej przez CPU między dwoma interwałami próbkowania. Nowoczesne urządzenia mają wielordzeniowe procesory, które mogą pracować na różnych częstotliwościach w zależności od potrzeb obliczeniowych oprogramowania wykorzystującego procesor. W rezultacie procesor, który jest w pełni załadowany z niższą częstotliwością, może nadal przyjmować więcej zadań z systemu operacyjnego, jeśli częstotliwość zostanie zwiększona.

kluczową obserwacją jest fakt, że obciążenie procesora zależy od punktu pracy procesora. Procesor, który jest 100% załadowany przy 500 Mhz, będzie ładowany tylko 50%, jeśli częstotliwość zostanie zwiększona do 1GHz. Istnieje więc potrzeba normalizacji obciążenia procesora do maksymalnej częstotliwości roboczej procesora.

obciążenie procesora można uzyskać zarówno dla Androida, jak i iOS na wiele sposobów. Obciążenie Procesora może wynosić więcej niż 100%. Na przykład w urządzeniu z systemem iOS z 4 rdzeniami obciążenie Procesora może wzrosnąć do 400% (100% obciążenia dla każdego rdzenia procesora).

Co To jest znormalizowane użycie procesora?
gdy metryka obciążenia procesora, jak wspomniano powyżej, jest ponownie obliczana przy użyciu maksymalnego punktu roboczego każdego rdzenia procesora, otrzymujemy znormalizowane użycie procesora. Wiem, że to trochę skomplikowane, więc mam przykład, który wyjaśnia to poniżej,

rozważmy następujący scenariusz na urządzeniu z czterordzeniowym procesorem

  • wykorzystanie PROCESORA z powodu aplikacji-50%
  • liczba podłączonych rdzeni – 2 z 4
  • Maksymalna częstotliwość robocza rdzeni procesora – 1 GHz
  • częstotliwości robocze dwóch włączonych rdzeni rdzenie – 500 Mhz

znormalizowane użycie procesora oblicza się w następujący sposób,

  • maksymalne dostępne cykle procesora – 4 * 1 GHz – 4 GHz
  • dostępne cykle procesora, gdy aplikacja był uruchomiony – 500 Mhz * 2 = 1 GHz
  • procent całkowitych cykli procesora dostępnych podczas próbkowania-1Ghz / 4Ghz = 25% lub 0,25
  • znormalizowane zużycie procesora– 50% * (0.25) = 12.5%

kiedy używasz dowolnego narzędzia do profilowania, zawsze warto zadać to pytanie. Czy mierzę znormalizowane zużycie procesora? Jest to ważne, ponieważ gdy zużycie procesora jest znormalizowane, można je porównać na dwóch urządzeniach. Obciążenie procesora nie nadaje się do łatwych porównań.

teraz, gdy zrozumieliśmy definicje obciążenia procesora, spójrzmy na niektóre z różnych sposobów, w których możemy zmierzyć to w Androidzie i iOS

Android
jako programista, istnieje wiele sposobów, za pomocą których można zmierzyć użycie procesora w Androidzie dla swojej aplikacji lub gry.

polecenie”Top”
najprostszym sposobem na szybkie opanowanie użycia procesora aplikacji jest użycie polecenia “top”. Android jest oparty na Linuksie, zawiera niektóre gadżety wiersza poleceń dostępne również w Linuksie.

jeśli masz dostęp ADB do urządzenia, możesz uruchomić następujące polecenie, aby sprawdzić użycie procesora,

polecenie adb shell top-M 5-d 1 daje wynik podobny do poniższego:

ABD Shell-screen

powyżej widać, że pakiet com.kiloo.subwa + zużywa 142% CPU. Warto ponownie zauważyć, że jest to obciążenie procesora i nie jest znormalizowane. Niemniej jednak nadal możesz użyć tego numeru na tym samym urządzeniu, aby zrozumieć użycie procesora. Ta metoda jest również przydatna, aby uzyskać użycie procesora w dowolnej aplikacji uruchomionej na urządzeniu.

Android Profiler
jeśli masz dostęp do kodu źródłowego aplikacji, możesz użyć Android Studio profiler, aby uzyskać szczegółowe wskaźniki użycia procesora. Możesz postępować zgodnie z oficjalną dokumentacją Androida tutaj, aby korzystać z CPU Profiler w Android Studio.

narzędzia GameBench
narzędzia GameBench zapewniają najprostszy możliwy sposób pobierania znormalizowanego użycia procesora na urządzeniu z Androidem dla dowolnej aplikacji lub gry, nawet jeśli nie jesteś programistą. Oprócz użycia procesora, narzędzia raportują również stany rdzenia procesora (czy rdzeń PROCESORA był online), a także ich częstotliwości. Na przykład przykładowy wykres częstotliwości rdzenia procesora wygląda poniżej,

powyższy wykres pokazuje mobilny chipset z 8-rdzeniowym procesorem i jednym spojrzeniem widać, że częstotliwość procesora była taktowana przez pierwsze 25 sekund, a następnie system operacyjny Android postanowił zegara wszystkie rdzenie na niższe częstotliwości. W tym przypadku profilowana aplikacja ładowała zasoby z dysku i w rezultacie musiała obsługiwać wszystkie rdzenie z wyższą częstotliwością przez 25 sekund. Jeśli chcesz wypróbować użycie Procesora na swoim urządzeniu mobilnym, Zarejestruj się na wersję próbną GameBench Pro poniżej i zrób szybki krok.

skontaktuj się

iOS
jeśli jesteś programistą iOS, najprostszym sposobem pomiaru zużycia procesora jest użycie zestawu narzędzi Xcode.

odkryliśmy, że następujące narzędzia Apple są szczególnie przydatne:

  1. Mierniki debugowania Xcode
  2. Instrumenty
    1. Time Profiler
    2. Monitor Aktywności

wskaźniki debugowania Xcode
jeśli masz dostęp do kodu źródłowego aplikacji na iOS, wskaźniki debugowania są szybkim i łatwym sposobem na zużycie zasobów aplikacji. Więcej informacji na temat używania wskaźników debugowania można znaleźć tutaj. Wszystko, co musisz zrobić, to uruchomić aplikację na podłączonym urządzeniu, aby uzyskać bardzo przydatne informacje na temat wykorzystania zasobów. Należy pamiętać, że tylko obciążenie procesora jest zgłaszane w systemie iOS (nie znormalizowane).

Instrumenty
czasami potrzebujesz dostępu do bardziej szczegółowych informacji o profilowaniu procesora i tutaj instrumenty mogą pomóc. Instrumenty mają kilka różnych instrumentów, które mogą pomóc w mierzeniu wydajności aplikacji.

Time Profiler
przyrząd time profiler może wykonywać niskie narzuty, oparte na czasie próbkowanie procesów uruchomionych na procesorach systemu. Istnieje kilka różnych widoków w tym instrumencie, które można wykorzystać. Widok użycia strategii PROCESORA może być użyty do porównania użycia rdzenia w określonych okresach czasu. Możesz wyświetlić obciążenie każdego rdzenia urządzenia i wykryć nieoczekiwane zachowanie. Widok strategia wątków może być używany do sprawdzania wykorzystania wątków w aplikacji podczas wykonywania pracy. Warto zauważyć, że kod źródłowy jest potrzebny do zrozumienia wąskich gardeł.

Monitor Aktywności
Monitor aktywności może zapewnić dobry wskaźnik stanu profilowanej aplikacji. Ten instrument może pokazywać użycie procesora i pamięci wszystkich aplikacji uruchomionych na urządzeniu. Jest to przydatne, jeśli chcesz przeprowadzić długotrwały test i zmierzyć parametry wydajności aplikacji/gry.

narzędzia GameBench
nasze narzędzia pozwalają zmierzyć zużycie procesora dla Twojej aplikacji, nawet jeśli nie masz dostępu do kodu źródłowego. Jest to szczególnie przydatne, jeśli chcesz profilować release candidate bez żadnych informacji o debugowaniu. Ponadto, nasze narzędzia pozwalają zmierzyć zużycie procesora z komputera z systemem windows, co może być bardzo przydatne, ponieważ wyżej wymienione sposoby korzystania z Xcode i instrumentów działają tylko na komputerze Mac z systemem OSX.

jednym z ważnych punktów jest to, że zużycie procesora zgłaszane przez GameBench różni się w zależności od liczby rdzeni. Każdy rdzeń może używać 100%, więc dla systemu sześciordzeniowego maksymalne obciążenie Procesora może osiągnąć 600%.

warto zauważyć, że zużycie procesora zgłaszane przez GameBench różni się w zależności od liczby rdzeni. Każdy rdzeń może używać 100%, więc dla systemu sześciordzeniowego maksymalne obciążenie Procesora może osiągnąć 600%.

czego powinieneś szukać?

iOS
długotrwałe wartości dużego obciążenia procesora należy przyjrzeć się dokładniej (zrozumieć, co działo się na ekranie za pomocą zrzutów ekranu dla kontekstu), ponieważ najprawdopodobniej doprowadzi to do zwiększonego zużycia baterii. Ze względu na sposób pracy nowoczesnego procesora, wzrost obciążenia procesora zwykle powoduje, że procesor przechodzi do następnej wyższej częstotliwości roboczej. Przejście do następnego punktu roboczego powinno skutkować niższym obciążeniem procesora. Jeśli aplikacja konsekwentnie ładuje procesor, System operacyjny nadal zwiększa punkt pracy, aż osiągnie maksymalną wartość. Nie jest to pożądane zachowanie i należy je zbadać.

powinieneś również przyjrzeć się wartościom użycia procesora, które są większe niż 25% maksymalnej dozwolonej wartości. Tak więc w systemie 6 rdzeniowym, każde długotrwałe obciążenie procesora większe niż 150% zwykle wskazuje na problem i możesz użyć Time Profiler instrument, aby zbadać to bardziej szczegółowo.

krótkie serie dużego obciążenia procesora są w porządku.

Android
to zależy od liczby rdzeni w urządzeniu używanym do testowania. W systemie czterordzeniowym wartość większa niż 25% oznaczałaby, że jeden rdzeń został w pełni wykorzystany do aplikacji, w wyniku czego byłby uważany za wysokie zużycie procesora, chociaż jest to w porządku w krótkich seriach. Spójne użycie procesora > 25% wymaga dalszych badań.

wszystkie wątki używane w aplikacji powinny być “nazwane”, aby jak najlepiej wykorzystać dostarczone informacje. Zawsze dobrze jest sprawdzić, czy któryś z “lekkich” wątków niespodziewanie zużywa więcej cykli procesora

co dalej?

jeśli chcesz dowiedzieć się więcej o metrykach zebranych przez GameBench Pro tools, możesz znaleźć kilka postów na blogu na ten temat poniżej.

Statystyki Wydajności

Leave a Reply