性能工具设计简介(2)

发表于:2014-11-21来源:uml.org.cn作者:hoboss点击数: 标签:性能工具设计
用线形图来表示CPU占用 纵向表示CPU使用率,横向表示时间。用颜色来区分用户态CPU和内核态CPU。类似这样的图还可以用来表示无响应时间,内存占用等。

  用线形图来表示CPU占用

  纵向表示CPU使用率,横向表示时间。用颜色来区分用户态CPU和内核态CPU。类似这样的图还可以用来表示无响应时间,内存占用等。

  另外我们也可以自动分析堆栈数据,找出一段时间内连续出现在堆栈中的函数,在线形图上醒目标出。因为这种情况很有可能是卡住或阻塞了。如下图红线所占有的时间段内表示主线程堆栈中都有USER32.dll 77D18816调用,再配合PDB就知道调用的是哪个函数了。这样可以方便的找出性能瓶颈。

  还有其它各种表现形式,我们完全可以跟据自己的需要来实现。

  性能工具本身的影响

  性能工具在监听目标进程收集性能数据,本身就会有性能的开销。比如增加log,注入后Hook相关函数等等。这些负面影响不可避免的,我们尽量将其影响减少。比如Log写入文件会带来IO开销,我们就采用先将log写入内存,当数据采集停止后一次性写入文件等,并且在记录内存开销时减掉log所占用的内存。

  总结

  总之,开发自己的性能工具,首先要明确自己关注哪些性能点,然后在此基础上确定所需要的数据;然后确定性能工具需要哪些功能,接着一步一步实现它就好了。最后别忘了跟据自己的需要持续改进。

原文转自:http://www.uml.org.cn/Test/201302212.asp