インテル® VTune™ プロファイラー・ユーザーガイド
インテル® 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] カスタムインストール > [3] インストールするコンポーネントを変更を選択して、コンテナー環境に必要がないコンポーネントのインストールを解除します: [3] グラフィカル・ユーザー・インターフェイスと [4] プラットフォーム・プロファイラー。
インストール後、インテル® VTune™ プロファイラーの環境変数を設定します。例えば、インテル® oneAPI ベース・ツールキットのインテル® VTune™ プロファイラーでは、次を行います。
container> source /opt/intel/inteloneapi/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 コマンドの引数に search directory を指定します。
問題: インテル® VTune™ プロファイラーはコンテナーで root ユーザーで実行され、ホスト上のアプリケーションは非 root ユーザーで実行されます。そのため、ユーザーモード・サンプリングのホットスポット解析は失敗し、「ターゲットとインテル® VTune™ プロファイラーの両方を同じユーザーで実行する必要があります」というメッセージが出力されます。
解決方法: 同じユーザーがコンテナーでインテル® VTune™ プロファイラーを実行し、コンテナー外でターゲット・アプリケーションを実行していることを確認してください。