コマンドラインから Android* ターゲットを解析

インテル® VTune™ プロファイラーは、ホストシステムから (リモートモードで) コマンドライン・インターフェイス (vtune) を実行してリモート Android* アプリケーションのデータを収集し、解析結果をコマンドラインまたは GUI からローカルで表示できます。

Android* システム上で次の解析タイプを実行します。

Android* システムのパフォーマンス解析を設定して実行

ホスト上で動作する vtune コマンドを使用するリモートデータ収集は、target-system オプションがコマンドラインに追加される点を除き、ターゲット上でのネイティブ収集と同じです。

必要条件: ターゲット Android* システムとアプリケーションの解析準備を行います。

Android* デバイス上で解析を実行するには:

  1. ターゲットデバイスでアプリケーションを起動します。

  2. リモート Android* システムで実行されるアプリケーションの <プロセス id> または <名前> を探します。例えば、adb シェルで ps コマンドを使用できます。

    adb shell ps ... root 2956 2 0 0 c1263c67 00000000 S kworker/u:3 u0_a34 8485 174 770232 54260 ffffffff 00000000 R com.intel.tbb.example.tachyon shell 8502 235 2148 1028 00000000 b76bcf46 R ps ...
  3. オプション: 複数の Android* デバイスがある場合は、ANDROID_SERIAL 環境変数を設定して解析対象のデバイスを指定します。次に例を示します。

    export ANDROID_SERIAL= emulator-5554 または export ANDROID_SERIAL=10.23.235.47:5555

  4. 開発ホスト上で vtune を実行してデータを収集します。

    デフォルトでは、vtune ユーティリティーは以下の場所に配置されます。

    解析を実行するには次のコマンドを実行します。

    host>./vtune -target-system=android:deviceName -<action> <analysis_type> [-duration <duration_value>][-r <result_path>] [-search-dir=<search_dir>] [-source-search-dir=<source_search_dir>] - <target_application>

    説明:

    • deviceName は Android* デバイス名です。例: Medfield2B3E703C。デバイス名を指定しないと、インテル® VTune™ プロファイラーは adb で指定されるデフォルトのデバイスを使用します。収集前に ANDROID_SERIAL 環境変数を設定している場合、デバイス名を指定する必要はありません。
    • <action> は解析を行うアクション (collectcollect-with) です。

    • <analysis_type> は、hotspots、uarch-exploration などの事前定義された解析タイプです。

    • <duration_value> は秒単位の持続時間です。

    • <result_path> は結果を保存するディレクトリーのパス/名前です。

    • <search_dir> は Android* アプリケーションで使用するバイナリーファイルの検索パスです。

    • <source_search_dir> は Android* アプリケーションで使用するソースファイルの検索パスです。

    • <target_application> は解析するアプリケーションです。コマンドライン・オプションは解析タイプごとに異なります。
      • 解析するアプリケーション (Android* 上で実行されるネイティブ Linux* アプリケーション) やスクリプトを指定するには、アプリケーションまたはホストシステム上のスクリプトへのパスを入力します。

        このターゲットタイプは、Android* アプリケーションのホットスポット解析ではサポートされません。

      • 解析する Android* アプリケーション・パッケージを指定するには、リモートデバイス上にインストールされている Android* パッケージの名前を入力します。
      • 特定のプロセスにアタッチして解析を行うには、-target-process コマンドを使用してアプリケーションのプロセス名を指定するか、-target-pid コマンドでアプリケーションのプロセス ID を指定します。
      • Android* システム全体をプロファイルする場合、ターゲット・アプリケーションは指定しません。

        システム全体のプロファイルは、root 化されたデバイスでのみ実行できます。

  5. オプション: 別のコンソール・ウィンドウから収集を行っている間に、pause と resume コマンドを送信することもできます。次に例を示します。

    host>./vtune -C pause -r tachyon_r001
    host>./vtune -C resume -r tachyon_r001
  6. 解析の持続時間を省略した場合、ホスト開発システムの別のコンソールで、Ctrl + C を押すか stop コマンドを送信して解析を停止できます。

    vtune -r tachyon_r001 -C stop

