GitLab* CI でパフォーマンスをプロファイルする

同カテゴリーの次の記事

FPGA 上での DPC++ アプリケーションのプロファイル

この記事は、インテル® デベロッパー・ゾーンに公開されている「Intel® VTune™ Profiler Performance Analysis Cookbook」の「Enabling Performance Profiling in GitLab* CI」の章の日本語参考訳です。


このレシピは、インテル® VTune™ プロファイラーを GitLab* CI パイプラインに統合して、ビルドをプロファイルする方法を説明します。

コンテンツ・エキスパート: Dmitry Sivkov (英語)

このレシピでは、インテル® VTune™ プロファイラーを GitLab* Continuous Integration (CI) パイプラインに統合することでビルドを自動プロファイルする方法と、インテル® VTune™ プロファイラーの静的な HTML レポート機能を使用して最新のパフォーマンス解析データへのアクセスをより便利にする方法を示します。

このアプローチは、次の利点をもたらします。

  • 自動パフォーマンス解析: パフォーマンス・リグレッションが検出された場合、テスト環境を設定して手動でパフォーマンス結果を収集することは、単調な作業であり、エンジニアの貴重な時間を消費してしまいます。インテル® VTune™ プロファイラーを GitLab* CI パイプラインのテストステージに統合することで、あらかじめ設定した環境でパフォーマンス・データを自動収集して、結果を自動的にアーティファクトとしてアップロードできます。
     

    これにより、手作業を省き、ビルド完了時にパフォーマンス結果を利用できるようにすることで、リグレッションの原因究明に専念できます。

  • カスタム設定: インテル® VTune™ プロファイラーのコマンドライン・インターフェイス (CLI) 機能 (英語) は、柔軟な CI 統合を提供します。インテル® VTune™ プロファイラー の CLI を使用することで、例えば、チームのニーズに合わせて、必要な解析タイプとパラメーターを選択してカスタムプロセスをセットアップできます。
     

    以下は、いくつかの設定例です。

    • ビルドごとにホットスポット解析 (英語) を自動実行します。
    • ビルドシステムの負荷テストステージでパフォーマンス・リグレッションが検出された場合のみ新しいビルドをプロファイルして、すべての必要な解析タイプのパフォーマンス・データを収集します。
  • HTML 解析レポート: インテル® VTune™ プロファイラーには、収集結果のサマリーを含む静的な HTML レポートを生成するコマンドライン・オプション (英語) が用意されています。この HTML レポートをブラウザーで表示して、追加の解析が必要かどうかを判断できます。オプションで、この HTML レポートを便利な GitLab* ページとしてホストすることもできます。

使用するもの

以下は、パフォーマンス解析シナリオで使用するソフトウェアのリストです。

  • インフラストラクチャー: 以下を含む、GitLab* CI パイプラインを設定済みの GitLab* リポジトリー:
    • プロジェクトの Makefile
    • 事前設定済みの .gitlab-ci.yml ファイル
    • インテル® VTune™ プロファイラーがインストールされた GitLab* Runner
  • ツール: インテル® VTune™ プロファイラー 2020 (スタンドアロンまたはインテル® Parallel Studio XE/インテル® System Studio に含まれるもの)。
     

    • インテル® VTune™ プロファイラーのダウンロードと製品サポートについては、https://www.isus.jp/intel-vtune-amplifier-xe/ を参照してください。
    • このクックブックのレシピはすべてスケーラブルであり、インテル® VTune™ Amplifier 2018 以降に適用できます。バージョンにより設定がわずかに異なることがあります。
    • ベータ版インテル® oneAPI ベース・ツールキット向けのバージョンから、インテル® VTune™ Amplifier の名称がインテル® VTune™ プロファイラーに変わりました。引き続き、インテル® Parallel Studio XE またはインテル® System Studio のコンポーネントとして、あるいはスタンドアロン版のインテル® VTune™ プロファイラーをご利用いただけます。

GitLab* Runner をインストールする

