コマンド ラインからアプリケーションのパフォーマンスを測定する
コマンドライン ツールを使用して、アプリケーションに関するパフォーマンス情報を収集できます。 CPU 使用率、.NET メモリ割り当て、インストルメンテーション、データベース クエリのパフォーマンス データを収集できます。
この記事に記載されている例では、Microsoft メモ帳のパフォーマンス情報を収集しますが、同じ方法を使用して任意のプロセスをプロファイルすることができます。
Note
コマンド ラインからインストルメントされた C/C++ コンポーネントを生成するには、この記事の手順に従う前に、「スタンドアロンのネイティブ コンポーネントをインストルメントする」を参照してください。 CPU 使用率データについては、この記事で説明する手順を使用できます。
前提条件
Visual Studio 2019 以降のバージョン
コマンドライン ツールに関する知識
Visual Studio がインストールされていない状態でリモート マシン上のパフォーマンス情報を収集するには、リモート マシンに Remote Tools for Visual Studio をインストールします。 ツールのバージョンは、使用している Visual Studio のバージョンと一致している必要があります。
パフォーマンス データを収集する
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\
Note
リモート シナリオでコマンド ラインを使用する場合は、リモート マシンでコマンド ライン命令を実行する必要があります。 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
コマンドをサポートしていますが、attach
をサポートしていないツール (インストルメンテーション ツールや .NET 割り当てツールなど) もあります。 たとえば、次を使用して実行可能ファイルを起動し、インストルメンテーション データを収集します。VSDiagnostics start <id> /launch:<ExeToProfile> /loadConfig:AgentConfigs\PerfInstrumentation.json
メモ帳のサイズを変更するか、興味深い何らかの入力プロファイリング情報が確実に収集されるようにメモ帳に何かを入力します。
次のコマンドを入力して、収集セッションを停止し、ファイルに出力を送信します。
VSDiagnostics.exe stop <id> /output:<path to file>
前のコマンドから出力された .diagsession ファイルを見つけ、Visual Studio でそれを開いて ( [ファイル] 、 [開く] )、収集された情報を調べます。
結果を分析するには、該当するパフォーマンス ツールのドキュメントを参照してください。 たとえば、CPU 使用率、.NET オブジェクト割り当てツール、インストルメンテーション、またはデータベース ツールがあります。
エージェントの構成ファイル
収集エージェントは、測定対象が何かに応じて、さまざまな種類のデータを収集する交換可能なコンポーネントです。
便宜上、その情報をエージェント構成ファイルに保管することをお勧めします。 構成ファイルは、少なくとも .dll の名前とその COM CLSID を含む .json ファイルです。 既定では、構成ファイルの例は次のフォルダーにあります。
Program Files\Microsoft Visual Studio\<version>\<sku>\Team Tools\DiagnosticsHub\Collector\AgentConfigs
CPU 使用率プロファイル ツールについて収集されたデータに対応する CpuUsage 構成 (Base/High/Low)。 .NET オブジェクト割り当てツールについて収集されたデータに対応する DotNetObjectAlloc 構成 (Base/Low)。
Base/Low/High 構成はサンプリング レートを表します。 たとえば、Low は 100 サンプル/秒、High は 4,000 サンプル/秒です。
VSDiagnostics.exe ツールを収集エージェントで使用するには、適切なエージェントの DLL と COM CLSID の両方が必要です。 エージェントには追加の構成オプションがある場合もあります。これは、適切にエスケープされた JSON として書式設定された、構成ファイルで指定されているオプションです。
アクセス許可
昇格されたアクセス許可が必要なアプリケーションをプロファイルするには、昇格されたコマンド プロンプトから実行する必要があります。