mätning av CPU-användning i mobila enheter

om du någonsin har velat mäta CPU-användningen av en mobilapp eller ett spel och du har fastnat, läs vidare för att ta reda på hur detta kan uppnås.

det grundläggande målet för någon app eller spel är att ge en stor upplevelse för användaren. För spel är ramar per sekund ett bra mått på detta. När ditt spel inte kan ge en bra upplevelse är du naturligtvis nyfiken på resursanvändning i ditt system. Det kan sannolikt vara att spelet är flaskhalsat av antingen CPU/ GPU eller minnesbandbredd. Dessa tre grundläggande områden är det första stoppet när man vill identifiera prestandaproblem. Låt oss titta på hur man mäter CPU-användning i både Android-och iOS-enheter.

definitioner

vad är CPU-belastning?
innan vi kan diskutera metoder för att mäta CPU-användningen är det viktigt att veta vad vi menar med definitionen CPU-belastning. CPU-belastning mäter mängden arbete som utförs av en CPU mellan två provtagningsintervall. Moderna enheter har flera kärnprocessorer som kan fungera vid olika frekvenser beroende på beräkningsbehovet för programvaran med hjälp av CPU. Som ett resultat kan en CPU som är fullastad med lägre frekvens fortfarande acceptera fler jobb från operativsystemet om frekvensen ökas.

en viktig observation att göra är det faktum att CPU-belastningen beror på CPU: s driftpunkt. En CPU som är 100% laddad vid 500 Mhz kommer endast att vara 50% laddad om frekvensen ökas till 1 GHz. Så det finns ett behov av att normalisera CPU-belastningen till CPU: s maximala driftsfrekvens.

CPU-belastning kan erhållas både för Android och iOS på olika sätt. CPU-belastningen kan vara mer än 100%. Till exempel i en iOS-enhet med 4 kärnor kan CPU-belastningen gå upp till 400% (100% belastning för varje CPU-kärna).

Vad är normaliserad CPU-användning?
när CPU-Belastningsmetriken som nämnts ovan beräknas om med den maximala driftpunkten för varje CPU-kärna får vi normaliserad CPU-användning. Jag vet att det här är lite komplicerat, så jag har ett exempel som förklarar detta nedan,

låt oss överväga följande scenario på en enhet som har en fyrkärnig CPU

  • CPU-belastning på grund av appen – 50%
  • antal kärnor som är online – 2 av 4
  • maximal driftpunkt för CPU – kärnorna – 1 GHz
  • driftpunkter för de två kärnorna som var på-500 MHz

den normaliserade CPU-användningen beräknas enligt följande,

  • maximalt tillgängliga CPU-cykler-4 * 1 GHz-4 GHz
  • tillgängliga CPU-cykler när appen kördes-500 Mhz * 2 = 1 GHz
  • procentandel av totala CPU-cykler tillgängliga under provtagning – 1GHz / 4Ghz = 25% eller 0,25
  • normaliserad CPU-användning– 50% * (0.25) = 12.5%

när du använder något profileringsverktyg är det alltid användbart att ställa den här frågan. Mäter jag normaliserad CPU-användning? Det är viktigt eftersom när CPU-användningen normaliseras kan den jämföras över två enheter. CPU-belastning lämpar sig inte för enkla jämförelser.

nu när vi har förstått definitionerna av CPU-belastning, låt oss titta på några av de olika sätten på vilka vi kan mäta detta i Android och iOS

Android
som utvecklare finns det många sätt på vilka du kan mäta CPU-användning i Android för din app eller ditt spel.

“Top” – kommandot
det enklaste sättet att snabbt ta hand om din apps CPU-användning är att använda kommandot “top”. Android är baserat på Linux, det kommer med några av kommandoradsgodisarna som också finns i Linux.

om du har ADB-åtkomst till enheten kan du köra ett kommando som följande för att titta på CPU-användning,

kommandot ADB shell top-m 5-d 1 ger ett resultat som nedan:

ABD Shell-skärm

ovan kan du se att paketet com.kiloo.subwa + förbrukade 142% av CPU. Det är värt att notera igen att detta är CPU-belastning och inte normaliseras. Ändå kan du fortfarande använda detta nummer på samma enhet för att få en förståelse för CPU-användning. Denna metod är också användbar för att få CPU-användning på alla appar som körs på enheten.

Android Profiler
om du har tillgång till källkoden för appen kan du använda Android Studio profiler för att få detaljerad CPU-användningsstatistik. Du kan följa den officiella Android-dokumentationen här för att använda CPU-Profiler i Android Studio.

GameBench tools
GameBench tools ger det enklaste sättet att hämta normaliserad CPU-användning på en Android-enhet för alla appar eller spel även om du inte är utvecklaren. Förutom CPU-användningen rapporterar verktygen också CPU-Kärntillstånd (om en CPU-kärna var online) och även deras frekvenser. Till exempel ser ett exempeldiagram för CPU-Kärnfrekvenser ut som nedan,

