コマンド ラインからアプリケーションのパフォーマンスを測定する
コマンド ライン ツールを使用して、アプリケーションに関するパフォーマンス情報を収集できます。 CPU 使用率、.NET メモリ割り当て、インストルメンテーション、データベース クエリのパフォーマンス データを収集できます。
この記事で説明する例では、Microsoft メモ帳のパフォーマンス情報を収集しますが、同じ方法を使用して任意のプロセスをプロファイリングできます。
手記
コマンド ラインからインストルメント化された C/C++ コンポーネントを生成するには、この記事の手順に従う前に、ネイティブスタンドアロン コンポーネント インストルメント化する方法に関する記事を参照してください。 CPU 使用率データについては、この記事で説明する手順を使用できます。
前提 条件
Visual Studio 2019 以降のバージョン
コマンド ライン ツールに関する知識
Visual Studio がインストールされていないリモート コンピューターでパフォーマンス情報を収集するには、リモート コンピューターに Remote Tools for Visual Studio をインストールします。 ツールのバージョンは、Visual Studio のバージョンと一致している必要があります。
ほとんどのコレクション エージェントは、.NET Core、.NET 5 以降、.NET Framework、および C++ をサポートしています。 ただし、サポートは、対応するパフォーマンス ツールによって提供されるサポートに限定されます。 たとえば、Database コレクション エージェントは、.NET Core と .NET 5 以降に制限されます。
パフォーマンス データの収集
Visual Studio Diagnostics CLI ツールを使用したプロファイリングは、プロファイリング ツールとコレクター エージェントの 1 つをプロセスにアタッチすることによって機能します。 プロファイリング ツールをアタッチすると、ツールが停止するまでプロファイリング データをキャプチャして格納する診断セッションが開始され、その時点でデータが .diagsession ファイルにエクスポートされます。 その後、Visual Studio でこのファイルを開いて結果を分析できます。
メモ帳を起動し、タスク マネージャーを開いてプロセス ID (PID) を取得します。 タスク マネージャーで、[の詳細] タブで PID を見つけます。
コマンド プロンプトを開き、コレクション エージェントの実行可能ファイルを含むディレクトリに変更します (通常はここ (Visual Studio Enterprise の場合)。
<Visual Studio installation folder>\2022\Enterprise\Team Tools\DiagnosticsHub\Collector\
<Visual Studio installation folder>\2019\Enterprise\Team Tools\DiagnosticsHub\Collector\
リモート ツールの場合、コレクション エージェントの実行可能ファイルは次の場所にあります。
Program Files\Microsoft Visual Studio 17.0\Team Tools\DiagnosticsHub\Collector\
Program Files\Microsoft Visual Studio 16.0\Team Tools\DiagnosticsHub\Collector\
手記
リモート シナリオでコマンド ラインを使用する場合は、リモート コンピューターでコマンド ライン命令を実行する必要があります。 Visual Studio からリモート コンピューターにアタッチする場合は、代わりに Visual Studio のパフォーマンス プロファイラーを使用します。
次のコマンドを入力して、VSDiagnostics.exe を開始します。
VSDiagnostics.exe start <id> /attach:<pid> /loadConfig:<configFile>
含める必要がある引数は次のとおりです。
- <ID> コレクション セッションを識別します。 ID は 1 から 255 までの数値である必要があります。
- <pid>、プロファイルするプロセスの PID、この場合は手順 1 で見つかった PID です。
- <は、起動したいコレクション エージェントのための構成ファイルである、configFile>です。 詳細については、「エージェント の構成ファイル」を参照してください。
たとえば、前述のように、pid を置き換えることで、CPUUsageBase エージェントに対して次のコマンドを使用できます。
VSDiagnostics.exe start 1 /attach:<pid> /loadConfig:AgentConfigs\CPUUsageLow.json
または、
launch
コマンドを使用して実行可能ファイルを開始することもできます。 このシナリオでは、プロセス ID を取得してアタッチする必要はありません。 すべてのツールでlaunch
コマンドがサポートされていますが、インストルメンテーションや .NET 割り当てツールなど、attach
をサポートしていないツールもあります。 たとえば、次のコマンドを使用して実行可能ファイルを開始し、インストルメンテーション データを収集します。VSDiagnostics start <id> /launch:<ExeToProfile> /loadConfig:AgentConfigs\PerfInstrumentation.json
メモ帳のサイズを変更するか、興味深いプロファイル情報が収集されるように何かを入力します。
次のコマンドを入力して、コレクション セッションを停止し、出力をファイルに送信します。
VSDiagnostics.exe stop <id> /output:<path to file>
前のコマンド .diagsession ファイル出力を見つけて、Visual Studio (File>Open) で開き、収集された情報を調べます。
結果を分析するには、対応するパフォーマンス ツールのドキュメントを参照してください。 たとえば、CPU 使用率、.NET オブジェクト割り当てツール、インストルメンテーション、または Database ツールなどです。
エージェント構成ファイル
コレクション エージェントは、測定しようとしている内容に応じてさまざまな種類のデータを収集する交換可能なコンポーネントです。
便宜上、その情報をエージェント構成ファイルに格納することをお勧めします。 構成ファイルは、.dll とその COM CLSID の名前を少なくとも含む .json ファイルです。 既定では、構成ファイルの例は次のフォルダーにあります。
Program Files\Microsoft Visual Studio\<version>\<sku>\Team Tools\DiagnosticsHub\Collector\AgentConfigs
CpuUsage 構成 (Base/High/Low) は、CPU 使用率 プロファイル ツール用に収集されたデータに対応します。 DotNetObjectAlloc 構成 (Base/Low) は、.NET オブジェクト割り当てツール用に収集されたデータに対応します。
基本/低/高の構成は、サンプリング レートを参照します。 たとえば、Low は 100 サンプル/秒、High は 4000 サンプル/秒です。
VSDiagnostics.exe ツールがコレクション エージェントを操作するには、適切なエージェントの DLL と COM CLSID の両方が必要です。 エージェントには追加の構成オプションもあります。構成ファイルで指定されているオプションは、適切にエスケープされた JSON として書式設定されます。
権限
昇格されたアクセス許可を必要とするアプリケーションをプロファイリングするには、管理者特権のコマンド プロンプトからプロファイルを作成する必要があります。