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编码标准。
该代码分为几个主要部分: