この記事は、インテル® デベロッパー・ゾーンに公開されている「Intel® VTune™ Profiler Performance Analysis Cookbook」の「Using Intel® VTune™ Profiler Server with Visual Studio Code and Intel® DevCloud for oneAPI」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。
バージョン: 2020 (最終更新日: 2021 年 5 月 19 日)
このレシピでは、インテル® VTune™ プロファイラーをウェブサーバーとして使用し、リモートの開発マシンでパフォーマンスのチューニングを行う方法を紹介します。例として、リモートマシンにインテル® DevCloud for oneAPI のコンピュート・ノードを使用します。
コンテンツ・エキスパート: Stas Neverov (英語)、Jennifer DiMatteo (英語)
- 使用するもの
- 手順:
使用するもの
以下は、このレシピで使用するハードウェアとソフトウェアのリストです。
- インテル® DevCloud for oneAPI (英語) へのアクセス
- Visual Studio* (VS) Code (英語)
- インテル® VTune™ プロファイラー (インテル® DevCloud for oneAPI (英語) で利用可能)
注:
- バージョン 2020 から、インテル® VTune™ Amplifier の名称がインテル® VTune™ プロファイラーに変わりました。
- インテル® VTune™ プロファイラー・パフォーマンス解析クックブックのほとんどのレシピは、異なるバージョンのインテル® VTune™ プロファイラーにも適用できます。バージョンにより、わずかな調整が必要になる場合があります。
- 最新バージョンのインテル® VTune™ プロファイラーは以下から入手できます。
設定の概要
バージョン 2021.1.1 以降では、インテル® VTune™ プロファイラーをサーバーとして実行し、ウェブブラウザーを使用してリモートアクセスできます。この設定は、リモートシステムでアプリケーションを開発する場合に便利です。
- 開発システムでインテル® VTune™ プロファイラーを実行することで、バイナリー、デバッグ情報、ソースファイルに直接アクセスできます。
- また、インテル® VTune™ プロファイラーは、収集したトレースと処理データを同じシステムに保存するので、解析のためこれらのデータをクライアント・システムに転送する必要はありません。
- クライアント・システムに何もインストールする必要はありません。ウェブブラウザーだけあれば、インテル® VTune™ プロファイラーの GUI にアクセスできます。
以下は、この設定を図解したものです。
オプション 1: リモート開発にインテル® VTune™ プロファイラー・サーバーと Visual Studio* Code を併用する
- インテル® DevCloud for oneAPI (英語) にログインします。
- VS Code の接続を設定します (英語)。この手順を完了すると、ローカルの VS Code がインテル® DevCloud のコンピュート・ノードに接続されます。
- VS Code のターミナルからコンピュート・ノード上のインテル® VTune™ プロファイラー・サーバーを実行します。
vtune-backend --enable-server-profiling
- インテル® VTune™ プロファイラーの GUI を実行します。Ctrl キーを押しながら VS Code のターミナルでインテル® VTune™ プロファイラー・サーバーによって表示された URL をクリックして、ウェブブラウザーでインテル® VTune™ プロファイラーの GUI を開きます。
- 設定を完了します。
オプション 2: SSH ターミナルを介してリモートシステムでインテル® VTune™ プロファイラー・サーバーを使用する
このケースでは、SSH トンネルを手動で設定する必要があります。この手順を簡略化するため、インテル® VTune™ プロファイラーを特定のポート (この例では 55001) で実行します。55001 がビジーの場合は、別のポートを選択できます。
- インテル® DevCloud for oneAPI (英語) にログインします。
- Windows* (英語) または Linux*/macOS* (英語) システム用の手順に従って、インテル® DevCloud への SSH 接続を設定します。
- インテル® DevCloud のログインノードにログインします。
ssh devcloud
- インテル® DevCloud のコンピュート・ノードを予約します。
qsub -I
注:
この手順の後、ターミナルを閉じないでください。ターミナルを閉じると、コンピュート・ノードが解放されます。 - 新しいターミナルを開きます。
- SSH ポートフォワードを有効にして、再度インテル® DevCloud のノードにログインします。
ssh -L 127.0.0.1:55001:127.0.0.1:55001 devcloud
- もう 1 つの SSH トンネルでログインノードからコンピュート・ノードへの SSH 接続を確立します。
ssh -L 127.0.0.1:55001:127.0.0.1:55001 s000-n000
s000-n000 をお使いのコンピュート・ノード名に置き換えます。
- コンピュート・ノード上でインテル® VTune™ プロファイラーを起動します。
vtune-backend --web-port=55001 --enable-server-profiling
- インテル® VTune™ プロファイラーの GUI を開きます。ウェブブラウザーでインテル® VTune™ プロファイラー・サーバーによって表示された URL を開きます。
- 設定を完了します。
設定の完了
オプション 1 とオプション 2 のどちらを選択した場合も、以下の手順で設定を完了します。
- インテル® VTune™ プロファイラー・サーバーの証明書を承認します。
インテル® VTune™ プロファイラーの GUI を開いたときに、ウェブブラウザーがインテル® VTune™ プロファイラー・サーバーの自己署名証明書に関する確認メッセージを表示する場合があります。SSH トンネルは中間者攻撃 (MitM) から保護されているため、証明書をインストールしなくても安全に作業を進めることができます。トランスポート・セキュリティーの詳細は、「トランスポート・セキュリティー」 (英語) を参照してください。
- パスフレーズを設定します。
インテル® VTune™ プロファイラー・サーバーを初めて起動したときに表示される URL には、ワンタイムトークンが含まれています。ブラウザーでこの URL を開くと、インテル® VTune™ プロファイラー・サーバーによってパスフレーズの設定を求められます。パスフレーズがないと、ほかのユーザーはインテル® VTune™ プロファイラー・サーバーにアクセスできません。パスフレーズのハッシュはサーバーに保存されます。また、ブラウザーには安全な HTTP クッキーが保存されるので、インテル® VTune™ プロファイラーの GUI を開くたびにパスフレーズを入力する必要はありません。パスフレーズを設定すると、インテル® VTune™ プロファイラーのようこそ画面が表示されます。
- プロジェクトを作成します。
- 解析を設定します。–enable-server-profiling オプションを指定してインテル® VTune™ プロファイラー・サーバーを起動したため、デフォルトではリモートマシンがターゲットシステムとして選択されます。
- ターゲット・アプリケーションのパスとコマンドライン引数を設定します。詳細は、「解析ターゲットの設定」 (英語) を参照してください。
- 解析を実行します。
使用上の注意点
- オプション 1 の設定では、VS Code Remote – SSH 拡張 (英語) を利用して、VS Code のターミナルから起動されたプロセスで使用されるポート番号を監視します。Remote – SSH 拡張は、これらのポートを自動的に SSH トンネルに転送します。この動作は、デフォルトで有効な remote.autoForwardPorts 設定によって制御されます。
- –enable-remote-profiling コマンドライン・オプションを使用すると、インテル® VTune™ プロファイラー・サーバーをホストしているシステムをパフォーマンス・プロファイリング・ターゲットにすることができます。インテル® VTune™ プロファイラー解析の実行では、任意のコマンドラインでターゲット・アプリケーションを起動するため、セキュリティーの観点からこのオプションはデフォルトで無効になっています。複数のユーザーがインテル® VTune™ プロファイラー・サーバーの 1 つのインスタンスにアクセスすると、インテル® VTune™ プロファイラー・サーバーを実行するユーザーアカウントに代わって任意のコードを実行できるようになります。–enable-remote-profiling は、インテル® VTune™ プロファイラー・サーバーが単一のユーザーを対象としており、サーバーへのアクセスに使用するパスフレーズを共有していない場合にのみ有効にします。
- –web-port=PORT コマンドライン・オプションを使用して、インテル® VTune™ プロファイラー・サーバーを特定のポートで実行します。このオプションを使用しない場合、インテル® VTune™ プロファイラーはシステムで利用可能な任意のポートで実行されます。
- インテル® VTune™ プロファイラー・サーバーは、以下の警告を出力します。
warn: Server access is limited to localhost only. To enable remote access restart with --allow-remote-ui.
この手順では SSH ポートフォワードを使用するため、–allow-remote-ui を有効にする必要はありません。インテル® VTune™ プロファイラー・サーバーへの着信接続は SSH サーバーからの localhost 接続です。–allow-remote-ui を有効にすると、インテル® VTune™ プロファイラー・サーバーは実際のネットワーク・カードの IP アドレスまたは FQDN 名を含む URL を構築しますが、クライアント・マシンからはアクセスできない場合があります。 - デフォルトでは、インテル® VTune™ プロファイラー・サーバーはプロファイル結果をホーム・ディレクトリーに保存します。–data-directory コマンドライン引数を使用して、別のデータ・ディレクトリーを指定できます。また、この引数を使用して、インテル® VTune™ プロファイラー・サーバーで事前に収集されたインテル® VTune™ プロファイラーの結果を開くこともできます。インテル® VTune™ プロファイラーは、任意の子フォルダーに配置された結果を見つけることができます。
関連情報
インテル® VTune™ プロファイラーのウェブ・サーバー・インターフェイス (英語)
インテル® VTune™ プロファイラー・サーバーの使用モデル (英語)
インテル® デベロッパー・クラウド (英語)
インテル® VTune™ プロファイラーを使用したプロファイル解析の実行 (英語)
製品および性能に関する情報
1 性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。