GitLab* Runner が設定されていない場合は、GitLab* 公式ドキュメント (https://docs.gitlab.com/runner/#install-gitlab-runner (英語)) の手順に従って、GitLab* Runner ソフトウェア・パッケージをインストールして設定します。

GitLab* Runner をインストールした後に、インテル® VTune™ プロファイラーをインストールします。手順と利用可能なインストール方法については、『インテル® VTune™ プロファイラー・インストール・ガイド』 (英語) を参照してください。

  • root 権限なしでハードウェア・イベントベース・サンプリング収集を実行できるように、/proc/sys/kernel/perf_event_paranoid を 0 に設定してください。インテルのサンプリング・ドライバーまたは root 権限を使用しないハードウェア・プロファイルについては、本クックブックの「インテルのサンプリング・ドライバーを使用しないハードウェア・プロファイル」レシピを参照してください。
  • パフォーマンス解析結果は、使用する Runner と解析を実行するマシンによって異なります。

自動データ収集を設定する

vtune コマンド呼び出しとアーティファクト処理コマンドを GitLab* パイプラインに追加します。例えば、次のコマンドを .gitlab-ci.yml ファイルに追加します。

vtune -collect hotspots ./<アプリケーション>

このコマンドは、最後のコマンドオプションで指定されたアプリケーションを起動して、ホットスポット解析 (英語) データを収集し、結果を別のディレクトリーに保存します。

インテル® VTune™ プロファイラーの結果と HTML サマリーレポートの任意の組み合わせをアップロードできます。例えば、アプリケーションのパフォーマンスの概要を把握するため、完全な解析結果と静的な HTML サマリーレポートをアップロードできます。

静的な HTML レポートを生成するには、次のコマンドを追加します。

vtune -report summary -format=html > hotspots_summary.html

インテル® VTune™ プロファイラーの完全な結果をアーティファクトとしてアップロードするには、任意のツールで結果ディレクトリーをパッケージ化する必要があります。例えば、次のように、tar を使用して結果ディレクトリーをパッケージ化します。

tar -c r00* > vtune_result.tar

  • vtune コマンドを使用して、任意のオプションを指定し、実行環境で有効な任意の解析タイプを選択できます。コマンドラインから解析を実行する方法については、『インテル® VTune™ プロファイラー・ユーザーガイド』の「コマンドライン解析の実行」 (英語) を参照してください。
  • インテル® VTune™ プロファイラーのグラフィカル・ユーザー・インターフェイス (GUI) は、GUI で解析を設定して、必要なすべてのオプションとパラメーターを含むコマンドラインを生成してコピーできる、コマンドライン設定生成機能 (英語) を提供します。この機能を利用してコマンドラインを簡単に生成し、後で使用できます。

手動での vtune コマンドの作成については、『インテル® VTune™ プロファイラー・ユーザーガイド』の「コマンドライン・インターフェイス」 (英語) を参照してください。

特定の環境では、実行可能な解析タイプが制限されます。例えば、マイクロアーキテクチャー全般解析は、特定の仮想マシン・ハイパーバイザーでは利用できません。

結果の自動アップロードを設定する

アップロードするファイルを .gitlab-ci.yml ファイルの artifacts/paths: セクションに追加します。例えば、結果ディレクトリーの .tar ファイルと HTML サマリーをアップロードする場合、次のように指定します。

artifacts:
 paths:
  - <プロジェクトの相対パス>/vtune_result.tar
  - <プロジェクトの相対パス>/hotspots_summary.html

結果は、GitLab* アーティファクトとしてアップロードしてください。そうでないと、インテル® VTune™ プロファイラーを実行するマシン上に結果が保存され、手動で取得する必要があります。

結果データを表示する

ビルドが完了したら、次の手順に従って、GitLab* ウェブ・インターフェイスから解析サマリーページにすぐにアクセスできます。

  1. GitLab* で Pipelines ページに移動します。
     

  2. このページから、アーティファクト・バンドルをダウンロードするか、個々の HTML ページを参照して、サマリーを基に結果をダウンロードする必要があるかどうかを判断できます。
     

HTML ページを個別にダウンロードするには、次の操作を行います。

  1. パイプライン・ステージのレポート・ページに移動して、[Browse] をクリックします。
     

  2. HTML ページの場所に移動して、ダウンロードします。
     

  3. 任意のブラウザーでサマリー HTML を開いて、追加の解析が必要かどうかを判断します。
     

インテル® VTune™ プロファイラーのグラフィカル・ユーザー・インターフェイスを使用して結果データを表示するには、次の操作を行います。

  1. .tar アーカイブから結果ファイルを展開します。
  2. インテル® VTune™ プロファイラー GUI を起動します。
  3. ボタンをクリックして、結果ファイルを参照します。結果データは新しいタブに表示されます。

(オプション) 新たに発生した問題を解決する

パフォーマンス・リグレッションが検出された場合、問題を特定して解決するため、インテル® VTune™ プロファイラーのほかの解析タイプを使用できます。

このレシピの情報は、インテル® VTune™ プロファイラー・デベロッパー・フォーラム (英語) を参照してください。

関連項目

関連記事