Слайд 2Профайлинг
Профайлинг - измерение использования ресурсов
время – основной ресурс
Инструменты разрабатываются уже 40 лет

Слайд 3Измерения никогда не бывают точными
Проблемы профайлинга
Программа
Программа
программа
программа
программа

Слайд 4Постановка задачи
Протестировать и сравнить современные промышленные профайлеры
Intel VTune
AMD CodeAnalyst
AQTime
Определить, в каких случаях

один профайлер предпочтительнее другого
Сравнить их со своей разработкой
Слайд 5Единицы измерений
До некоторого времени использовались clocks
Tclocks / ν – время выполнения инструкции

в секундах
Сейчас все используют другие единицы
события,
timer samples,
однозначно не переводятся в секунды
Слайд 6Причины проблем
Конвейер инструкций (суперскалярность),
Предсказание ветвлений (спекулятивность),
Беспорядочность,
Гиперпоточность, суперпоточность,
Кеши

Слайд 7Тестирование профайлеров
Примеры подбирались таким образом, чтобы внести наибольшие погрешности в показания
Пример теста
std::cin

>> k;
int m = n / k;
for (int i = 0; i < m; i++) {
for (int j = 0; j < k; j++) {
s += j;
}
}
Слайд 8Автоматизация тестирования
Intel VTune
пакетный файл,
скрипт извлечения данных из отчета
AMD CodeAnalyst
пакетный файл,
программа на

С++
AQTime
пакетный файл,
GUI,
excel
Слайд 9Результаты тестирования (1/7)
Использование памяти
Без использования памяти
AMD
INTEL

Слайд 10Результаты тестирования (2/7)
Использование памяти
Активное использование памяти
AMD
INTEL

Слайд 11Результаты тестирования (3/7)
Использование памяти
Использование памяти с промахами кеша
AMD
INTEL

Слайд 12Результаты тестирования (4/7)
Предсказание ветвлений
Маленький цикл
AMD
INTEL

Слайд 13Результаты тестирования (5/7)
Предсказание ветвлений
Периодически выполняемые операции
AMD
INTEL

Слайд 14Результаты тестирования (6/7)
Потеря контекста
Погрешность семплирования
AMD

Слайд 15Результаты тестирования (7/7)
Частый вызов процедур
Ошибка профайлера AQTime
AMD

Слайд 16Сравнение профайлеров
AMD CodeAnalyst проявил себя лучше всех
Работает на процессорах обоих типов
Intel VTune

на процессорах Intel работает так же хорошо как и CodeAnalyst
AQTime хуже всех
значительная погрешность в некоторых тестах
ошибка профайлинга
отсутствие гибких средств автоматизации тестирования
Слайд 17Результаты
Разработан собственный профайлер использующий метод подсчета инструкций
Предложена методика тестирования профайлеров
разработаны тесты
автоматизирован процесс

тестирования
предложена функция перевода единиц
Выявлены преимущества и недостатки профайлеров
Предложены рекомендации по использованию инструментов