コンテナでインテル® VTune™ プロファイラーを実行

インテル® VTune™ プロファイラーと Docker* イメージをインストールし、同じコンテナで実行されるネイティブまたは Java* アプリケーションをプロファイルします。

必要条件

コンテナでインテル® VTune™ プロファイラーをインストールして実行

インテル® oneAPI ベース・ツールキットがプレインストールされた Docker* イメージを使用する場合、これらの手順は必要ありません。

  1. Docker* コンテナにインテル® VTune™ プロファイラーのコマンドライン・インターフェイスをインストールします。

    [[2] Custom installation] > [[3] Change components to install] を選択して、コンテナ環境に必要がないコンポーネントのインストールを解除します。
    [[3] Graphical user interface][[4] Platform Profiler] を選択します。

  2. インストール後、インテル® VTune™ プロファイラーの環境変数を設定します。例えば、インテル® oneAPI ベース・ツールキットのインテル® VTune™ プロファイラーでは以下を実行します。

    container> source /opt/intel/oneapi/vtune/version/env/vars.sh

コンテナをターゲットとした解析を実行

以下に示すターゲットと解析タイプを使用して、コンテナで実行されるターゲットの解析を設定します。

ターゲットタイプ

解析タイプ

  • アプリケーションを起動
  • プロセスにアタッチ
  • システムをプロファイル (Java* ターゲットではサポートされません)

  • ユーザーモード・サンプリングによるホットスポット
  • ハードウェア・イベントベース・サンプリングによるホットスポット
  • マイクロアーキテクチャー全般

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

vtune -collect <analysis_type> [options] -- [container_target]

次に例を示します。

container> vtune -collect hotspots -knob sampling-mode=hw -- /home/samples/matrix

ホストターゲットの解析を実行

以下に示すターゲットと解析タイプを使用して、ホストで実行されるターゲットの解析を設定します。

ターゲットタイプ

解析タイプ

  • プロセスにアタッチ
  • システムをプロファイル (Java* ターゲットではサポートされません)

  • ユーザーモード・サンプリングによるホットスポット
  • ハードウェア・イベントベース・サンプリングによるホットスポット
  • マイクロアーキテクチャー全般

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

vtune -collect <analysis_type> [options] -- [host_target]

次に例を示します。

container> vtune -collect hotspots -target-process java

既知の問題:

  1. 問題: 関数レベルの解析はデフォルトでは利用できません。インテル® VTune™ プロファイラーは、サンプルをユーザーのターゲット・アプリケーションのバイナリーに対応付けますが、ホストのバイナリーをコンテナから参照できないため、関数を解決できません。

    解決策: バイナリーを含むマウントされたホストフォルダーで Docker* コンテナを実行し、vtune コマンドの引数に検索ディレクトリーを指定します。

  2. 問題: インテル® VTune™ プロファイラーがコンテナ内では root ユーザーで実行され、ホスト上のアプリケーションは非 root ユーザーで実行されます。その結果、「ターゲットとインテル® VTune™ プロファイラーを同じユーザーで実行する必要があります」というエラーメッセージが出力され実行は失敗します。

    解決策: 同じユーザーがコンテナでインテル® VTune™ プロファイラーを実行し、コンテナ外でターゲット・アプリケーションを実行していることを確認してください。

関連情報