随笔-6  评论-43  文章-0  trackbacks-1
  2009年11月6日

译注:Xperf是一个非常强大(也许还不是非常易用)的Windows系统性能分析工具,但是与之相关的文档却很少。Pigs Can Fly是微软Windows组的一个官方博客,里面有一系列关于Xperf的入门及提高文章。现在尽我的能力翻译翻译一些(翻译的比较栏,可能看原文会更清楚^_^),希望能给大家一些帮助。

Update:为了节省大家下载SDK的时间,我把最新的安装文件和文档(4.6版)放在了这里,感兴趣的话可以试试。

原文地址:http://blogs.msdn.com/pigscanfly/archive/2008/02/09/xperf-a-new-tool-in-the-windows-sdk.aspx

 

Windows SDK组刚刚发布了Windows Server 2008和Vista SP1 SDK的最新版本(译注:现在最新的SDK版本当然是Windows7 SDK),里面包含了Windows性能分析小组的一个很重要的工具:Windows性能工具箱(Windows Performance Tool Kit ,我们下面简称为Xperf)。

作为整个系统范围的性能分析工具,Xperf一直被性能分析小组以及整个Windows组内部广泛使用。多年前Xperf作为一个生成Windows内核ETW事件分析报告的命令行工具被开发出来[1]。现在Windows系统中除内核外很多其他应用程序和模块也都被注入了ETW事件,可以用Xperf来激活,转储和分析。

对于在Windows系统上做性能分析工作的人来说,Xperf是一个很重要的工具,因为它是特意为长时间(几十秒到几分钟)系统范围的性能视图而设计的。要想处理Windows内核所有的事件,分析它们之间的联系,得到一些有意义的结论,唯一的工具就是Xperf。

举个例子,下面是在我的笔记本上打开,编辑,关闭Live Writer过程中,系统盘上所有的磁盘输入输出的详图:

screen-capture[5]

这是在Outlook 2007的启动过程中CPU和磁盘的使用率:

image

跟上图是同一组数据,不过下面的图包括了所有的进程:

image

image

除了显示图形,Xperf还可以把数据用表格的形式展现出来(我们称之为"summary data")。右边的截图显示了在用时6.5秒的对源代码树搜索字符串的过程中,所有的sample profile事件。在这段时间中,73.93%的总CPU时间被idle线程占用,6.78%被find string工具占用,其他还有各个windows服务进程,System进程和Xperf自己(3%)等等。在看summary table的时候,试着拖拽各个列,以得到这些数据的不同角度的视图;以磁盘IO为例,可以根据不同进程,不同IO类型(读,写,……),IO大小,IO服务时间等等来分组所有的IO事件。

上面几个例子只是浅尝辄止,很难说清Xperf可以收集的数据种类之多,可以表达的信息之丰富。这个工具还包括下面一些重要功能:

  • 完整支持对符号(symbol)的解析,包括公开的Windows symbol以及你自己的symbol。这里使用的机制与Debugging Tools for Windows相同。
  • 支持将所有事件转储到CSV文件中。如果Xperf自带的summary table不能满足你的需要,你可以使用Xperf处理工具得到这些事件的文本转储,或者Xperf命令的输出结果(一般是基于XML的),然后写自己的工具来进一步处理。
  • Windows Vista(以及更高版本,包括Server 2008, Windows 7, Server 2008 R2)支持得到所有内核事件的调用栈信息。比如对于sample profile(CPU取样)事件来说,要想理解为什么一个程序耗费了CPU时间,调用栈的信息就很重要。
  • Xperf命令行工具可以用来控制ETW事件的提供者,包括所有的内核事件。
  • 安装后的Xperf包含了一个快速入门指导和基本参考手册(在安装目录中找Performance.Analyzer.QuickStart.docx,同时还有XPS格式)。

在接下来的几个星期,这个博客会介绍更多关于Xperf以及ETW内核事件的信息。Xperf已经有了一个官方主页。在主页上你可以找到关于Xperf的更新,文档,论坛。

说了这么多,在哪才能找到Xperf呢?

  1. 下载iso文件安装Windows 7 SDK,或者使用web安装包
  2. 在SDK安装后的bin目录下找到Xperf的MSI安装文件(xperf_x86.msixperf_x64.msi或者xperf_ia64.msi)。
  3. 双击MSI安装即可。当然,你也可以将MSI文件拷贝到任何一台机器上安装(注意x86,x64,ia64版本的差别)。

[1] 你可以在EVENT_TRACE_PROPERTIES结构体中的EnableFlags字段找到内核支持的事件信息。

[2] Windows性能工具箱中的Xperf工具是对SysInternals tools的很好的补充。

posted @ 2009-11-06 00:11 palo 阅读(1551) 评论(0) 编辑
  2009年6月2日
posted @ 2009-06-02 21:56 palo 阅读(2920) 评论(3) 编辑
  2009年3月30日

基本功能:

  1. 输入正则表达式及需要匹配的文本,可以显示是否匹配,如果匹配,显示所有的match及group。右边可以选择正则表达式的选项。
    image
    image
  2. 如果正则表达式有误,无法编译,会在状态栏显示错误信息
    image
  3. 可以在附带的RegExp.xml文件中加入预定义的正则表达式,启动程序后选择相应的名称,就会把定义好的正则表达式添加到文本框的末尾

    <RegularExpression>
      <Name>
        E-Mail
      </Name>
      <Value>
        <![CDATA[
          ([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})
        ]]>
      </Value>
    </RegularExpression>

    image 

预计下一个版本会加入:

  1. 将搜索结果显示为树形结构,点击其节点可以加亮相应文本
  2. 支持replace

 

 

 

可以在这里下载程序及源代码:

http://regexp.codeplex.com/

posted @ 2009-03-30 21:10 palo 阅读(292) 评论(0) 编辑
  2009年3月29日

跟T61P的对比:

S6304352 

背后是一台19宽的显示器:

S6304348 

屏幕的黑边太大,导致可视范围太小,分辨率也上不去:

S6304350 

老中青三代:

S6304349

顺便贴一下组里用的服务器(4*4核CPU,32G内存):

image

posted @ 2009-03-29 22:10 palo 阅读(158) 评论(0) 编辑
  2009年3月3日

简单写了个小程序,比较了一下C#中各种Lock的速度(前提是都没有进入wait状态)。

各进入离开Lock 1kw次,结果如下:

Lock Time (ms)
No lock 58
CriticalSection 726
Interlocked 344
Readerslim 1932
Writerslim 1513
Reader 3754
Writer 3430
Mutex 24998
Semaphore 24197
Event 22549

 

结论如下:

  1. Interlocked可以直接编译为CPU指令,速度最快,虽然功能较少但能用则用。
  2. CriticalSection(也就是lock关键字或者Monitor.Enter()方法)仅比Interlocked慢,建议使用。
  3. 对于ReaderWriterLock和ReaderWriterLockSlim,Slim快近一倍,但缺点是不能track owner,也就是同一线程不能多次进入同一个lock。Reader比Writer要慢,估计是要维护reader count的原因。
  4. Mutex,Semaphore,Event即使可以获得lock也要进入内核模式,所以最慢,要尽量避免使用。

代码下载:

http://usayjq.bay.livefilestore.com/y1pbebZJ6xcesXSXcujFmihM0LVhFuA62IJ37Gz0vgDI2CLDpEGuwwB_E1E5CnDpJBQoVgilKW-61Y/LockSpeedTester.zip?download

posted @ 2009-03-03 23:55 palo 阅读(921) 评论(3) 编辑
  2009年3月1日
posted @ 2009-03-01 17:22 palo 阅读(13983) 评论(37) 编辑
昵称:palo
园龄:2年11个月
粉丝:5
关注:0
<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

搜索

 
 

常用链接

我的标签

随笔档案

最新评论

阅读排行榜

评论排行榜

推荐排行榜