インテル® VTune™ プロファイラー・ユーザーガイド

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

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

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

ホストで実行される vtune コマンドを使用したリモートデータ収集は、target-system オプションがコマンドラインに追加されることを除いて、ターゲット上のネイティブ収集に類似します。

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

Android* デバイス上で解析を実行するには、次の操作を行います。

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

  2. リモート Android* システムで実行されているアプリケーションの <pid> または <名前> を調べます。例えば、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 or 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> は、hotspotsuarch-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. オプション: 別のコンソールウィンドウから収集を行っている間に、pauseresume コマンドを送信することもできます。次に例を示します。

    host>./vtune -C pause -r tachyon_r001
    host>./vtune -C resume -r tachyon_r001
  6. 解析期間を指定しない場合、Ctrl + C キーを押すか、別のコンソールから stop コマンドを送信して、解析を停止できます。

    vtune -r tachyon_r001 -C stop

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

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

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

この例では、ターゲットの 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=true knob を使用します。次に例を示します。

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

カスタム解析

-collect-with オプションでインテル® VTune™ プロファイラーのカスタムモード・サンプリングとトレース (runss)、またはイベントベース・サンプリング (runsa) 解析を実行します (デフォルト以外の設定オプションを使用)。例えば、カスタム・イベントベース・サンプリング解析を行うには、-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=? <target_application>

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

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

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

関連情報