Слайд 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Результаты
Разработан собственный профайлер использующий метод подсчета инструкций
Предложена методика тестирования профайлеров
разработаны тесты
автоматизирован процесс
тестирования
предложена функция перевода единиц
Выявлены преимущества и недостатки профайлеров
Предложены рекомендации по использованию инструментов