Вы когда-нибудь хотели протестировать и количественно показать, будет ли ваше приложение работать лучше в виде статической сборки или совместно используемой сборки, с разделом или без раздела, с upx или без upx, gcc -O2 или gcc -O3, hash или btree и т. Д. и т.д. Если это так, это тема для вас. Существуют сотни способов настройки приложения, но как мы собираем, организуем, обрабатываем, визуализируем последствия каждого эксперимента.
Я искал в течение нескольких месяцев среду разработки / профилирования производительности приложений с открытым исходным кодом, похожую по концепции на Perftastic в Mozilla, где я могу разрабатывать / создавать / тестировать / профилировать сотни воплощений различных экспериментов по настройке.
Некоторые требования:
Платформа
SUSE32 и SUSE64
Формат данных
Очень гибкий, компактный, простой, иерархический. Есть несколько возможностей, включая
Сбор данных
Гибкие и настраиваемые плагины. Из приложения можно получить много данных, включая данные о производительности из / proc, время sys, время стены, использование ЦП, профиль памяти, утечки, журналы valgrind, фрагментацию арены, ввод-вывод, сокеты localhost, размер двоичного файла, открытые fds, и т.д. И некоторые из хост-системы. Мой язык для этого - Python, и я бы разработал эти плагины для мониторинга и / или анализа данных во всех различных форматах и сохранения их в формате данных платформы.
Tagging
Все эксперименты будут помечены, включая данные, такие как версия GCC и параметры компиляции, платформа, хост, параметры приложения, эксперимент, тег сборки и т. Д.
Graphing
История, Сравнительная, Иерархическая, Динамическая и Статическая.
- Сборки приложений выполняются специальным сервером CI, который выпускает новую версию приложения несколько раз в день последние 3 года подряд. Вот почему нам нужен постоянный анализ тенденций. Когда мы добавляем новые функции, исправляем ошибки, меняем параметры сборки, мы хотим автоматически собирать данные профилирования и видеть тренд. Именно здесь необходимо генерировать различные статические сборки.
- Для анализа Динамические графики Mozilla отлично подходят для сравнительного построения графиков. Было бы здорово иметь сравнительный график между разными тегами. Например, сравните N версий сборки, сравните платформы, сравните варианты сборки и т. Д.
- У нас есть набор тестов из 3K тестов, данные будут собираться для каждого теста и группироваться из данных между тестами, для каждого теста, для каждой отмеченной группы, для завершения набора регрессии.
- Возможности включают RRDTool , Orca , Графит
Анализ по группам
- Min
- Макс
- Медиана
- Avg
- Стандартное отклонение
Презентация
Все это будет представлено и проконтролировано через сервер приложений, желательно Django или TG.
Вдохновение