Skip to content

Latest commit

 

History

History
47 lines (46 loc) · 3.12 KB

README.md

File metadata and controls

47 lines (46 loc) · 3.12 KB

План работ по шагам

Запуск perf, БД

  1. Вручную запустить perf record, perf script, увидеть выдачу. Написать скрипт для запуска record, script. Первый коммит в репозиторий. Детально
  2. Разбор perf script в скрипте. Извлечение имени объектного файла и количества сэмплов из perf script. Детально
  3. Формирование записей: sqlite. Сохранение perf файлов. Обновление количества сэмплов при повторных запусках. Детально

Оптимизация

  1. Подготовка профиля. Для всех perf файлов: perf2bolt. merge-fdata. Детально
  2. Оптимизация при превышении заданного количества сэмплов. Вызов BOLT. Сохранение оптимизированного файла. Детально
  3. Проверка оптимизированного файла. Детально
  4. Подмена оптимизированных файлов при помощи символических ссылок. Сброс количества сэмплов. Флажок в бд. Детально

Автоматический сервис

  1. systemd: создать .service и .timer. Детально

Применение и результаты

  1. Измерение производительности для вручную собранного clang. Детально

Страница проекта

  1. Обзор. Инструкция по установке: зависимости, сервис. Инструкция по мониторингу. Требования к бинарным файлам. Детально

Better engineering

  1. Ротация perf файлов. Детально
  2. Выделение функций. Выделить вызовы perf, работу с бд и другие части в отдельные функции. Функция main.
  3. Параметризация опций: argparse. Пути к файлам perf и бд как параметры командной строки.
  4. Логирование. Печать всех сообщений в лог.
  5. Пакетирование. Публикация. Детально

Расширенная функциональность

  1. Выделение Buildid из объектного файла - уникальный идентификатор.
  2. Пред-oптимизация. Анализ динамического покрытия.
  3. Фильтрация приложений: perf record с IPC, icache/iTLB метриками.
  4. БД: среднее IPC, icache MPKI, iTLB MPKI.
  5. BAT mode.
  6. Systemd: CPU, memory limits.
  7. per-input: test hook, bolt_opts. source file regex -> hook/opts