ovanstående diagram visar en mobil chipset med en 8-kärnig CPU och med en blick kan du se att CPU-frekvensen klockades upp under de första 25 sekunderna eller så och sedan bestämde Android OS att klocka alla kärnor till lägre frekvenser. I det här fallet laddade den profilerade appen resurser från disken och som ett resultat var tvungen att använda alla kärnor med högre frekvens i 25 sekunder. Om du vill prova CPU-användning för din mobila enhet, Registrera dig för en GameBench Pro rättegång nedan och har en snabb go.

kontakta

iOS
om du är en iOS-utvecklare är det enklaste sättet att mäta CPU-användning genom att använda Xcode-verktygssatsen.

vi har funnit att följande Apple-verktyg är särskilt användbara:

  1. Xcode Debug mätare
  2. instrument
    1. tid Profiler
    2. Aktivitetsmonitor

Xcode Debug mätare
om du har tillgång till källkoden för din iOS-app, då Debug mätare är ett snabbt och enkelt sätt att få resursförbrukning av din app. Läs mer om hur du använder Felsökningsmätarna här. Allt du behöver göra är att starta appen på den anslutna enheten för att få mycket användbar information om resursanvändningar. Observera att endast CPU-belastning rapporteras i iOS (inte normaliserad).

instrument
ibland behöver du tillgång till mer detaljerad CPU-Profileringsinformation och det är här instrument kan hjälpa till. Instrument har ett par olika instrument som kan hjälpa till med att mäta prestanda för din app.

Time Profiler
time profiler instrumentet kan utföra låg overhead, tidsbaserad provtagning av processer som körs på systemets processorer. Det finns ett par olika vyer i detta instrument som kan användas. CPU-strategianvändningsvyn kan användas för att jämföra kärnanvändning under givna tidsperioder. Du kan se arbetsbelastningen på varje kärna på enheten och upptäcka eventuella oväntade beteenden. Trådstrategivyn kan användas för att undersöka appens användning av trådar när du utför arbete. Det är värt att notera att källkod behövs för att förstå flaskhalsarna.

Aktivitetsmonitor
Aktivitetsmonitorn kan ge en bra hälsoindikator för att appen ska profileras. Detta instrument kan visa CPU och minnesanvändning av alla appar som körs på enheten. Detta är användbart om du vill ha ett långvarigt test och mäta prestandaparametrar för appen/spelet.

GameBench Tools
våra verktyg låter dig mäta CPU-användningen för din app även om du inte har tillgång till källkoden. Detta är särskilt användbart om du vill profilera en release-kandidat utan någon felsökningsinformation. Våra verktyg låter dig också mäta CPU-användning från en windows-dator som kan vara mycket användbar eftersom de ovan nämnda sätten att använda Xcode och instrument bara fungerar på en Mac som kör OSX.

Kärnfrekvensdiagram

en viktig punkt att notera här är att CPU-användningen som rapporterats av GameBench varierar beroende på antalet kärnor. Varje kärna får använda 100% och så för ett sexkärnigt system kan den maximala CPU-belastningen komma till 600%.

en viktig punkt att notera här är att CPU-användningen som rapporterats av GameBench varierar beroende på antalet kärnor. Varje kärna får använda 100% och så för ett sexkärnigt system kan den maximala CPU-belastningen komma till 600%.

Vad ska du leta efter?

iOS
hållbara värden för hög CPU-belastning måste ses mer noggrant (förstå vad som hände på skärmen med hjälp av skärmdumparna för sammanhang) eftersom detta sannolikt kommer att leda till ökad batteriladdning. På grund av hur modern CPU fungerar, kommer en ökning av CPU-belastningen vanligtvis att utlösa CPU att gå in i nästa högre driftsfrekvens. Övergången till nästa driftpunkt bör resultera i ett lägre CPU-belastningsvärde. Om en applikation konsekvent laddar CPU: n fortsätter operativsystemet att öka driftpunkten tills den når det maximala värdet. Detta är inte önskvärt beteende och bör undersökas.

du bör också titta på CPU-Användningsvärden som är mer än 25% av det maximala tillåtna. Så i ett 6-kärnsystem pekar varje långvarig CPU-belastning mer än 150% vanligtvis på ett problem och du kanske vill använda Time Profiler instrument för att undersöka detta mer detaljerat.

korta skurar med hög CPU-belastning är bra.

Android
detta beror på antalet kärnor i enheten som används för testning. På ett quad-core-system skulle ett värde större än 25% innebära att en kärna har utnyttjats fullt ut för applikationen och som ett resultat skulle anses vara hög CPU-användning även om detta är bra i korta skurar. Konsekvent CPU-användning > 25% behöver ytterligare undersökning.

alla trådar som används i appen ska “namnges” för att använda informationen på bästa möjliga sätt. Det är alltid bra att kontrollera om någon av de “lätta” trådarna oväntat förbrukar fler CPU-cykler

vad nästa?

om du är intresserad av att lära dig mer om de mätvärden som samlats in av GameBench Pro-verktygen kan du hitta flera blogginlägg om ämnet nedan.

Resultatmått Bloggar

Leave a Reply