性能分析工具-PerfView

Roslyn的PM(程序经理) Bill
Chiles,Roslyn使用纯托管代码开发,但性能超过之前使用C++编写的原生实现,这有什么秘诀呢?他最近写了一篇文章叫做《Essential
Performance Facts and .NET Framework Tips
》里头推荐了一个性能分析工具《Improving
Your App‘s Performance with
PerfView
》。PerfView能够收集Windows事件跟踪(ETW)数据来追踪程序的调用流向,这些程序通过调用哪个函数识别频率。除了配置程序性能数据(Perfmon、PAL和Xperf等工具不能轻松完成),PerfView还能分析程序内存堆来帮助确定内存的运用是否高效。它还有一个Diff功能,可以让你确定跟踪间的任意差别来帮助你认出所有逆行。最后,该工具还有一个Dump功能可以生成一个程序内存转储。

安装PerfView

从微软下载的 PerfView
包括一个zip压缩文件,其中只有一个可执行的文件perfview.exe,这简化了安装。你可以将这个文件复制到多个你想跟踪的服务器上,然后在这些服务器或你本地的工作站中分析数据。PerfView在Windows
Vista、Windows 7、Windows Server 2008、Windows Server 2008 R2和Windows Server
2012上都受到支持,要求.NET FX 2.0以上。

收集配置数据

PerfView利用Windows事件追踪,而ETW从Windows 2000
Server以来就一直内置于操作系统中。只是最近才有XPerf和PerfView一类的工具利用ETW数据来解决性能问题。事件数据被收集到一个事件跟踪日志(ETL)中。根据你想要跟踪事件的数量和时间的长度,ETL文件可能会非常大。你可以限制这个日志文件的大小,如果空间受限或者你不知道问题何时发生的话,你还可以让它们循环。默认每毫秒一次的采样间隔在收集时间内产生了大概百分之十的CPU开支。建议大概5000个样本(5秒)用于一次代表性配置采样。

开始一次数据收集有两种方式,用运行命令启动一个程序或者用收集命令在计算机范围内收集数据。这些命令可以由收集下拉菜单下的GUI引发,或者从CLI或脚本中执行“PerfView
run”或“PerfView collect”命令。下图显示运行命令tutorial.exe时收集数据的过程,tutorial.exe是一个内置的训练练习。

查看结果

一旦你在些之间针对性能问题收集了数据,你可以用PerfView分析ETL文件。该ETL文件会出现在左边的窗口,有收集日志或运行命令期间你提供的名字。通过双击该RTL文件,十来个独立的节点会和指代它们内容的名字一起出现。例如,你会在下图中看到跟踪信息、程序、事件、CPU堆栈。双击各个节点,适当的查看器会打开这些内容。

为了针对一个特定程序分析计算密集型性能问题,你将需要学习要调用的堆栈和函数。这可以通过双击左侧窗口中的“CPU堆栈”节点完成。接着你会得到提示来选择你感兴趣的程序。最后,该CPU堆栈查看器会在独立的窗口中打开,如下图QQ进程的信息
,你可以确定调用了哪个函数以及它们的频率。

如果你仔细查看上面的例子,你会发现第一行显示<<user32!?>>。“!?”代表PerfView不能解析这个模块名称。你可以双击这个未知模块名称并选择“查找符号”来显示该模块名称。按用户指南所述配置符号路径对于解析操作系统函数名称也许是有必要的。

PerfView是一个便于用户的工具,可以用来收集和分析ETW数据用于解决配置程序性能数据的问题。这个工具可以快速地显示为这个程序执行的操作系统函数,了解性能问题可能潜藏的位置。

性能分析工具-PerfView,布布扣,bubuko.com

时间: 2024-11-03 21:14:03

性能分析工具-PerfView的相关文章

三种Linux性能分析工具的比较

无论是在CPU设计.服务器研发还是存储系统开发的过程中,性能总是一个绕不过去的硬指标.很多时候,我们发现系统功能完备,但就是性能不尽如意,这时候就需要找到性能瓶颈.进行优化.首先我们需要结合硬件特点.操作系统和应用程序的特点深入了解系统内部的运行机制.数据流图和关键路径,最好找出核心模块.建立起抽象模型:接着需要利用各种性能分析工具,探测相关模块的热点路径.耗时统计和占比.在这方面,Linux操作系统自带了多种灵活又具有专对性的工具,此外一些厂家也开源了不少优秀的性能分析工具.下面就结合笔者最近

Java 性能分析工具

如何利用 JConsole观察分析Java程序的运行,进行排错调优 http://jiajun.iteye.com/blog/810150 如何使用JVisualVM进行性能分析 http://jiajun.iteye.com/blog/1180230 全功能的Java剖析工具(profiler) http://www.blogjava.net/mrzhangshunli/archive/2007/08/27/140088.html http://www.cnblogs.com/jayzee/p

.NET 性能分析工具

Download .NET Profiler http://www.yourkit.com/dotnet/download/ dotTrace 5.5 Performance http://www.jetbrains.com/profiler/ .NET 性能分析工具,布布扣,bubuko.com

系统级性能分析工具perf的介绍与使用

测试环境:Ubuntu14.04  on VMWare Kernel:3.13.0-32 系统级性能优化通常包括两个阶段:性能剖析(performance profiling)和代码优化.性能剖析的目标是寻找性能瓶颈,查找引发性能问题的原因及热点代码.代码优化的目标是针对具体性能问题而优化代码或编译选项,以改善软件性能. 在性能剖析阶段,需要借助于现有的profiling工具,如perf等.在代码优化阶段往往需要借助开发者的经验,编写简洁高效的代码,甚至在汇编级别合理使用各种指令,合理安排各种指

linux下面的性能分析工具简介

iostat 命令详解 iostat用于输出cpu和磁盘I/O相关的统计信息.命令格式: Usage: iostat [ options ] [ <interval> [ <count> ] ] Options are: [ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] [ -j { ID | LABEL | PATH | UUID | ... } [ <devi

Java性能优化指南系列(二):Java 性能分析工具

进行JAVA程序性能分析的时候,我们一般都会使用各种不同的工具.它们大部分都是可视化的,使得我们可以直观地看到应用程序的内部和运行环境到底执行了什么操作,所以性能分析(性能调优)是依赖于工具的.在第2章,我强调了基于数据驱动的性能测试是非常重要的,我们必须测试应用的性能并理解每个指标的含义.性能分析和数据驱动非常类似,为了提升应用程序的性能,我们必须获取应用运行的相关数据.如何获取这些数据并理解它们是本章的主题.[本章重点介绍JDK中提供的性能分析工具] 操作系统工具及其分析 程序分析的起点并不

Oracle性能分析工具介绍及使用

oracle数据库级别优化分析工具介绍 当我们对数据库优化诊断时,需要收集相应的信息以供参考,从个人的使用经验来说,这种统计数据分为两大类 一类是数据库级别的统计信息二类是os级别的统计信息 下面就分别介绍在不同的级别下,常用什么工具来收集信息帮助优化诊断 首先是oracle数据库级别优化分析工具介绍 目录: 1.statspack2.ASH3.AWR4.ORACLE EXPLAIN PLAN的总结(查询sql的执行计划)   a.autotrace   b.explain的使用 1.stats

超全整理!Linux性能分析工具汇总合集

出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章.本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面.如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列. 本文档主要是结合Linux 大牛,Netflix 高级性能架构师 Brendan Gregg 更新 Linux 性能调优工具的博文,搜集Linux系统性能优化相关文章整理后的一篇综合性文章,主要是结合博文对涉及到的原理和性

Visual Studio代码性能分析工具

AMD CodeXL 2011年发布的AMD CodeAnalyst Performance Analyzer 现在已经被AMD CodeXL所替代.AMD CodeXL的主要目的是帮助开发者更好利用CPU, GPU和APU的计算性能,具有强大的GPU调试.CPU和GPU代码分析.及静态的OpenCL内核性能分析等能力. AMD提供了支持Windows 7.Windows 8和Linux系统的单机版CodeXL分析工具.在Visual Studio 2010,2012和2013上也有AMD Co