從命令列測量應用程式的效能
您可以使用命令列工具來收集應用程式的效能資訊。 您可以收集 CPU 使用量、.NET 記憶體配置、檢測和資料庫查詢的效能資料。
本文所述範例會收集 Microsoft [記事本] 的效能資訊,但您可以使用相同的方法來分析任何處理序。
注意
若要從命令行產生已檢測的 C/C++ 元件,請參閱 檢測原生獨立元件 ,再遵循本文中的步驟。 針對 CPU 使用量資料,您可以使用本文所述的程序。
必要條件
Visual Studio 2019 或更新版本
熟悉命令列工具
若要在未安裝 Visual Studio 的情況下收集遠端電腦上的效能資訊,請在遠端電腦上安裝 Visual Studio 遠端工具。 工具的版本必須符合您的 Visual Studio 版本。
收集效能資料
使用 Visual Studio 診斷 CLI 工具進行分析時,其運作方式是將分析工具與其中一個收集器代理程式附加至處理序。 當您附加分析工具時,即會開始診斷工作階段以擷取並儲存分析資料,直到停止工具為止;此時會將這些資料匯出為 .diagsession 檔案。 接著,您即可在 Visual Studio 中開啟此檔案以分析結果。
啟動 [記事本],然後開啟 [工作管理員] 以取得其處理序識別碼 (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> 可識別收集工作階段。 識別碼必須是介於 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
調整 [記事本] 的大小,或在其中鍵入某些項目,以確保收集到一些可用的分析資訊。
停止收集工作階段並鍵入下列命令,將輸出傳送至檔案。
VSDiagnostics.exe stop <id> /output:<path to file>
找出上一個命令的 .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。
權限
若要分析需要提高權限的應用程式,您必須從提升權限的命令提示字元執行此作業。