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

ホストからインテル® 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):

関連情報