Теоретический анализ и разработка методик оценки достоверности информации, получаемой современными профайлерами Исполнитель: Булычев И.Д. Научный руководитель: Баклановский М.В.
Профайлинг - измерение использования ресурсов время – основной ресурс Инструменты разрабатываются уже 40 лет
Измерения никогда не бывают точными Программа программа
Протестировать и сравнить современные промышленные профайлеры Intel VTune AMD CodeAnalyst AQTime Определить, в каких случаях один профайлер предпочтительнее другого Сравнить их со своей разработкой
До некоторого времени использовались clocks T clocks / ν – время выполнения инструкции в секундах Сейчас все используют другие единицы события, timer samples, однозначно не переводятся в секунды
Конвейер инструкций (суперскалярность), Предсказание ветвлений (спекулятивность), Беспорядочность, Гиперпоточность, суперпоточность, Кеши
Примеры подбирались таким образом, чтобы внести наибольшие погрешности в показания Пример теста std::cin >> k; int m = n / k; for (int i = 0; i < m; i++) { for (int j = 0; j < k; j++) { s += j; }
Intel VTune пакетный файл, скрипт извлечения данных из отчета AMD CodeAnalyst пакетный файл, программа на С++ AQTime пакетный файл, GUI, excel
Без использования памяти AMD INTEL
Активное использование памяти AMD INTEL
Использование памяти с промахами кеша AMD INTEL
Маленький цикл AMD INTEL
Периодически выполняемые операции AMD INTEL
Погрешность семплирования AMD
Ошибка профайлера AQTime AMD
AMD CodeAnalyst проявил себя лучше всех Работает на процессорах обоих типов Intel VTune на процессорах Intel работает так же хорошо как и CodeAnalyst AQTime хуже всех значительная погрешность в некоторых тестах ошибка профайлинга отсутствие гибких средств автоматизации тестирования
Разработан собственный профайлер использующий метод подсчета инструкций Предложена методика тестирования профайлеров разработаны тесты автоматизирован процесс тестирования предложена функция перевода единиц Выявлены преимущества и недостатки профайлеров Предложены рекомендации по использованию инструментов
Результат зависит только от программы (детерминизм) На результаты не влияют оптимизации процессора На результаты не влияют обращения к памяти операции ввода-вывода фоновая нагрузка