從命令列測量應用程式的效能

您可以使用命令列工具來收集應用程式的效能資訊。 您可以收集 CPU 使用量、.NET 記憶體配置、檢測和資料庫查詢的效能資料。

本文所述範例會收集 Microsoft [記事本] 的效能資訊,但您可以使用相同的方法來分析任何處理序。

注意

如需命令列中的 C/C++ 檢測,請參閱檢測原生獨立元件。 針對 CPU 使用量資料,您可以使用本文所述的程序。

必要條件

  • Visual Studio 2019 或更新版本

  • 熟悉命令列工具

  • 若要在未安裝 Visual Studio 的情況下收集遠端電腦上的效能資訊,請在遠端電腦上安裝 Visual Studio 遠端工具。 工具的版本必須符合您的 Visual Studio 版本。

收集效能資料

使用 Visual Studio 診斷 CLI 工具進行分析時,其運作方式是將分析工具與其中一個收集器代理程式附加至處理序。 當您附加分析工具時,即會開始診斷工作階段以擷取並儲存分析資料,直到停止工具為止;此時會將這些資料匯出為 .diagsession 檔案。 接著,您即可在 Visual Studio 中開啟此檔案以分析結果。

  1. 啟動 [記事本],然後開啟 [工作管理員] 以取得其處理序識別碼 (PID)。 在 [工作管理員] 的 [詳細資料] 索引標籤中,尋找此 PID。

  2. 開啟命令提示字元,並變更為包含收集代理程式可執行檔的目錄,通常位於這裡 (適用於 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 中的效能分析工具。

  3. 鍵入下列命令,開始 VSDiagnostics.exe

    VSDiagnostics.exe start <id> /attach:<pid> /loadConfig:<configFile>
    

    必須包含的引數如下:

    • <id> 可識別收集工作階段。 識別碼必須是介於 1-255 之間的數字。
    • <pid>,您要分析的處理序 PID;在本例中為您在步驟 1 找到的 PID。
    • <configFile>,您要啟動的收集代理程式組態檔。 如需詳細資訊,請參閱代理程式的組態檔

    例如,您可以使用下列命令作為 CPUUsageBase 代理程式,方法是取代先前所述的 pid

    VSDiagnostics.exe start 1 /attach:<pid> /loadConfig:AgentConfigs\CPUUsageLow.json
    

    或者,您可以使用 launch 命令來啟動可執行檔。 在此案例中,您不需要取得流程識別碼並附加至它。 所有工具都支援 launch 命令,但有些工具不支援 attach,例如檢測和 .NET 組態工具。 例如,使用下列項目來啟動可執行檔並收集檢測資料:

    VSDiagnostics start <id> /launch:<ExeToProfile> /loadConfig:AgentConfigs\PerfInstrumentation.json
    
  4. 調整 [記事本] 的大小,或在其中鍵入某些項目,以確保收集到一些可用的分析資訊。

  5. 停止收集工作階段並鍵入下列命令,將輸出傳送至檔案。

    VSDiagnostics.exe stop <id> /output:<path to file>
    
  6. 找出上一個命令的 .diagsession 檔案輸出,並在 Visual Studio 中加以開啟(檔案>開啟),以檢查收集到的資訊。

    若要分析結果,請參閱對應效能工具的文件。 例如,這可能是 CPU 使用量.NET 物件組態工具檢測,或資料庫工具。

代理程式組態檔

收集代理程式是一種可互換元件,其會依據您要嘗試測量的項目來收集不同類型資料。

為了方便起見,我們建議您將該資訊儲存在代理程式組態檔中。 組態檔是一種 .json 檔案,其中至少包含 .dll 的名稱和其 COM CLSID。 根據預設,您可以在下列資料夾中找到範例組態檔:

Program Files\Microsoft Visual Studio\<version>\<sku>\Team Tools\DiagnosticsHub\Collector\AgentConfigs

CpuUsage 組態 (基底/高/低),其會對應至 CPU 使用量分析工具收集到的資料。 DotNetObjectAlloc 組態 (基底/低),其會對應至 .NET 物件配置工具收集到的資料。

組態的基底/高/低是指取樣率。 例如,低表示 100 個範例/秒,而高表示 4000 個範例/秒。

若要讓 VSDiagnostics.exe 工具與集合代理程式搭配使用,它需要適當代理程式的 DLL 和 COM CLSID。 代理程式也可能有其他組態選項,這會是組態檔中指定的任何選項,格式為正確逸出 JSON。

權限

若要分析需要提高權限的應用程式,您必須從提升權限的命令提示字元執行此作業。