måling af CPU-brug i MOBILE enheder

hvis du nogensinde har ønsket at måle CPU-brugen af en mobilapp eller et spil, og du sidder fast, så læs videre for at finde ud af, hvordan dette kan opnås.

det grundlæggende mål for enhver app eller spil er at give en fantastisk oplevelse til brugeren. Sekund et godt mål for dette. Når dit spil ikke er i stand til at give en god oplevelse, er du naturligvis nysgerrig efter ressourceforbrug i dit system. Det kan sandsynligvis være, at spillet er flaskehalset af enten CPU/ GPU eller hukommelsesbåndbredde. Disse tre grundlæggende områder er det første stop, når man ser på at identificere ydelsesproblemer. Lad os se på, hvordan man måler CPU-brug i både Android-og iOS-enheder.

definitioner

Hvad er CPU-belastning?
før vi kan diskutere metoder til måling af CPU-forbruget, er det vigtigt at vide, hvad vi mener med definitionen CPU-belastning. CPU-belastning måler mængden af arbejde udført af en CPU mellem to prøveudtagningsintervaller. Moderne enheder har multi-core CPU ‘er, der kan fungere ved forskellige frekvenser afhængigt af computerens beregningsbehov ved hjælp af CPU’ en. Som et resultat kan en CPU, der er fuldt indlæst med en lavere frekvens, stadig acceptere flere job fra operativsystemet, hvis frekvensen øges.

en nøgleobservation at gøre er, at CPU-belastningen afhænger af CPU ‘ ens driftspunkt. En CPU, der er 100% indlæst ved 500 mm, vil kun være 50% indlæst, hvis frekvensen øges til 1 GB. Så der er behov for at normalisere CPU-belastningen til CPU ‘ ens maksimale driftsfrekvens.

CPU-belastning kan opnås både til Android og iOS på forskellige måder. CPU-belastning kan være mere end 100%. For eksempel i en iOS-enhed med 4 kerner kan CPU-belastningen gå op til 400% (100% belastning for hver CPU-kerne).

Hvad er normaliseret CPU-brug?
når CPU-Belastningsmetrikken som nævnt ovenfor beregnes igen ved hjælp af det maksimale driftspunkt for hver CPU-kerne, får vi normaliseret CPU-brug. Jeg ved, at dette er lidt komplekst, så jeg har et eksempel, der forklarer dette nedenfor,

lad os overveje følgende scenario på en enhed, der har en Firekernet CPU

  • CPU-belastning på grund af appen – 50%
  • antal kerner, der er online – 2 ud af 4
  • CPU – kernernes maksimale driftspunkt – 1 GH
  • driftspunkter for de to kerner, der var på-500 MH

den normaliserede CPU-brug beregnes som følger,

  • maksimale tilgængelige CPU-cyklusser – 4 * 1 GH-4 GH
  • tilgængelige CPU-cyklusser, når appen kørte-500 MH * 2 = 1 GH
  • procentdel af de samlede CPU-cyklusser, der er tilgængelige under prøveudtagning – 1 GH / 4 GH = 25% eller 0,25
  • normaliseret CPU-brug– 50% * (0.25) = 12.5%

når du bruger et profileringsværktøj, er det altid nyttigt at stille dette spørgsmål. Måler jeg normaliseret CPU-brug? Det er vigtigt, fordi når CPU-brugen normaliseres, kan den sammenlignes på tværs af to enheder. CPU-belastning egner sig ikke til lette sammenligninger.

nu hvor vi har forstået definitionerne af CPU-belastning, lad os se på nogle af de forskellige måder, hvorpå vi kan måle dette i Android og iOS

Android
som udvikler er der mange måder, hvorpå du kan måle CPU-brug i Android til din app eller dit spil.

“Top” kommando
den nemmeste måde at hurtigt få et håndtag på din apps CPU-brug er at bruge kommandoen “top”. Android er baseret på Android, Den leveres med nogle af kommandolinjens godbidder, der også er tilgængelige i Android.

hvis du har ADB-adgang til enheden, kan du køre en kommando som følgende for at se på CPU-brug,

kommandoen ADB shell top – m 5 – D 1 producerer et resultat som nedenfor:

ABD Shell-skærm

ovenfor kan du se, at pakken com.kiloo.142% af CPU ‘ en. Det er værd at bemærke igen, at dette er CPU-belastning og ikke normaliseres. Ikke desto mindre kan du stadig bruge dette nummer på den samme enhed for at få en forståelse af CPU-brugen. Denne metode er også nyttig til at få CPU-brug på enhver app, der kører på enheden.

Android Profiler
hvis du har adgang til appens kildekode, kan du bruge Android Studio profiler til at få detaljerede CPU-Brugsmålinger. Du kan følge den officielle Android-dokumentation her for at bruge CPU-Profiler i Android Studio.

GameBench tools
GameBench tools giver den nemmeste måde at hente normaliseret CPU-brug på en Android-enhed til enhver app eller spil, selvom du ikke er udvikleren. Ud over CPU-brugen rapporterer værktøjerne også CPU-Kernetilstande (om en CPU-kerne var online) og også deres frekvenser. For eksempel ser et eksempeldiagram for CPU-kernefrekvenser ud som nedenfor,

