het meten van CPU-gebruik in mobiele apparaten
Als u ooit het CPU-gebruik van een mobiele app of game hebt willen meten en u zit vast, lees dan verder om erachter te komen hoe dit kan worden bereikt.
het fundamentele doel van een app of spel is om een geweldige ervaring te bieden aan de gebruiker. Voor games, frames per seconde is een goede maatstaf van dit. Wanneer je game niet in staat is om een goede ervaring te bieden, ben je natuurlijk nieuwsgierig naar het gebruik van resources in je systeem. Het kan waarschijnlijk zijn dat het spel wordt knelpunt door ofwel de CPU/ GPU of geheugen bandbreedte. Deze drie fundamentele gebieden zijn de eerste stop bij het zoeken naar prestaties problemen te identificeren. Laten we eens kijken naar hoe te meten CPU-gebruik in zowel Android en iOS-apparaten.
definities
Wat is CPU-belasting?
voordat we methoden voor het meten van het CPU-gebruik kunnen bespreken, is het belangrijk om te weten wat we bedoelen met de definitie CPU-belasting. CPU belasting meet de hoeveelheid werk gedaan door een CPU tussen twee sampling intervallen. Moderne apparaten hebben multi-core CPU ‘ s die kunnen werken op verschillende frequenties, afhankelijk van de computationele behoefte van de software met behulp van de CPU. Als gevolg hiervan kan een CPU die volledig is geladen met een lagere frequentie nog steeds meer taken van het besturingssysteem accepteren als de frequentie wordt verhoogd.
een belangrijke opmerking is het feit dat de CPU-belasting afhankelijk is van het werkpunt van de CPU. Een CPU die 100% geladen is op 500 Mhz zal slechts 50% geladen zijn als de frequentie wordt verhoogd naar 1GHz. Er is dus een noodzaak om de CPU-belasting te normaliseren tot de maximale werkfrequentie van de CPU.
CPU-belasting kan op verschillende manieren worden verkregen voor zowel Android als iOS. CPU-belasting kan meer dan 100% zijn. Bijvoorbeeld in een iOS-apparaat met 4 cores kan de CPU-belasting oplopen tot 400% (100% belasting voor elke CPU-core).
Wat is genormaliseerd CPU-gebruik?
wanneer de CPU-belasting metriek zoals hierboven vermeld opnieuw wordt berekend met behulp van het maximale werkpunt van elke CPU-kern krijgen we genormaliseerd CPU-gebruik. Ik weet dat dit een beetje ingewikkeld, dus ik heb een voorbeeld dat dit verklaart hieronder
Laten we het volgende scenario op een apparaat dat beschikt over een Quad-Core CPU
- CPU-Belasting, omdat de app – 50%
- Aantal kernen die zijn online – 2 van de 4
- Maximale punt van de CPU-Kernen – 1 GHz
- punten van de twee kernen die op 500 MHz
De genormaliseerde CPU-Gebruik wordt als volgt berekend,
- Maximum Beschikbare CPU-Cycli – 4 * 1 GHz – 4 GHz
- Beschikbare CPU-Cycli wanneer de app liep-500 Mhz * 2 = 1 GHz
- Percentage van de totale beschikbare CPU-cycli tijdens bemonstering-1Ghz / 4Ghz = 25% of 0,25
- genormaliseerd CPU-gebruik– 50% * (0.25) = 12.5%
wanneer u een profiling tool gebruikt, is het altijd handig om deze vraag te stellen. Meet ik genormaliseerd CPU-gebruik? Het is belangrijk omdat wanneer CPU-gebruik is genormaliseerd, het kan worden vergeleken over twee apparaten. CPU-belasting leent zich niet voor eenvoudige vergelijkingen.
nu we de definities van CPU-belasting hebben begrepen, laten we eens kijken naar enkele van de verschillende manieren waarop we dit kunnen meten in Android en iOS
Android
als ontwikkelaar, zijn er vele manieren waarop u CPU-gebruik kunt meten in Android voor uw app of spel.
& amp; quot; Top & amp; quot; commando
de makkelijkste manier om snel grip te krijgen op uw apps CPU gebruik is door het & amp; quot; Top & amp; quot; commando. Android is gebaseerd op Linux, het wordt geleverd met een aantal van de command line goodies ook beschikbaar in Linux.
als u ADB-toegang tot het apparaat hebt, kunt u een commando als het volgende uitvoeren om te kijken naar het CPU-gebruik,
het commando ADB shell top-m 5-d 1 produceert een resultaat zoals hieronder:
hierboven kunt u zien dat het pakket com.kiloo.subwa + verbruikt 142% van de CPU. Het is vermeldenswaard nogmaals dat dit CPU-belasting en is niet genormaliseerd. Niettemin, u kunt nog steeds gebruik maken van dit nummer op hetzelfde apparaat om een begrip van CPU-gebruik te krijgen. Deze methode is ook handig om CPU-gebruik te krijgen op elke app die op het apparaat draait.
Android Profiler
als u toegang hebt tot de broncode van de App, kunt u de Android Studio profiler gebruiken om gedetailleerde CPU-gebruiksstatistieken te krijgen. U kunt de officiële Android documentatie hier volgen om de CPU Profiler te gebruiken in Android Studio.
GameBench tools
GameBench tools bieden de makkelijkste manier om genormaliseerd CPU-gebruik op een Android-apparaat op te halen voor elke app of game, zelfs als u niet de ontwikkelaar bent. Naast het gebruik van de CPU, de tools rapporteren ook CPU Core Staten (of een CPU Core was online) en ook hun frequenties. Bijvoorbeeld, een voorbeeld grafiek voor CPU Core frequenties ziet er als hieronder,
de bovenstaande grafiek toont een mobiele chipset met een 8 Core CPU en met een blik kunt u zien dat de CPU frequentie werd geklokt voor de eerste 25 seconden of zo en dan het Android OS besloten om alle kernen klok naar lagere frequenties. In dit geval, de geprofileerde app werd het laden van middelen van de schijf en als gevolg daarvan, moest alle kernen werken op een hogere frequentie voor 25 seconden. Als u wilt proberen CPU-gebruik voor uw mobiele apparaat, meld u aan voor een GameBench Pro proef hieronder en hebben een snelle go.
neem contact op
iOS
Als u een iOS-ontwikkelaar bent, kunt u het CPU-gebruik eenvoudig meten met de Xcode-toolset.
we hebben de volgende Apple tools bijzonder nuttig gevonden:
- Xcode Debug meters
- instrumenten
- Tijdsprofiel
- activiteitsmonitor
Xcode Debug meters
als u toegang hebt tot de broncode van uw iOS-app, dan zijn de Debug Meters een snelle en eenvoudige manier om het brongebruik van uw app te krijgen. Meer informatie over het gebruik van de debug meters vindt u hier. Het enige wat u hoeft te doen is de lancering van de app op het aangesloten apparaat om zeer nuttige informatie over het gebruik van bronnen te krijgen. Houd er rekening mee dat alleen CPU belasting wordt gerapporteerd in iOS (niet genormaliseerd).
instrumenten
soms hebt u toegang nodig tot meer gedetailleerde CPU-Profileringsinformatie en dit is waar instrumenten kunnen helpen. Instrumenten hebben een aantal verschillende instrumenten die kunnen helpen bij het meten van de prestaties van uw app.
Time Profiler
het time profiler-instrument kan lage overhead, op tijd gebaseerde bemonstering uitvoeren van processen die op de CPU ‘ s van het systeem worden uitgevoerd. Er zijn een paar verschillende standpunten in dit instrument dat kan worden gebruikt. De CPU strategy usage view kan worden gebruikt om core-gebruik over bepaalde perioden te vergelijken. U kunt de werkbelasting op elke kern van het apparaat te bekijken en spot eventuele onverwachte gedrag. De threads strategy view kan worden gebruikt om het gebruik van threads van uw app te onderzoeken bij het uitvoeren van werk. Het is vermeldenswaard dat broncode nodig is om de knelpunten te begrijpen.
Activity Monitor
de activity monitor kan een goede gezondheidsindicator geven van de app die wordt geprofileerd. Dit instrument kan CPU-en geheugengebruik van alle apps die op het apparaat worden uitgevoerd tonen. Dit is handig als u een langdurige test wilt hebben en prestatieparameters wilt meten voor de app/game.
GameBench Tools
met onze tools kunt u het CPU-gebruik voor uw app meten, zelfs als u geen toegang hebt tot de broncode. Dit is vooral handig als je een release candidate wilt profileren zonder enige debug informatie. Ook, onze tools kunt u het CPU-gebruik te meten van een windows-PC die zeer nuttig kan zijn als de hierboven genoemde manieren van het gebruik van Xcode en instrumenten alleen werken op een Mac die OSX draait.
een belangrijk punt om hier op te merken is dat het CPU-gebruik gemeld door GameBench varieert op basis van het aantal kernen. Elke kern mag 100% gebruiken en dus voor een zes-core systeem kan de maximale CPU belasting 600% bereiken.
een belangrijk punt om op te merken is dat het CPU-gebruik dat door GameBench wordt gerapporteerd, varieert afhankelijk van het aantal kernen. Elke kern mag 100% gebruiken en dus voor een zes-core systeem kan de maximale CPU belasting 600% bereiken.
wat moet u zoeken?
iOS
aanhoudende waarden van hoge CPU-belasting moeten zorgvuldiger worden bekeken (begrijp wat er gebeurde op het scherm met behulp van de schermafbeeldingen voor context) omdat dit hoogstwaarschijnlijk zal leiden tot meer batterijverbruik. Vanwege de manier waarop moderne CPU ‘ s werken, zal een toename van de CPU belasting meestal leiden tot de CPU om te gaan naar de volgende hogere operationele frequentie. De overgang naar het volgende bedrijfspunt moet resulteren in een lagere CPU belastingwaarde. Als een toepassing constant de CPU laadt, blijft het besturingssysteem het werkpunt verhogen totdat het de maximale waarde bereikt. Dit is niet wenselijk gedrag en moet worden onderzocht.
u moet ook kijken naar CPU-gebruikswaarden die meer dan 25% van het toegestane maximum bedragen. Dus in een 6 core systeem, elke aanhoudende CPU belasting meer dan 150% wijst meestal op een probleem en je zou willen Time Profiler instrument gebruiken om dit in meer detail te onderzoeken.
korte uitbarstingen van hoge CPU-belasting zijn prima.
Android
dit is afhankelijk van het aantal kernen in het apparaat dat Voor de test wordt gebruikt. Op een quad-core systeem, een waarde groter dan 25% zou betekenen dat een kern volledig is gebruikt voor de toepassing en als gevolg daarvan zou worden beschouwd als hoge CPU-gebruik, hoewel dit prima in korte uitbarstingen. Consistent CPU-gebruik > 25% moet verder worden onderzocht.
alle threads die in de app worden gebruikt, moeten “named” zijn om de verstrekte informatie zo goed mogelijk te gebruiken. Het is altijd een goed idee om te controleren of een van de “light” threads onverwacht meer CPU cycli
verbruikt wat nu?
als u meer wilt weten over de metrics die zijn verzameld door de GameBench Pro tools, kunt u hieronder verschillende blogberichten over het onderwerp vinden.
Performance Metrics Blogs
Leave a Reply