モバイルデバイスでのCPU使用率の測定

モバイルアプリやゲームのCPU使用率を測定したいと思ったことが

アプリやゲームの基本的な目標は、ユーザーに素晴らしい体験を提供することです。 ゲームの場合、1秒あたりのフレーム数はこれの良い尺度です。 あなたのゲームが良い経験を提供することができないとき、あなたはあなたのシステムでのリソース使用量について自然に興味があります。 ゲームがCPU/GPUまたはメモリ帯域幅のいずれかによってボトルネックになっている可能性があります。 これら三つの基本的な領域は、パフォーマンスの問題を特定するために探しているときの最初の停止です。 AndroidデバイスとiOSデバイスの両方でCPU使用率を測定する方法を見てみましょう。

定義

CPU負荷とは何ですか?
CPU使用率を測定する方法を議論する前に、CPU負荷の定義が何を意味するのかを知ることが重要です。 CPU負荷は、二つのサンプリング間隔の間にCPUによって行われた作業量を測定します。 最新のデバイスには、CPUを使用するソフトウェアの計算上の必要性に応じて異なる周波数で動作できるマルチコアCpuがあります。 その結果、低い周波数で完全にロードされたCPUは、周波数が増加した場合でも、オペレーティングシステムからより多くのジョブを受け入れることがで

重要な観察は、CPUの負荷がCPUの動作点に依存するという事実です。 500Mhzで100%ロードされたCPUは、周波数が1GHzに増加した場合にのみ50%ロードされます。 そのため、CPU負荷をCPUの最大動作周波数に正規化する必要があります。<8971><5311>ANDROIDとiOSの両方で様々な方法でCPU負荷を得ることができます。 CPUの負荷は100%以上である場合もあります。 たとえば、4つのコアを持つiOSデバイスでは、CPU負荷は最大400%(CPUコアごとに100%の負荷)になる可能性があります。

正規化されたCPU使用率とは何ですか?
上記のようなCPU負荷メトリックが各CPUコアの最大動作点を使用して再計算されると、cpu使用率が正規化されます。 私はこれが少し複雑であることを知っているので、私はこれを以下に説明する例を持っています、

クアッドコアCPUを持つデバイスで次のシナリオを考500MHz

オンになっていた2つのコアの動作ポイント正規化されたcpu使用率は次のように計算されます,

  • 使用可能な最大CPUサイクル–4*1GHz–4GHz
  • アプリが使用可能なCPUサイクル 1GHz/4GHz=25%または0.25
  • 正規化されたCPU使用率– 50% * (0.25) = 12.5%

プロファイリングツールを使用するときは、常にこの質問をすると便利です。 正規化されたCPU使用率を測定していますか? CPU使用率が正規化されると、2つのデバイス間で比較できるため、重要です。 CPU負荷は簡単な比較には適していません。

CPU負荷の定義を理解したので、AndroidとiOSでこれを測定できるさまざまな方法をいくつか見てみましょう

Android
開発者として、アプリやゲームのAndroidでCPU使用率を測定できる多くの方法があります。

“Top”コマンド
アプリのCPU使用率をすばやく処理する最も簡単な方法は、”top”コマンドを使用することです。 AndroidはLinuxに基づいており、Linuxでも利用可能なコマンドラインのグッズのいくつかが付属しています。

デバイスにADBアクセスできる場合は、次のようなコマンドを実行してCPU使用率を確認できます。

コマンドADB shell top-m5-d1は以下のような結果を:

ABD Shell-screen

上記のように、パッケージcomが表示されます。キローsubwa+はCPUの142%を消費しました。 これはCPU負荷であり、正規化されていないことに再び注目する価値があります。 それにもかかわらず、同じデバイスでこの番号を使用して、CPU使用率を理解することはできます。 この方法は、デバイス上で実行されているすべてのアプリでCPU使用率を取得するのにも便利です。

Android Profiler
アプリのソースコードにアクセスできる場合は、Android Studio profilerを使用して詳細なCPU使用率メトリックを取得できます。 Android StudioでCPU Profilerを使用するには、ここの公式のandroidドキュメントに従うことができます。

GameBench tools
GameBench toolsは、開発者でなくても、任意のアプリやゲームのAndroidデバイス上で正規化されたCPU使用率を取得する最も簡単な方法を提供します。 このツールは、CPU使用率に加えて、CPUコアの状態(CPUコアがオンラインであったかどうか)とその頻度も報告します。 たとえば、CPUコア周波数のグラフの例は以下のようになります。

上のグラフは、8コアCPUを搭載したモバイルチップセットを示しており、一目でCPU周波数が最初の25秒ほどクロックアップされ、Android OSがすべてのコアをより低い周波数にクロックアップすることを決定したことがわかります。 この場合、プロファイルされたアプリはディスクからリソースをロードしていたため、すべてのコアをより高い周波数で25秒間動作させなければなりま モバイルデバイスのCPU使用率を試してみたい場合は、以下のGameBench Proトライアルにサインアップして、簡単に試してみてください。

