Perfview是一種免費的性能分析工具,可幫助隔離CPU和與內存有關的性能問題。它是一個Windows工具,但也有一些支持,用於分析在Linux機器上收集的數據。它適用於各種各樣的方案,但具有許多特殊功能,可用於調查為.NET運行時編寫的代碼中的性能問題。
如果您不熟悉Perfview,則會有Perfview視頻教程。此外,萬斯·莫里森(Vance Morrison)的博客提供了概述和入門信息。
請參閱完美下載頁面以獲取鏈接和指令,用於下載當前版本的perfview。
Perfview需要.NET Framework 4.7.2或更高版本,這對於所有受支持的Windows的版本都廣泛可用。
perfview建立在一個名為Microsoft.diarostics.tracing.traceevent的庫中,該圖書館知道如何收集和解析Windows(ETW)和Event -Pipe(.NET Core Core Trace)數據的收集和解析事件。因此,如果有任何信息收集和流程您想通過編程方式操縱自己,那麼您可能會對TraceEvent庫文檔感興趣
請參閱“方案”文檔,以確定哪種是您要做的事情的最佳選擇。
Perfview用戶指南是應用程序本身的一部分。此外,您可以單擊“用戶指南”鏈接以查看瀏覽器中呈現的GitHub HTML源文件。您還可以使用上面的說明只需下載Perfview,然後選擇“幫助 - >用戶指南菜單項”。
當您對Perfview有疑問時,您的第一個反應應該是搜索用戶指南(幫助 - >用戶指南),看看是否已經可以找到答案。如果這樣做不起作用,您可以通過創建新的Perfview問題來提出問題。在標題中簡潔地陳述您的問題,如果有必要,則在問題正文中提供了一個名為“問題”的問題標籤,您應該使用它,將您的問題標記為問題,而不是某些錯誤報告。如果問題是特定於特定跟踪(*.Etl.zip文件)的特定問題,則可以將該文件拖到問題上,並將下載。這使那些關注問題的人可以重現您的環境,並給出更多詳細和有用的答案。
請注意,一旦回答問題,如果問題很常見,則應強烈考慮更新文檔以包含信息。該文檔幾乎只有一個文件https://github.com/microsoft/perfview/blob/main/src/src/perfview/supportfiles/usersguide.htm。您將需要克隆存儲庫並創建一個拉請求(有關設置和創建拉動請求的說明,請參見OpenSourceGitWorkFlow。
報告錯誤的工作方式與提出問題幾乎相同。您很可能需要包括重現問題所需的 *.Etl.zip文件以及任何步驟以及由此產生的不良行為。
如果您只想進行績效調查,則無需自己構建完善。只需使用Perfview下載頁面中的一個即可。但是,如果您想要新功能,或者只是想為Perfview做出貢獻以使其變得更好(請參閱人們想要的問題),則可以按照其餘的說明來做到這一點。
您需要構建完美的唯一工具是Visual Studio2022。 Visual Studio 2022 Community Edition可以免費下載,並且可以從Github獲取完美的所有內容,構建和測試。如果您還沒有Visual Studio 2022,我們希望您下載Visual Studio 2022 Community Edition。
在安裝Visual Studio時,您需要確保安裝以下工作負載和組件:
一個.vsconfig文件包含在存儲庫的根中,可用於安裝必要的組件。在Visual Studio中打開解決方案時,它將提示您安裝認為其安裝中缺少的任何組件。另外,您可以在Visual Studio Installer中導入.vsconfig 。
如果您遇到任何錯誤編譯ETWClrCompiler項目,則可能是因為您要么沒有安裝Windows 10 SDK,要么沒有安裝了spectre降低的libs。請參閱故障排除部分以獲取更多信息。
開始使用Perfview源代碼的第一步是克隆Perfview GitHub存儲庫。如果您已經熟悉GIT,GITHUB和Visual Studio 2022 Git支持的工作方式,那麼您可以跳過本節。但是,如果沒有,則使用Visual Studio 2022文檔設置本地GITHUB存儲庫將引導您完成這樣做的基礎知識。它只是假設您安裝了Visual Studio 2022。
Perfview是在Visual Studio 2022中使用C#7.3的功能開發的。
解決方案文件是perfview.sln。在Visual Studio(或在Windows Explorer中雙擊它)中打開此文件,然後選擇“構建” - >構建解決方案,將其構建。您還可以使用MSBUILD或build.cmd文件在存儲庫的底部構建非驅動版本。該構建遵循標準的Visual Studio約定,而所得的perfview.exe文件最終以src/perfview/bin/ buildType /perfview.exe出現。您只需要部署此EXE即可使用它。
該解決方案由幾個項目組成,代表支持DLL和主要EXE。要在調試器中運行PerfView ,您需要確保將“啟動項目”設置為“ perfview”項目,以便它啟動主EXE。如果解決方案資源管理器(右圖)中的Perfview項目並不大膽,請右鍵單擊Perfview項目,然後選擇“設置為啟動項目”。完成此操作後,“開始調試”(F5)應該有效。
您將需要部署“發行版”,而不是perfview的“調試”版本。因此,首先將構建配置設置為“發布”(頂部工具欄中的文本窗口,或右鍵單擊.sln文件 - > Configuration Manager-> Active解決方案配置)。下一個構建(構建 - >構建解決方案(CTRL-SHIFT-B))。結果將是在src perfview bin net462 Release Directory中,將有一個perfview.exe。這個文件是您需要部署的所有文件。只需將其複製到您希望部署應用程序的位置即可。
關於Perfview的不尋常的事情之一是,它將其支持DLL納入了EXE本身,並且在首次啟動時會被打開。這意味著構建中存在棘手的依賴性。您會看到錯誤,如果構建中較早存在構建問題,就找不到某些DLL。通常,您只需進行普通(非清潔)構建即可解決此問題,因為在上次彙編中將存在丟失的文件。如果這沒有修復問題,請查看是否實際存在DLL(如果確實如此),則重建應修復它)。一一逐步降低項目並單獨構建它們以查看哪個失敗“首先”是有意義的。
關於Perfview的另一個不尋常的事情是,它包含帶有樣品的擴展機制。這種擴展機制是“全局”項目(之所以稱其為全局擴展,其命令沒有明確的“範圍”),需要參考perfview來解決其某些參考。因此,您將在“全球”項目中找到許多“找不到的”問題。這些可以忽略,直到您獲得構建工作的所有其他部分。
存儲庫的不變性之一是,如果您正在運行Visual Studio 2022,並且只需同步並構建Perfview.sln文件,則應該“只是工作”。如果這沒有發生,並且上述建議無濟於事,那麼我們需要修復回購或更新上述建議。因此,打開GitHub問題是合理的。如果這樣做,目標是解決問題,這意味著您必須將足夠的信息投入到問題中才能做到這一點。這完全包括您嘗試的內容以及錯誤消息。
您還可以從命令行構建完善(但是您仍然需要安裝Visual Studio 2022)。這是一個兩步的過程。首先,您必須還原所有所需的Nuget軟件包,然後進行構建本身。為此:
如果找不到“ MSB8036:未找到Windows SDK版本10.0.17763.0”,或者找不到錯誤的錯誤,或者坦率地說,與構建ETWClrProfiler DLL相關的任何錯誤,您應該確保已安裝Windows 10 SDK。不幸的是,除非您明確要求它,否則該庫往往不再使用Visual Studio安裝。要修復其啟動Visual Studio Installer,請修改安裝,然後在C ++桌面開發下查看,並檢查Windows SDK 10.0.17763.0選項是否選擇了。如果沒有,請選擇並繼續。然後嘗試再次構建Perfview。
如果您遇到錯誤的“ MSB8040:此項目需要的spectre降低庫””,請修改Visual Studio安裝,以確保您具有'MSVC V143-vs 2022 C ++ X64/X86 Speckre-Mitigigatized Libs(最新)'組件的安裝。
Perfview具有許多具有自動測試的測試項目。可以通過選擇測試 - > Run->所有測試菜單項,可以在Visual Studio中運行。要獲得最徹底的結果(當然,如果您打算提交更改),則需要使用產品的調試構建來運行這些測試(請參閱頂部工具欄中的文本窗口,它說“調試”或“發行”)。如果測試失敗,則可以右鍵單擊“失敗的測試”,然後選擇“調試”上下文菜單項以在調試器下運行測試以找出出了什麼問題。
該存儲庫使用Azure Devops自動構建和測試拉動請求,這使社區可以輕鬆查看構建結果。這裡反映的構建和狀態是主分支的Azure DevOps構建狀態。
配x Azure DevOps CI生產的構建不被視為官方的完美構建,也沒有以任何方式簽署或以其他方式為安全或保障進行驗證。該構建集成是為社區參與者提供的便利,但並未得到微軟的認可,也不以任何方式被視為官方發行渠道。有關官方構建的信息,請參見“完美下載”頁面。
您可以通過自己構建代碼,進行調試或製作本地專業的功能來從源代碼庫中獲得很多價值,但是開源軟件的真正功能會在您返回共享代碼庫並因此幫助整個社區時發生。儘管我們鼓勵這一點,但您需要更多的努力。如果您有興趣加緊,請在啟動之前先查看Perfview貢獻指南和Perfview編碼標準。
該代碼分為幾個主要部分: