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

ホストからインテル® 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 hs -knob sampling-mode=hw -analyze-system -d 60

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

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

データの表示

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

関連情報