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