- Вручную запустить perf record, perf script, увидеть выдачу. Написать скрипт для запуска record, script. Первый коммит в репозиторий. Детально
- Разбор perf script в скрипте. Извлечение имени объектного файла и количества сэмплов из perf script. Детально
- Формирование записей: sqlite. Сохранение perf файлов. Обновление количества сэмплов при повторных запусках. Детально
- Подготовка профиля. Для всех perf файлов: perf2bolt. merge-fdata. Детально
- Оптимизация при превышении заданного количества сэмплов. Вызов BOLT. Сохранение оптимизированного файла. Детально
- Проверка оптимизированного файла. Детально
- Подмена оптимизированных файлов при помощи символических ссылок. Сброс количества сэмплов. Флажок в бд. Детально
- systemd: создать .service и .timer. Детально
- Измерение производительности для вручную собранного clang. Детально
- Обзор. Инструкция по установке: зависимости, сервис. Инструкция по мониторингу. Требования к бинарным файлам. Детально
- Ротация perf файлов. Детально
- Выделение функций. Выделить вызовы perf, работу с бд и другие части в отдельные функции. Функция main.
- Параметризация опций: argparse. Пути к файлам perf и бд как параметры командной строки.
- Логирование. Печать всех сообщений в лог.
- Пакетирование. Публикация. Детально
- Выделение Buildid из объектного файла - уникальный идентификатор.
- Пред-oптимизация. Анализ динамического покрытия.
- Фильтрация приложений: perf record с IPC, icache/iTLB метриками.
- БД: среднее IPC, icache MPKI, iTLB MPKI.
- BAT mode.
- Systemd: CPU, memory limits.
- per-input: test hook, bolt_opts. source file regex -> hook/opts