Анализ производительности последовательного кода. Основы VTune Performance Analyzer ЛЕКЦИЯ 9, часть 2.

Презентация:



Advertisements
Похожие презентации

Advertisements

1. Определить последовательность проезда перекрестка
Таблица умножения на 8. Разработан: Бычкуновой О.В. г.Красноярск год.
Лекция 1 Раздел 1 Windows Phone Темы раздела 3 Windows Phone Устройство на платформе Windows Phone 4.
Help: настройка Visual Studio.Net для создания консоль-приложения на основе Intel C++ с применением OpenMP. Инструменты «Практическое параллельное программирование.
Фрагмент карты градостроительного зонирования территории города Новосибирска Масштаб 1 : 6000 Приложение 7 к решению Совета депутатов города Новосибирска.
Фрагмент карты градостроительного зонирования территории города Новосибирска Масштаб 1 : 6000 Приложение 7 к решению Совета депутатов города Новосибирска.
1 Знаток математики Тренажер Таблица умножения 2 класс Школа 21 века ®м®м.
Набор игр Создание игровых ситуаций на уроках математики повышает интерес к математике, вносит разнообразие и эмоциональную окраску в учебную работу, снимает.
Урок повторения по теме: «Сила». Задание 1 Задание 2.
Урок-обобщение (7 класс – алгебра) МОУ "СОШ 45 г. Чебоксары" Кабуркина М. Н.1.
1 ПРЕЗЕНТАЦИЯ ПАКЕТА ПРОГРАММ «STEP+» Численное исследование автономных систем обыкновенных дифференциальных уравнений и нелинейных уравнений общего вида.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Рисуем параллелепипед Известно, что параллельная проекция тетраэдра, без учета пунктирных линий, однозначно определяется заданием проекций его вершин (рис.
Фрагмент карты градостроительного зонирования территории города Новосибирска Масштаб 1 : 4500 к решению Совета депутатов города Новосибирска от
Проектирование архитектуры ИСО 1. UML 2 Структура определения языка 4.
1 До зеленых человечков: исследовательское тестирование приложений для мобильных Роман Твердохлебов, Санкт-Петербург.
1 Знаток математики Тренажер Таблица умножения 3 класс Школа России Масько Любовь Георгиевна Муниципальное общеобразовательное учреждение средняя общеобразовательная.
Работа учащегося 7Б класса Толгского Андрея. Каждое натуральное число, больше единицы, делится, по крайней мере, на два числа: на 1 и на само себя. Если.
БИТЕК «Бизнес-инжиниринговые технологии» г. Москва, тел.: (495) , Internet: Учебный.
Транксрипт:

Анализ производительности последовательного кода. Основы VTune Performance Analyzer ЛЕКЦИЯ 9, часть 2

2 ЛИТЕРАТУРА 99% - по материалам тренинга Intel для преподавателей ВУЗов, апрель 2006, Нижний Новгород, «свободный перевод» Калининой А.П.

3 Цели и задачи Научиться: Понять предназначение и модели использования VTune Performance Analyzer. Выделять «узкие места» (hotspots) приложения, используя различные формы представления данных анализа (образцов, samples) при сэмплировании (sampling). Понять, каким образом организовано сэмплирование Использовать callgraph для поиска «узких мест»

4 Содержание Что такое VTune Performance Analyzer? Концепции измерения производительности Выявление системных событий (Using the sampling collector) Как «сэмплинг» (sampling) работает Сэмплирование во времени Call Graph

5 VTune Performance Analyzer Поможет вам выявить и решить задачи повышения производительности работы приложения с помощью: Сбора данных, характеризующих эффективность работы системы, на которой приложение выполняется. Организации представления данных анализа в различных взаимосвязанных формах, от системных данных (выполненные инструкции, промахи кэша и т.д.) до соответствующих им участков кода или ассемблерных инструкций. Выявить проблемные места и предложить потенциально возможные решения.

6 Поддерживает... Локальную и удаленную сборку данных Профилирует приложения, которые выполняются на той же системе, где установлен VTune Performance Analyzer Выполняет тестирование на других системах с помощью удаленного агента

7 Локальный анализ производительности Процессоры Intel ® IA-32 Microsoft Windows* Red Hat Linux* SuSE Linux Семейство процессоров Itanium ® Microsoft Windows Red Hat Linux SuSE Linux Версии поддерживаемых операционных систем смотреть в комментариях к релизу

8 Host/Target Environment VTune Performance Analyzer поддерживает удаленную сборку данных VTune Performance Analyzer устанавливается на «хост» -системе Удаленный агент устанавливается на исследуемой системе Host-система Windows* операционная система Управляет выполнением на исследуемой системе Просмотр результатов анализа Target- система Семейство процессоров IA-32 или Itanium ® Windows или Linux* Intel ® PXA2xx processors running Windows CE* LAN соединение

9 Обзор возможностей Сэмплинг (Sampling) Call graph

10 Sampling: сбор всех данных о производительности данной системы Возможности VTune Analyzer и модели использования

11 Вид «Sampling Over Time» показывает, как зависит от времени количество собранных образцов Возможности VTune Analyzer и модели использования

12 Вид «Sampling Source» показывает участки кода вместе с количеством собранных образцов Возможности VTune Analyzer и модели использования

13 Call Graph собирает и показывает информацию для потока выполнения программы – «критический путь» Возможности VTune Analyzer и модели использования

14 Что такое «узкое место» (hotspot)? Место («где») в приложении или системе, в котором наблюдается значительная активность Где = адрес в памяти=> процесс операционной системы=> поток операционной системы=> выполняемый файл или модуль=> функция пользователя => линия строки кода или ассемблерная инструкция для процессора Значительная: не = активность, проявляющаяся нерегулярно, вряд ли будет иметь большое влияние на производительность системы Активность = проведенное время или другое внутреннее событие процессора Примеры других событий: промахи кэша (Cache misses), непредсказание переходов (branch mispredictions), выполненная инструкция над числом с плавающей точкой (floating-point instructions retired), partial register stalls, and so on.

15 Сэмплирование (Sampling): статистический метод поиска «узких мест» (Hotspots) Собирает данные Периодические прерывания процессора Через определенные временные интервалы (Time-based) Когда произойдет определенное количество микроархитектурных событий (Event-based) Запоминает контекст Адрес выполнения в памяти (CS:IP) Процесс операционной системы и номер потока ID Выполняемый модуль, загруженный по данному адресу Если есть символьная информация для данного модуля, функция или метод, связанные с этим адресом, будут идентифицированы. Номер строки в символьном файле может непосредственно указать на соответствующую строку кода программы.

16 Сбор системных событий (Sampling Collector) Периодически прерывает процессор, чтобы получить контекст выполнения Режим «через временной промежуток» (Time-based sampling (TBS)) переключается посредством: Таймера операционной системы Каждые n процессорных «клоктиков» (clockticks) Режим «Через определенное количество событий» (Event- based sampling (EBS)) : прерывание, когда счетчик данного события стал равен определенной величине Частота и набор этих событий зависят от типа исследуемого процессора, например, промахи кэша второго уровня (L2 cache misses), непредсказанные переходы (branch mispredictions), выполненная инструкция над числом с плавающей точкой (floating-point instructions retired), и т.д.

17 Результаты сэмплирования для процесса операционной системы Этот процесс операционной системы собрал максимальное количество «клоктик»-образцов Отсортированы по количеству «клоктиков» Отсортированы по количеству «клоктиков» VTune Analyzer Sampling: сбор данных

18 Щелкнуть здесь: вид «процесс OS » Щелкнуть здесь: вид «процесс OS » Покажет данные только для образцов типа Clockticks VTune Analyzer Sampling: сбор данных Щелкните здесь для вывода временной развертки Щелкните здесь для вывода временной развертки

19 Этот «вид» покажет только один тип событий для процесса 1 VTune Analyzer Sampling: сбор данных Щелкните здесь, чтобы установить прерывания посредством CPU. Щелкните здесь, чтобы установить прерывания посредством CPU.

20 Вид «таблица»: показаны данные для выделенной строки. VTune Analyzer Sampling: сбор данных

21 Вид «Hotspot» («узкие места»): представляет один модуль во всех процессах и потоках OS : группировка «по функциям» VTune Analyzer Sampling: сбор данных

22 VTune Analyzer Sampling: сбор данных

23 Все для данной строки кода Активность для инструкции VTune Analyzer Samplin: сбор данных Щелкните здесь, чтобы увидеть код ассемблера Щелкните здесь, чтобы увидеть код ассемблера

24 Totals for Source Line Activity at Instruction Locations VTune Analyzer Sampling: сбор данных Красные промежутки – больше образцов. Zoom In Zoom Out Выбрать событие

25 Задание 1. Поиск «узких мест» (Hotspot) Научитесь это выполнять с помощью VTune analyzer.

26 Три главных достоинства сэмплинга Вы не должны изменять Ваш код. Но ВЫПОЛНЯТЬ compile/link с символьной информацией и номерами строк (отладочная информация). Убирать оптимизацию. Получаете характеристики работы всей системы (system- wide). Не только ВАШЕ приложение. Вы можете наблюдать активность кода операционной системы,включая драйвера. «Накладные расходы» («оверхед») для сэмплинга чрезвычайно малы. Высокая достоверность при малых изменениях.

27 Как работает Event-based Sampling (EBS) (Conceptual Diagram) Сигнал от выбранного события после n событий Контролер Прерываний § Прерывает CPU Как выбрать количество событий (Sample After number)?

28 Сколько образцов достаточно? Один миллион образцов для 5-секундной работы? Вы уверены, что для статистической обработки этого достаточно? А оверхед большой? А если всего 100 образцов? А если 1? И каково качество анализа? Около 1,000 образцов в секунду – хороший баланс между результатами и погрешностью

29 Как сделать: 1,000 образцов в секунду Как, например, это сделать для «клоктиков» (clockticks)? Зависит от частоты CPU ОТВЕТ: через частоту CPU в килогерцах (KHz) Если частота CPU = 1,400,000,000 Герц (Hz) То «сэмплировать» через 1,400,000 clockticks Как определить эту величину, например, для промахов чтения кэша второго уровня (L2 cache read misses)? Это зависит от того, как часто получается промах второго кэша (miss the L2 cache)! «Круговое определение»? Сделайте оценку! Насколько реже, чем «клоктики»? 10раз? 100раз? 1000 раз?

30 Калибровка Установите количество n «сэмплировать после n» таким, чтобы количество получаемых образцов было нормальным. ~1000 образцов в секунду для логического CPU Сбор требует двойного выполнения приложения Калибровка «вручную»: Убрать Calibrate Sample After С помощью диалога Advanced Activity Configuration Выполнить со значениями по умолчанию (оценочными) Выполнить тест Изменить число и опять выполнить тест Постарайтесь получить 1000 образцов в секунду для логического CPU

31 Sampling во времени Показывает распределение во времени системных событий для процессов, потоков, модулей Крупный-мелкий масштаб Нужен для: Определить стабильность производительности во времени Понимания поведения потоков

32 Модель применения Sampling Over Time Собрать данные Выбрать тип событий, интересный Вам для процесса, потока, модуля «Щелкнуть» Выделить нужный регион «Щелкнуть» «Щелкнуть», чтобы увидеть временную гистограмму для process/thread/address

33 Задание 2: сэмплирование во времени (Sampling Over Time) Получить временную диаграмму

34 Профилирование с помощью Call Graph Отслеживает точки входа и выхода в выполняемых функциях Вашего приложения во все время работы Использует бинарное инструментирование Использует собираемые данные, чтобы определить поток выполнения, критические функции и последовательности вызовов Не для всей системы (не system-wide): профилирует только путь вызовов в приложении (in Ring 3)

35 Что можно исследовать? Win32 applications Stand-alone Win32* DLLs Stand-alone COM+ DLLs Java applications.NET* applications ASP.NET applications Linux32* applications

36 Вид Call Graph Красная линия показывает критический путь- путь, где затрачено максимальное время. Использует собственное время работы функции (self time). Оранжевый цвет показывает функции с максимальным собственным временем. Фильтрация посредством self time

37 Окно навигации Call Graph Используйте окно навигации, чтобы увидеть локализацию точки входа call graph.

38 Переключение видов Call Graph: вид таблица вызовов (Call List)

39 Характеристики, определяемые Call Graph ХарактеристикаОписание Собственное время (Self Time) Полное время работы функции, исключая время работы функций, вызываемых ей самой (включая время ожидания). Полное время (Total Time) Время от точки входа до точки выхода функции Полное время ожидания (Total Wait Time) Время локализации в функции и подфункциях во время блокировки потока Время ожидания (Wait Time) Время локализации в функции (без подфункций) во время блокировки потока выполнения Количество вызовов (Calls) Сколько раз вызывалась функция

40 Задание 3: Call Graph Найдите «узкие места» (hotspot) в gzip, используя call graph.

41 Сравнение Sampling и Call Graph SamplingCall graph Низкий оверхедВысокий оверхед Характеристики всей системы (System- wide) Только Ring 3 в дереве вызовов вашего приложения Гистограммы всех событий системыПоказывает иерархию вызовов функции с подсчетом вызовов, времени. Показывает критический путь Чтобы получить уровень функции, нужна debug-информация Выполнить «линкование» (re-link) с /Fixed:no, автоматически инструментируется Сэмплирование на основе времени и других процессорных событий На основе времени

42 Counter Monitor: показания счетчиков операционной системы во времени VTune Analyzer: возможности и модели применения

43 The Tuning Assistant: дает совет на основе анализа производительности VTune Analyzer: возможности и модели применения

44 Intel® Tuning Assistant Находит «узкие места» для: Pentium® 4, Pentium M®, Itanium® 2, and Pentium® III процессоров. Использует данные EBS (режим калибровки «по событиям») и данные Counter Monitor.

45 Intel® Tuning Assistant

46 Intel® Tuning Assistant VTune analyzer автоматически выбирает события в сэмплинг - визарде

47 Подробнее: щелкните гиперссылку. Intel® Tuning Assistant

48 Интерфейс командной строки Windows* Можно собирать данные с помощью командной строки. Просмотр данных в VTune Performance Analyzer или экспорт как текстов ASCII. Включает vtlв командной строке.

49 Windows* Command Line Interface Создает скрытую структуру проекта Создать активность: vtl create [имя активности] +опции Выполнить активность: vtl run [имя активности] Просмотр: vtl show Просмотр результатов в определенной форме: vtl view [имя активности::result] [опции] Уничтожить проект: vtl delete –all Уничтожить активность: vtl delete

50 Windows* примеры команд Сбор образцов clockticks, instructions retired and launch app matrix.exe: vtl activity a1 –c sampling –app matrix.exe run Просмотр hotspots в matrix.exe: vtl view a1::r1 –hf –mn matrix.exe Просмотр samles в каждом модуле системы: vtl a1::r1 view –modules

51 Windows*: Help интерфейса командной строки Для любых аргументов командной строки: vtl –help Для сэмплинга: vtl –help –c sampling Подробнее: Start->Programs->Intel® VTune Performance Analyzer->Help for the Command Line

52 Call Graph: дополнительные возможности Установка уровня инструментирования. Контролировать оверхед Выбрать инструментируемые функции. Помогает контролировать оверхед

53 Call Graph Advanced Options Это уровень инструментирования модуля. «Щелк здесь» для установки уровня инструментирования.

54 Уровни инструментирования УровеньОписаниеНужна ли Debug- информация? All Functions (все функции) Каждая функция инструментируетсяДа Custom (заказанные функции) Только некоторые, выбранные функции инструментируются Да ExportEvery function in the modules export table is instrumented. Нет MinimalThe module is instrumented but no data is collected for it. Нет

55 Опции дополнительных возможностей Call Graph Cache directory location Этот режим полезен при анализе долго работающих и «объемных» приложений. Если его не установить, работа с памятью может быть очень медленной. Allow call graph to instrument COM interfaces.

56 Выбор инструментируемой функции Здесь можно установить статуc «инструментируется» или «не инструментируется» для любой выбранной функции

57 Вместе: Sampling и Call Graph Примените sampling для выявления «тяжелых» функций. Примените call graph, чтобы понять, кто их вызывает.

58 Sampling и Call Graph показывают разные Hotspots? Собственное время Call Graph включает время в ожидании. Event-based sampling (EBS) и time-based sampling (TBS) не включает время ожидания в функциях (оно обычно проявляется в системных процессах). Hotspots должны быть теми же для (self time – wait time) (это – «non-blocked self time»).

59 Показатели эффективности последовательного кода Программа работает максимально быстро Должен быть «запас прочности» на случай «неблагоприятных условий» - эффективная работа процессора Должны быть возможности к распараллеливанию Оптимизация последовательного кода

60 Направления оптимизации программы Показатели эффективности последовательного кода

61 Факторы, способствующие эффективной работе процессора при обработке данных чем меньше общее количество данных, участвующих в работе чем реже число обращений к ним чем больше степень повторного использования данных, находящихся в кэше… Но это далеко не все! Возникают вопросы: Какая из этих характеристик важнее? Как количественно определить роль того или иного фактора? А может быть, есть что-то еще, более важное? Оптимизация последовательного кода

62 Выбор количественных показателей эффективной работы процессора при обработке данных необходимо хотя бы в самом общем виде изучить схему работы процессора и схему симметричной мультипроцессорной машины. Выделить в схемах устройства, имеющие максимальное число связей, на которые ложится максимальная нагрузка при обработке данных Иметь инструмент, чтобы наблюдать характер процесса Оптимизация последовательного кода

63 Микроархитектура Netburst, используемая в микропроцессоре Intel Xeon Выбор количественных показателей эффективной работы процессора …

64 Что можно извлечь из диаграммы блоков процессора… пути обмена данными «оперативная память, шина, третий кэш, второй кэш, первый кэш» узел с максимальным числом связей - второй кэш, который связан и с первым кэшем, и с третьим кэшем, и с другими устройствами К тому же: не везде есть третий кэш, тогда второй кэш связан напрямую с шиной … Вопрос: можно ли ограничиться рассмотрением количества обращений во второй кэш как показателем эффективности? Ответ: нельзя, так как, хотя и обращение к другим уровням памяти бывает и реже, но требует больше времени… Каждый новый уровень иерархии обращения к памяти требует больше времени, как правило, на порядок… Выбор количественных показателей эффективной работы процессора…

65 Латентность при обращении к различным иерархическим уровням памяти. Пример: Origin2000 memory hierarchy Level Latency (cycles) register0 primary cache2..3 secondary cache8…10 local main memory & TLB hit 75 remote main memory & TLB hit 250 main memory & TLB miss2000 page fault10^6 Выбор количественных показателей эффективной работы процессора…

66 На что следует обратить внимание… Обращения во второй кэш Характеристики работы шины… А также другие события, входящие в группу «Memory events» VTune Sampling Analysis Группа: из-за особенности работы VTune: нечеткие события: при сложном событии на момент прерывания фиксируется то простое событие, которое произошло последним… Выбор количественных показателей эффективной работы процессора …

67 Выбор показателей эффективности работы процессоров для SMP – систем необходимо хотя бы в самом общем виде изучить схему симметричной мультипроцессорной машины. Выделить разделяемые узлы Иметь инструмент, чтобы наблюдать характер процесса… Оптимизация последовательного кода

68 Диаграмма блоков SMP – системы. Пример: IBM System 370 Выбор показателей эффективности работы процессоров для SMP – систем

69 Что можно извлечь из диаграммы SMP системы… Разделяемый ресурс – шина… Синхронизация доступа к памяти – на уровне 2-ого кэша процессоров… Вывод: те же нагруженные узлы, что и в случае одного процессора… Выбор показателей эффективности работы процессоров для SMP – систем

70 Методика выбора оптимальных последовательных вариантов при оптимизации работы с памятью Основные критерии выбора алгоритма программной реализации: - Время работы - минимально - CPI – минимально Возможность распараллеливания - чем выше, тем лучше. Дополнительные показатели: - События, выделяемые Tuning Assistant на основе группы событий, отвечающей за работу с памятью – позволяют выбрать направление для оптимизации Замечание. Если время работы различных вариантов имеет один порядок, то группа выбирается из категории «events», если временные отличия значительные, дополнительно нужно рассмотреть группу из категории «events ratio» Оптимизация последовательного кода