开源性能分析框架?
你有没有想过要测试一下你的应用程序在不同情况下表现得怎么样,比如静态构建和共享构建、去掉调试信息和保留调试信息、使用UPX压缩和不使用UPX、用gcc -O2还是gcc -O3、使用哈希表还是B树等等。如果有的话,这个讨论串就是为你准备的。调优应用程序的方法有很多,但我们该如何收集、整理、处理和可视化每次实验的结果呢?
我已经找了好几个月,想要一个开源的应用性能工程/分析框架,类似于Mozilla的Perftastic,这样我就可以开发、构建、测试和分析成百上千种不同的调优实验。
一些需求:
平台
SUSE32和SUSE64
数据格式
需要非常灵活、紧凑、简单、分层的格式。可以有几种选择,包括:
数据采集
需要灵活和可定制的插件。我们需要从应用程序中收集很多数据,包括来自/proc的性能数据、系统时间、实际时间、CPU使用率、内存情况、内存泄漏、valgrind日志、内存碎片、I/O、localhost套接字、二进制文件大小、打开的文件描述符等等,还有一些来自主机系统的数据。我打算用Python来开发这些插件,监控和解析各种格式的数据,并将它们存储在框架要求的数据格式中。
标记
所有实验都会被标记,包括GCC版本、编译选项、平台、主机、应用选项、实验、构建标签等数据。
图表
需要历史、比较、层次、动态和静态的图表。
- 应用程序的构建是由一个自定义的CI服务器完成的,这个服务器在过去三年里每天发布多个新版本。这就是我们需要持续趋势分析的原因。当我们添加新功能、修复bug或更改构建选项时,我们希望自动收集性能数据并查看趋势。这就是需要生成各种静态构建的地方。
- 在分析方面,Mozilla动态图表非常适合进行比较图表。能够在不同标签之间进行比较图表会很好。例如,比较N个构建版本、比较平台、比较构建选项等等。
- 我们有一个包含3000个测试的测试套件,数据会根据每个测试收集,并从测试间数据、每个测试、每个标记组到完整的回归测试套件进行分组。
- 可能的工具包括RRDTool、Orca、Graphite
基于分组的分析
- 最小值
- 最大值
- 中位数
- 平均值
- 标准差
- 等等
展示
所有这些内容都将通过一个应用服务器进行展示和控制,最好是使用Django或TG。
灵感来源
3 个回答
我不太确定你的问题具体是什么,不过如果你想分析Java(网页)应用的性能,可以使用netbeans profiler和profiler4j(在sourceforge上可以找到)。我用过这两个工具,觉得它们比eclipse tptp要好。
你可以看看 如何设置Eclipse TPTP
还有 http://profiler4j.sourceforge.net/
补充一下:抱歉,我刚注意到你把这个问题标记为Python相关,所以这个回答可能对你不太适用。
这周在PyCon大会上,有人讨论了现在Python中各种性能分析的方法。我觉得可能没有你想要的那么全面,但看看也许会有帮助。
你应该能在本周晚些时候在blip.tv上找到这场讲座的录像,链接在这里:http://blip.tv/search?q=pycon&x=0&y=0