Upload
phuc
View
91
Download
5
Tags:
Embed Size (px)
DESCRIPTION
Исследование и тестирование семплирующего метода профайлинга на примере профилировщика производительности Intel VTune Amplifier XE 2011. Выполнил: Одеров Роман, 345 гр. Научный руководитель: Баклановский М.В., ст. преподаватель кафедры СП. 2012. Повысить производительность!. - PowerPoint PPT Presentation
Citation preview
Исследование и тестирование семплирующего метода профайлинга
на примере профилировщика производительности
Intel VTune Amplifier XE 2011
Выполнил:Одеров Роман, 345 гр.
Научный руководитель:Баклановский М.В.,
ст. преподаватель кафедры СП
2012
2
Повысить производительность!
3
Методы профайлинга
• Семплирование– Периодический замер системных счетчиков
• Инструментирование– Добавление в код специальных команд,
осуществляющих сбор информации о ее работе
4
Достоинства и недостатки методов
• Семплирование+ относительная простота+ не изменяет код программы- статистический подход
• Инструментирование+ точность- изменение кода программы
5
Существующие продукты
Intel VTune Amplifier XEMicrosoft xPerf
AMD CodeAnalyst
СЕМПЛИРОВАНИЕ
6
Постановка задачи
Определить
• недостатки семплирования
• слабые места профайлера
• влияние на производительность системы
7
“Simple Asm”
<…>mov rcx, 10000000000l1:mov rax,rbploop l1<…>
Функция, выполняющая mov ‘rcx’ раз
Результат: не обнаружено ничего лишнего без VTune ~ 16316 мс с VTune ~16458 мс
8
Main AExternal AMiddle AInternal
“FunctionStackTest”
Вложенные функции
Результат: с оптимизацией профайлер обнаружилтолько функции main и AMiddle.Без оптимизации – все.С VTune ~ 9000 мсБез VTune ~ 9000 мс
9
“CreateProcessesTest”NewProcessCreateAndExit(){
<...>CreateProcess(“EmptyFunction.exe”,...);<...>
}
Main(){for (i = 0; i < quantity; i++) NewProcessCreateAndExit();
}
Функция, создающая “пустые” процессы
Результат: 500 процессов без VTune ~ 18 секунд500 процессов с VTune ~ 15 минут
Замечание: сбор результатов ~ 30 минут
10
Оценка пропущенных вызовов
Идея: • вызывать в циклах (в разных местах программы П1)
функцию IncCounter()• замерить время работы функции с профайлером/без
профайлера• оценить замедление (накладные расходы по времени)
и количество пропущенных вызовов.
Реализация:• Дополнительная программа (П2), реализующая подсчет
времени работы только функции IncCounter()
13
Цель:выявить ошибки семплирующего подхода,
вызванные аппроксимирующей техникой
Способ:из стека вызовов функций соорудить
распределенную (во времени) “пилу”
Реализация:нужно вызывать различные функции N раз “в
глубину”, причем N будет выбираться случайно
“Saw”
14
Состояние стека во времени
tГлуб
ина
вло
жен
ност
и ф
ункц
ий
Series1
0
2
4
6
15
Результаты
• Выявлены недостатки семплирования– Функция может быть незамеченной, даже если работает
большую часть времени– Функция может быть отражена, как hotspot, даже если
работает ничтожно малое время• Накоплен набор тестов, подтверждающих выдвинутые
гипотезы• Замечено серьезное влияние на производительность
Планы на будущее• Продолжение разработки прототипа профайлера ядра MS
WS2008 R2 x64