アプリケーションのパフォーマンスが静的ビルドまたは共有ビルド、ストリップまたは非ストリップ、upx または no upx、gcc -O2 または gcc -O3、ハッシュまたは btree などとして優れているかどうかをテストして定量的に示したいと思ったことはありませんか?これはあなたのためのスレッドです。アプリケーションを調整する方法は何百もありますが、各実験の結果をどのように収集、整理、処理、視覚化するのでしょうか。
Mozilla のPerftasticとコンセプトが似ているオープン ソース アプリケーション パフォーマンス エンジニアリング/プロファイリング フレームワークを数か月間探していました。そこでは、さまざまなチューニング実験の何百もの化身を開発/ビルド/テスト/プロファイリングできます。
いくつかの要件:
プラットホーム
SUSE32 および SUSE64
データ形式
非常に柔軟で、コンパクトで、シンプルで、階層的です。いくつかの可能性があります。
- カスタムCSV
- RRD
- プロトコル バッファ
- JSON
- XML はありません。大量のデータがあり、XML は冗長すぎる
データ収集
柔軟でカスタマイズ可能なプラグイン。/proc、sys 時間、経過時間、CPU 使用率、メモリ プロファイル、リーク、valgrind ログ、アリーナの断片化、I/O、localhost ソケット、バイナリ サイズ、開いている fds からのパフォーマンス データなど、アプリケーションから収集するデータはたくさんあります。など。ホストシステムからのものもあります。これに私が選んだ言語は Python です。これらのプラグインを開発して、すべての異なる形式のデータを監視および/または解析し、それらをフレームワークのデータ形式で保存します。
タグ付け
GCC のバージョンやコンパイル オプション、プラットフォーム、ホスト、アプリ オプション、実験、ビルド タグなどのデータを含むすべての実験にタグが付けられます。
グラフ化
歴史、比較、階層、動的、静的。
- アプリケーションのビルドは、過去 3 年間連続して新しいアプリ バージョンを 1 日に数回リリースするカスタム CI サーバーによって行われます。これが、継続的な傾向分析が必要な理由です。新しい機能を追加したり、バグを修正したり、ビルド オプションを変更したりするときに、プロファイリング データを自動的に収集して傾向を確認したいと考えています。これは、さまざまな静的ビルドの生成が必要な場所です。
- 分析に関しては、 Mozilla 動的グラフは比較グラフ作成に最適です。異なるタグ間の比較グラフがあれば素晴らしいと思います。たとえば、N ビルド バージョンの比較、プラットフォームの比較、ビルド オプションの比較などです。
- 3K テストのテスト スイートがあり、データはテストごとに収集され、テスト間データからテストごと、タグ付けされたグループごとにグループ化され、回帰スイートが完成します。
- 可能性にはRRDTool、Orca、Graphiteが含まれます
グループ分けによる分析
- 分
- マックス
- 中央値
- 平均
- 標準偏差
- 等
プレゼンテーション
これらはすべて、アプリ サーバーを介して表示および制御されます。できれば、Django または TG が最適です。