ホストからコンテナーターゲットをプロファイル

ホストからインテル® VTune™ プロファイラーを起動して、Linux* システム上の LXC*、Docker、Mesos*、Singularity* コンテナーで実行されるネイティブまたは Java* アプリケーションをプロファイルします。

必要条件

インテル® VTune™ プロファイラーは、コンテナーで実行されるアプリケーションを自動検出します。パフォーマンス解析向けにコンテナーの設定は必要ありません。ただし、ユーザーモードのサンプリング解析タイプ (ホットスポットやスレッド化) を実行するには、ptrace サポートを有効にしてコンテナーを実行します。

host> docker run --cap-add=SYS_PTRACE -td myimage

または、特権モードでコンテナーを起動します。

host> docker run --privileged -td myimage

コンテナーをターゲットとした設定と実行

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

ターゲットタイプ

解析タイプ

  • プロセスにアタッチ
  • システムをプロファイル

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

  1. ホストシステム上でインテル® VTune™ プロファイラーのプロジェクトを作成します。

  2. [解析の設定] ウィンドウの [どこを] ペインで、[ローカルホスト] システムを選択して、ホストの Linux* システムから解析システムを開始、または [リモート Linux* (SSH)] を選択して、ホストシステムから SSH 経由でリモート接続された Linux* システムの解析を開始します。リモート Linux* ターゲットでは、SSH 接続の設定を確認してください。

  3. [何を] セクションで解析ターゲットを指定します。コンテナーターゲット解析では、[プロセスにアタッチ][システムをプロファイル] ターゲットタイプがサポートされます。

    選択可能なオプションを使用して、通常通りプロセスまたはシステムターゲットを構成します。

    [システムをプロファイル] モードでは、インテル® VTune™ プロファイラーは同じコンテナーまたは異なるコンテナーで同時に実行されるすべてのアプリケーションをプロファイルします。通常のマネージドコードのシステム全体のプロファイルの制限は、コンテナーで実行される Java* アプリケーションには適用されません。

    スーパーユーザー権限で実行するインテル® VTune™ プロファイラーを、低い権限レベルのユーザーアカウントで実行される Java* プロセスや JVM* インスタンスが組込まれた C/C++ アプリケーションへアタッチすることができます。例えば、インテル® VTune™ プロファイラーを Java* ベースのデーモンやサービスにアタッチしてプロファイルできます。

    動的なアタッチは、Java* 開発キット (JDK*) でのみサポートされます。

  4. [どのように] セクションで、解析タイプを選択し必要に応じて解析オプションをカスタマイズします。

    ホットスポット (ハードウェア・イベントベース・サンプリング・モード) とマイクロアーキテクチャー全般解析では、Linux* Perf ツールベースのドライバーを使用しないデータ収集を使用して、コンテナーで実行されるターゲットのパフォーマンス・データを収集できます。

  5. [開始] をクリックして解析を実行します。

また、インテル® VTune™ プロファイラーのコマンドライン・インターフェイスを使用して、この解析を設定および実行することもできます (vtune) を使用します。例えば、ローカルでシステム全体のホットスポット解析を行うには、次のコマンドを使用します。

host> vtune -collect hotspots -knob sampling-mode=hw -analyze-system -d 60

また、リモートマシン上でプロセスにアタッチモードでホットスポット解析を実行するには、次のコマンドを使用します。

host> vtune -target-system=ssh:user1@172.16.254.1 -collect hotspots -knob sampling-mode=hw -target-process=java -d 60

データを表示

デフォルトのホットスポット・ビューポイントに収集された結果が開き、コンテナーモジュールへのパスにはプリフィクスが添付されます (例えば、docker や lxc)。

関連情報