次の方法で共有


コマンド ラインからアプリケーションのパフォーマンスを測定する

コマンド ライン ツールを使用して、アプリケーションに関するパフォーマンス情報を収集できます。 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 でこのファイルを開いて結果を分析できます。

  1. メモ帳を起動し、タスク マネージャーを開いてプロセス ID (PID) を取得します。 タスク マネージャーで、[の詳細] タブで PID を見つけます。

  2. コマンド プロンプトを開き、コレクション エージェントの実行可能ファイルを含むディレクトリに変更します (通常はここ (Visual Studio Enterprise の場合)。

    <Visual Studio installation folder>\18\Enterprise\Team Tools\DiagnosticsHub\Collector\

    <Visual Studio installation folder>\2022\Enterprise\Team Tools\DiagnosticsHub\Collector\

    リモート ツールの場合、コレクション エージェントの実行可能ファイルは次の場所にあります。

    Program Files\Microsoft Visual Studio 17.0\Team Tools\DiagnosticsHub\Collector\

    手記

    リモート シナリオでコマンド ラインを使用する場合は、リモート コンピューターでコマンド ライン命令を実行する必要があります。 Visual Studio からリモート コンピューターにアタッチする場合は、代わりに Visual Studio のパフォーマンス プロファイラーを使用します。

  3. 次のコマンドを入力して、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
    
  4. メモ帳のサイズを変更するか、興味深いプロファイル情報が収集されるように何かを入力します。

  5. 次のコマンドを入力して、コレクション セッションを停止し、出力をファイルに送信します。

    VSDiagnostics.exe stop <id> /output:<path to file>
    
  6. 前のコマンド .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 として書式設定されます。

権限

昇格されたアクセス許可を必要とするアプリケーションをプロファイリングするには、管理者特権のコマンド プロンプトからプロファイルを作成する必要があります。