您是否曾经想要测试并定量显示您的应用程序作为静态构建或共享构建、剥离或非剥离、upx 或无 upx、gcc -O2 或 gcc -O3、哈希或 btree 等是否会表现得更好。如果所以这是适合你的话题。 调整应用程序的方法有数百种,但我们如何收集、组织、处理、可视化每个实验的结果。
几个月来,我一直在寻找一个概念类似于 Mozilla 的 Perftastic 的开源应用程序性能工程/分析框架,其中我可以开发/构建/测试/分析数百种不同的调优实验。
一些要求:
平台
SUSE32 和 SUSE64
数据格式
非常灵活、紧凑、简单、分层。 有多种可能性,包括
数据采集
灵活且可定制的插件。 有很多数据需要从应用程序中收集,包括来自 /proc 的性能数据、系统时间、挂机时间、CPU 利用率、内存配置文件、泄漏、valgrind 日志、arena 碎片、I/O、本地主机套接字、二进制大小、打开的 fds、等等,还有一些来自主机系统。 我选择的语言是 Python,我将开发这些插件来监视和/或解析所有不同格式的数据,并将它们存储在框架的数据格式中。
标记
所有实验都将被标记,包括 GCC 版本和编译选项、平台、主机、应用程序选项、实验、构建标记等数据。
绘制
历史记录、比较、分层、动态和静态。
- 应用程序构建由自定义 CI 服务器完成,该服务器在过去连续 3 年中每天多次发布新的应用程序版本。 这就是为什么我们需要持续的趋势分析。 当我们添加新功能、修复错误、更改构建选项时,我们希望自动收集分析数据并查看趋势。 这是需要生成各种静态构建的地方。
- 对于分析来说,Mozilla 动态图表非常适合进行比较图表。 如果能在不同标签之间进行比较图表就太好了。 例如,比较 N 个构建版本、比较平台、比较构建选项等。
- 我们有一个 3K 测试的测试套件,每个测试都会收集数据,并从测试间数据、每个测试、每个标记组、到完整的回归套件。
- 可能的选项包括 RRDTool、逆戟鲸,石墨< /a>
基于分组的分析
演示
所有这些都将通过应用程序服务器呈现和控制,最好是 Django 或 TG。
灵感
Have you ever wanted to test and quantitatively show whether your application would perform better as a static build or shared build, stripped or non-stripped, upx or no upx, gcc -O2 or gcc -O3, hash or btree, etc etc. If so this is the thread for you. There are hundreds of ways to tune an application, but how do we collect, organize, process, visualize the consequences of each experiment.
I have been looking for several months for an open source application performance engineering/profiling framework similar in concept to Mozilla's Perftastic where I can develop/build/test/profile hundreds of incarnations of different tuning experiments.
Some requirements:
Platform
SUSE32 and SUSE64
Data Format
Very flexible, compact, simple, hierarchical. There are several possibilities including
Data Acquisition
Flexible and Customizable plugins. There is lots of data to collect from the application including performance data from /proc, sys time, wall time, cpu utilization, memory profile, leaks, valgrind logs, arena fragmentation, I/O, localhost sockets, binary size, open fds, etc. And some from the host system. My language of choice for this is Python, and I would develop these plugins to monitor and/or parse data in all different formats and store them in the data format of the framework.
Tagging
All experiments would be tagged including data like GCC version and compile options, platform, host, app options, experiment, build tag, etc.
Graphing
History, Comparative, Hierarchical, Dynamic and Static.
- The application builds are done by a custom CI sever which releases a new app version several times per day the last 3 years straight. This is why we need a continuous trend analysis. When we add new features, make bug fixes, change build options, we want to automatically gather profiling data and see the trend. This is where generating various static builds is needed.
- For analysis Mozilla dynamic graphs are great for doing comparative graphing. It would be great to have comparative graphing between different tags. For example compare N build versions, compare platforms, compare build options, etc.
- We have a test suite of 3K tests, data will be gathered per test, and grouped from inter-test data, to per test, to per tagged group, to complete regression suite.
- Possibilities include RRDTool, Orca, Graphite
Analysis on a grouping basis
- Min
- Max
- Median
- Avg
- Standard Deviation
- etc
Presentation
All of this would be presented and controlled through a app server, preferably Django or TG would be best.
Inspiration
发布评论
评论(3)
本周 PyCon 上有一次演讲讨论了今天 Python 上的各种分析方法。 我认为任何东西都不如您所寻找的那么完整,但它可能值得一看。
http://us.pycon.org/2009/conference/schedule/event /15/
您应该能够在本周晚些时候在 blip.tv 上找到实际的演讲
http://blip.tv/search?q=pycon&x= 0&y=0
There was a talk at PyCon this week discussing the various profiling methods on Python today. I don't think anything is as complete as what your looking for, but it may be worth a look.
http://us.pycon.org/2009/conference/schedule/event/15/
You should be able to find the actual talk later this week on blip.tv
http://blip.tv/search?q=pycon&x=0&y=0
我不确定你的问题到底是什么,但是为了分析 Java(网络)应用程序,你可以使用 netbeans profiler 和 profiler4j(在 sourceforge 上提供)。 我都使用过,并且可以推荐它们而不是 eclipse tptp。
请参阅如何设置 Eclipse TPTP
和http://profiler4j.sourceforge.net/
编辑:抱歉,刚刚注意到您将此标记为Python问题,所以这一定不是有效的答案为你。
I'm not sure what your question is precisely, but for profiling Java (web)applications you can use the netbeans profiler and profiler4j (available on sourceforge). I have used both and can recommend them over eclipse tptp.
See How to set up Eclipse TPTP
and http://profiler4j.sourceforge.net/
edit: Sorry, just noticed you tagged this as Python question, so this must not be a valid answer for you.
您可能必须构建您正在寻找的东西,但您可能会从
,当目的不是衡量性能而是改进性能时,您可能会从这个,其中 这是一个使用示例。
You may have to build what you're looking for, but you might start from
Also, when the purpose is not so much to measure performance as to improve it, you might get some ideas from this, where this is an example of its use.