GUI で選択されている解析設定のコマンドラインを自動生成するには、インテル® VTune™ プロファイラーのグラフィカル・インターフェイスで [コマンドライン] オプションを使用します。

ホットスポット解析 (ユーザーモード・サンプリング)

このモードでは以下を行えます。

この例は、ターゲットの Android* システムでホットスポット解析を実行します。

host>./vtune -collect hotspots -target-system=android -r tachyon_r@@@ -- com.intel.tbb.example.tachyon

イベントベース・サンプリング解析

このモードでは以下を行えます。

Android* システムでは次のイベントベース・サンプリング解析がサポートされます。

システム全体のイベントベース・サンプリングで JIT された Java* 関数をサンプルに関連付けるには、次の 2 つの方法があります。

例 1: マイクロアーキテクチャー全般解析

この例では、指定する Android* パッケージを起動して、第 4 世代インテル® Core™ プロセッサーで実行される典型的なクライアント・アプリケーションの解析に必要な完全なイベントリストを収集します。

host>./vtune -collect uarch-exploration -target-system=android -r tachyon_r@@@ -target-process com.intel.tbb.example.tachyon

例 2: コールスタック解析

デフォルトでインテル® VTune™ プロファイラーは、ハードウェア・イベントベース・サンプリングのスタック情報を収集しません。コールスタック解析を有効にするには、enable-stack-collection=trueknob を使用します。次に例を示します。

host>./vtune -collect hotspots -knob sampling-mode=hw -knob enable-stack-collection=true -target-system=android -r tachyon_r@@@ -target-process com.intel.tbb.example.tachyon

例 3: システム全体のデータを収集

ターゲット・アプリケーションと Android* システムで実行されるすべてのプロセスのパフォーマンスを解析するには、--durationオプションを使用して解析ターゲットを指定してはなりません。

host>./vtune -collect hotspots -knob sampling-mode=hw -target-system=android -duration=60 -r system_wide_r@@@

例 4: 非接続モード収集

この例は、USB ケーブルやネットワークからデバイスを切断した後に起動される、Android* システム上のアプリケーションのホットスポット解析を設定します。

host>./vtune --collect hotspots --target-system=android -unplugged-mode -r quadrant_r@@@ --target-process com.intel.fluid

カスタム解析

カスタム・ユーザーモード・サンプリングとトレース (runss)、またはイベントベースのサンプリング (runsa) 解析を実行するようにインテル® VTune™ プロファイラーを設定し、デフォルトの解析オプション以外を使用するには、-collect-with オプションを使用します。例えば、カスタム・イベントベース・サンプリング解析を行うには、-collect-with オプションを使用して、-knob event-config オプションで必要なイベントカウンターを指定します。

host>./vtune -collect-with runsa -target-process com.intel.tbb.example.tachyon -r system_wide_r001 -knob collection-detail=stack-sampling [-event-mux] -knob event-config=CPU_CLK_UNHALTED.REF_TSC:sa=1800000,CPU_CLK_UNHALTED

ターゲットの PMU で使用可能なイベントリストを表示するには、次のコマンドを実行します。

vtune -collect-with <collector> -target-system=android:deviceName -knob event-config=?

プロセッサーがサポートする任意のパフォーマンス・モニタリング・ユニット (PMU) のカウンターを使用できます。さらに、一度に複数のカウンターを有効にできます。各プロセッサーは、同時に取得できるカウンターの数が決められています。しかし、-event-mux オプションを使用すると、プロセッサーがサポートするよりも多くのイベントを取得できます。これは、プロセッサーの利用可能なカウンターで指定したイベントをラウンドロビンします。

通常、事前定義されたカウンターセットと解析タイプを使用することを推奨します。特定のカウンターを直接使用するのは上級者向けです。一部のカウンター名は、カウンターで提供される解析範囲と正確に一致しないことがあります。

これらのカウンターを収集した後、インテル® VTune™ プロファイラーに結果をインポートして、マイクロアーキテクチャー全般データを調査します。

関連情報