【发布时间】:2010-09-18 11:49:16
【问题描述】:
您是否曾经想要测试并定量地展示您的应用程序在静态构建或共享构建、剥离或非剥离、upx 或无 upx、gcc -O2 或 gcc -O3、hash 或 btree 等方面是否会表现得更好等等。如果是这样,这就是你的主题。调整应用程序的方法有数百种,但我们如何收集、组织、处理、可视化每个实验的结果。
几个月来,我一直在寻找一个类似于 Mozilla 的 Perftastic 的开源应用程序性能工程/分析框架,我可以在其中开发/构建/测试/分析数百个不同调优实验的化身。
一些要求:
平台
SUSE32 和 SUSE64
数据格式
非常灵活、紧凑、简单、分层。有几种可能性,包括
- 自定义CSV
- RRD
- Protocol Buffers
- JSON
- 没有 XML。数据很多,XML 太冗长
数据采集
灵活和可定制的插件。从应用程序中收集大量数据,包括来自 /proc、sys 时间、wall time、cpu 利用率、内存配置文件、泄漏、valgrind 日志、arena 碎片、I/O、localhost 套接字、二进制大小、打开 fds 的性能数据,等等,还有一些来自主机系统。我选择的语言是 Python,我会开发这些插件来监控和/或解析所有不同格式的数据,并将它们存储在框架的数据格式中。
标记
所有实验都将被标记,包括 GCC 版本和编译选项、平台、主机、应用程序选项、实验、构建标签等数据。
绘图
历史、比较、分层、动态和静态。
- 应用程序构建由自定义 CI 服务器完成,该服务器连续 3 年每天多次发布新应用程序版本。这就是为什么我们需要持续的趋势分析。当我们添加新功能、修复错误、更改构建选项时,我们希望自动收集分析数据并查看趋势。这是需要生成各种静态构建的地方。
- 用于分析Mozilla dynamic graphs 非常适合做比较图表。在不同标签之间进行比较图表会很棒。例如比较 N 个构建版本、比较平台、比较构建选项等。
- 我们有一个包含 3K 测试的测试套件,每个测试都会收集数据,并从测试间数据、每个测试、每个标记组到完整的回归套件进行分组。
- 可能包括RRDTool、Orca、Graphite
分组分析
- 分钟
- 最大
- 中位数
- 平均
- 标准偏差
- 等
演示文稿
所有这些都将通过应用服务器呈现和控制,最好是 Django 或 TG。
灵感
【问题讨论】:
-
是的,我有。究竟是什么问题?如果有人知道这样的野兽?