インテル® VTune™ プロファイラーと Docker* イメージをインストールし、同じコンテナで実行されるネイティブまたは Java* アプリケーションをプロファイルします。
Docker* イメージを設定するには、次の操作を行います。
インテル® VTune™ プロファイラーを同梱するインテル® oneAPI ベース・ツールキットがインストールされている場合、Docker* Hub リポジトリーから既存の Docker* イメージを取得できます。
host> image=amr-registry.caas.intel.com/oneapi/oneapi:base-dev-ubuntu18.04 host> docker pull "$image"
コンテナからのプロファイルを有効にし、すべてのホストプロセスを表示できるようにするには、次のように --pid=host を指定して Docker* イメージを実行します。
host> docker run --pid=host --cap-add=SYS_ADMIN --cap-add=SYS_PTRACE -it "$image"
ここで、SYS_ADMIN 値はハードウェア・イベントベース・サンプリング解析の実行を有効にし、SYS_PTRACE 値はユーザーモード・サンプリング解析を有効にします。
インテル® VTune™ プロファイラーがインストールされているコンテナで実行されるアプリケーションをプロファイルするには、次の操作を行います。
アプリケーションを実行中の Docker* コンテナにコピーします。次に例を示します。
host> docker cp /home/samples/matrix.tar 98fec14f0c08:/var/local
ここで、98fec14f0c08 はコンテナ ID です。
必要に応じて、コンテナでターゲットをコンパイルします。
インテル® oneAPI ベース・ツールキットがプレインストールされた Docker* イメージを使用する場合、これらの手順は必要ありません。
Docker* コンテナにインテル® VTune™ プロファイラーのコマンドライン・インターフェイスをインストールします。
[[2] Custom installation] > [[3] Change components to install] を選択して、コンテナ環境に必要がないコンポーネントのインストールを解除します。
[[3] Graphical user interface] と [[4] Platform Profiler] を選択します。
インストール後、インテル® VTune™ プロファイラーの環境変数を設定します。例えば、インテル® oneAPI ベース・ツールキットのインテル® VTune™ プロファイラーでは以下を実行します。
container> source /opt/intel/oneapi/vtune/version/env/vars.sh
以下に示すターゲットと解析タイプを使用して、コンテナで実行されるターゲットの解析を設定します。
ターゲットタイプ |
解析タイプ |
---|---|
|
|
解析を実行するには、次のコマンドを使用します。
vtune -collect <analysis_type> [options] -- [container_target]
次に例を示します。
container> vtune -collect hotspots -knob sampling-mode=hw -- /home/samples/matrix
以下に示すターゲットと解析タイプを使用して、ホストで実行されるターゲットの解析を設定します。
ターゲットタイプ |
解析タイプ |
---|---|
|
|
解析を実行するには、次のコマンドを使用します。
vtune -collect <analysis_type> [options] -- [host_target]
次に例を示します。
container> vtune -collect hotspots -target-process java
既知の問題:
問題: 関数レベルの解析はデフォルトでは利用できません。インテル® VTune™ プロファイラーは、サンプルをユーザーのターゲット・アプリケーションのバイナリーに対応付けますが、ホストのバイナリーをコンテナから参照できないため、関数を解決できません。
解決策: バイナリーを含むマウントされたホストフォルダーで Docker* コンテナを実行し、vtune コマンドの引数に検索ディレクトリーを指定します。
問題: インテル® VTune™ プロファイラーがコンテナ内では root ユーザーで実行され、ホスト上のアプリケーションは非 root ユーザーで実行されます。その結果、「ターゲットとインテル® VTune™ プロファイラーを同じユーザーで実行する必要があります」というエラーメッセージが出力され実行は失敗します。
解決策: 同じユーザーがコンテナでインテル® VTune™ プロファイラーを実行し、コンテナ外でターゲット・アプリケーションを実行していることを確認してください。