連絡を取る

iOS
iOS開発者の場合、CPU使用率を測定する最も簡単な方法は、Xcodeツールセットを使用することです。

以下のAppleツールが特に便利であることがわかりました:

  1. Xcodeデバッグゲージ
  2. Instruments
    1. Time Profiler
    2. Activity Monitor

Xcode Debug Gauges
iOSアプリのソースコードにアクセスできる場合、Debug Gaugesはアプリのリソース消費を迅速かつ簡単に取得する方法です。 デバッグゲージの使用に関する詳細は、こちらをご覧ください。 あなたがする必要があるのは、リソースの使用法に関する非常に有用な情報を得るために接続されたデバイス上でアプリを起動することです。 IOSではCPU負荷のみが報告されることに注意してください(正規化されていません)。

Instruments
時には、より詳細なCPUプロファイリング情報にアクセスする必要があり、これがInstrumentsが助けることができる場所です。 計測器には、アプリのパフォーマンスを測定するのに役立ついくつかの異なる計測器があります。

Time profiler
time profiler計測器は、システムのCpu上で実行されているプロセスの低オーバーヘッド、時間ベースのサンプリングを実行できます。 使用することができ、この楽器の異なるビューのカップルがあります。 CPU戦略使用率ビューを使用して、特定の期間のコア使用率を比較できます。 デバイスの各コアのワークロードを表示し、予期しない動作を見つけることができます。 スレッド戦略ビューを使用して、作業を実行するときのアプリのスレッドの使用状況を調べることができます。 ボトルネックを理解するためにはソースコードが必要であることは注目に値します。

アクティビティモニタ
アクティビティモニタは、プロファイルされているアプリの正常性指標を提供できます。 この計測器は、デバイス上で実行されているすべてのアプリのCPUとメモリの使用量を表示することができます。 これは、長時間実行されるテストを行い、アプリ/ゲームのパフォーマンスパラメータを測定したい場合に便利です。

GameBench Tools
当社のツールを使用すると、ソースコードにアクセスできない場合でも、アプリのCPU使用率を測定できます。 これは、デバッグ情報を使用せずにリリース候補をプロファイルする場合に特に便利です。 また、私たちのツールを使用すると、XcodeとInstrumentsを使用する上記の方法はOSXを実行するMac上でのみ動作するため、windows PCからCPU使用率を測定することができます。

コア周波数チャート

ここで注意すべき重要な点の1つは、GameBenchによって報告されるCPU使用率がコアの数によって異なることです。 各コアは100%を使用することが許可されているため、6コアシステムの場合、最大CPU負荷は600%になる可能性があります。

ここで注意すべき重要な点は、GameBenchによって報告されるCPU使用率はコアの数によって異なることです。 各コアは100%を使用することが許可されているため、6コアシステムの場合、最大CPU負荷は600%になる可能性があります。

あなたは何を探すべきですか?

iOS
Cpu負荷が高い持続的な値は、より慎重に見る必要があります(コンテキストのスクリーンショットを使用して画面上で何が起こっていたかを理解 現代のCPUの作業方法のために、CPU負荷の増加は通常、CPUが次に高い動作周波数に入るようにトリガされます。 次の動作ポイントに移行すると、CPU負荷の値が低くなります。 アプリケーションが一貫してCPUをロードしている場合、OSは最大値に達するまで動作ポイントを増加させ続けます。 これは望ましくない動作であり、調査する必要があります。

許可された最大値の25%を超えるCPU使用率の値も確認する必要があります。 したがって、6コアシステムでは、150%を超える持続的なCPU負荷は通常問題を指しており、Time Profiler instrumentを使用してこれをより詳細に調査することができます。

Cpu負荷が高い短いバーストは問題ありません。

Android
これは、テストに使用されるデバイスのコアの数によって異なります。 クアッドコアシステムでは、25%を超える値は、一つのコアがアプリケーションに完全に利用されていることを意味し、その結果、これは短いバーストでは問題ありませんが、CPU使用率が高いと考えられます。 一貫したCPU使用率>25%はさらなる調査が必要です。

アプリで使用されるすべてのスレッドは、提供された情報を可能な限り最良の方法で使用するために”名前”を付ける必要があります。 “軽い”スレッドのいずれかが予期せずより多くのCPUサイクルを消費しているかどうかを確認することは常に良い考えです

次は何ですか?

GameBench Pro toolsによって収集された指標についての詳細を知りたい場合は、以下のテーマに関するいくつかのブログ記事を見つけることができます。

パフォーマンスメトリックス

Leave a Reply