ovenstående diagram viser et mobilt chipsæt med en 8-Core CPU, og med et blik kan du se, at CPU-frekvensen blev klokket op i de første 25 sekunder eller deromkring, og derefter besluttede Android OS at ur alle kernerne til lavere frekvenser. I dette tilfælde indlæste den profilerede app ressourcer fra disken og måtte derfor betjene alle kernerne med en højere frekvens i 25 sekunder. Hvis du gerne vil prøve CPU-brug til din mobile enhed, skal du tilmelde dig en GameBench Pro-prøve nedenfor og gå hurtigt.

kom i kontakt

iOS
hvis du er en iOS-udvikler, er den nemmeste måde at måle CPU-brug på ved hjælp af værktøjssættet.

vi har fundet følgende Apple-værktøjer til at være særligt nyttige:

  1. instrumenter
    1. Time Profiler
    2. Aktivitetsmonitor

hvis du har adgang til kildekoden til din iOS-app, er Fejlfindingsmålere en hurtig og nem måde at få ressourceforbrug af din app på. Find ud af flere detaljer om brug af Fejlfindingsmålere her. Alt du skal gøre er at starte appen på den tilsluttede enhed for at få meget nyttige oplysninger om ressourcebrug. Bemærk, at kun CPU-belastning rapporteres i iOS (ikke normaliseret).

instrumenter
nogle gange har du brug for adgang til mere detaljerede CPU-Profileringsoplysninger, og det er her instrumenter kan hjælpe. Instrumenter har et par forskellige instrumenter, der kan hjælpe med at måle effektiviteten af din app.

Time Profiler
time profiler instrumentet kan udføre lav-overhead, tidsbaseret prøveudtagning af processer, der kører på systemets CPU ‘ er. Der er et par forskellige synspunkter i dette instrument, der kan bruges. CPU – strategibrugsvisningen kan bruges til at sammenligne kerneforbrug over givne tidsperioder. Du kan se arbejdsbyrden på hver kerne af enheden og få øje på enhver uventet opførsel. Trådstrategivisningen kan bruges til at undersøge din apps brug af tråde, når du udfører arbejde. Det er værd at bemærke, at kildekoden er nødvendig for at forstå flaskehalsene.

Aktivitetsmonitor
aktivitetsmonitoren kan give en god sundhedsindikator for den app, der profileres. Dette instrument kan vise CPU og hukommelsesforbrug af alle apps, der kører på enheden. Dette er nyttigt, hvis du gerne vil have en langvarig test og måle præstationsparametre for appen/spillet.

GameBench Tools
vores værktøjer giver dig mulighed for at måle CPU-brugen til din app, selvom du ikke har adgang til kildekoden. Dette er især nyttigt, hvis du gerne vil profilere en frigivelseskandidat uden nogen fejlfindingsoplysninger. Vores værktøjer giver dig også mulighed for at måle CPU-brug fra en pc, hvilket kan være meget nyttigt, da de ovennævnte måder at bruge kode og instrumenter kun fungerer på en Mac, der kører.

 Kernefrekvensdiagram

et vigtigt punkt at bemærke her er, at CPU-brugen rapporteret af GameBench varierer baseret på antallet af kerner. Hver kerne får lov til at bruge 100%, og så for et seks-core system kan den maksimale CPU-belastning komme til 600%.

et vigtigt punkt at bemærke her er, at CPU-brugen rapporteret af GameBench varierer baseret på antallet af kerner. Hver kerne får lov til at bruge 100%, og så for et seks-core system kan den maksimale CPU-belastning komme til 600%.

Hvad skal du kigge efter?

iOS
vedvarende værdier med høj CPU-belastning skal undersøges mere omhyggeligt (forstå, hvad der skete på skærmen ved hjælp af skærmbillederne til kontekst), da dette sandsynligvis vil føre til øget batteridrænning. På grund af den måde, moderne CPU ‘s arbejde, vil en stigning i CPU-belastning normalt udløse CPU’ en til at gå ind i den næste højere driftsfrekvens. Overgangen til det næste driftspunkt skal resultere i en lavere CPU-belastningsværdi. Hvis en applikation konsekvent indlæser CPU ‘ en, fortsætter operativsystemet med at øge driftspunktet, indtil det når den maksimale værdi. Dette er ikke ønskelig adfærd og bør undersøges.

du skal også se på CPU-brugsværdier, der er mere end 25% af det maksimalt tilladte. Så i et 6-kernesystem peger enhver vedvarende CPU-belastning mere end 150% normalt på et problem, og du vil måske bruge Time Profiler instrument til at undersøge dette mere detaljeret.

korte udbrud af høj CPU-belastning er fine.

Android
dette afhænger af antallet af kerner i enheden, der bruges til test. På et firekernesystem ville en værdi større end 25% betyde, at en kerne er blevet fuldt udnyttet til applikationen og som et resultat ville blive betragtet som høj CPU-brug, selvom dette er fint i korte bursts. Konsekvent CPU-brug > 25% har brug for yderligere undersøgelse.

alle tråde, der bruges i appen, skal “navngives” for at bruge oplysningerne på den bedst mulige måde. Det er altid en god ide at kontrollere, om nogen af de “lette” tråde uventet bruger flere CPU-cyklusser

hvad næste?

hvis du er interesseret i at lære mere om de målinger, der er indsamlet af GameBench Pro-værktøjerne, kan du finde flere blogindlæg om emnet nedenfor.

Performance Metrics Blogs

Leave a Reply