Опубликован: 11.10.2012 | Уровень: специалист | Доступ: платный
Лекция 5:

Intel® VTune Amplifier XE

Аннотация: Лекция посвящена инструменту динамического анализа Intel® VTune Amplifier XE.

Презентацию к данной лекции Вы можете скачать здесь.

Оптимизация программного обеспечения

Цикл оптимизации

  1. Выявление "горячих пятен" (Hotspots).
  2. Определение причин низкой эффективности:
    • промахи кэш-памяти;
    • доступ к данным;
    • простои выполнения программы;
    • ошибки предсказания ветвлений;
    • другие.
  3. Оптимизация.

Три уровня оптимизации:

  • Системный уровень
  • Уровень приложения
  • Микроархитектурный уровень

1 шаг анализа производительности программы - на уровне системы.

  • Анализ операций обмена с внешними носителями (жесткими дисками).
  • Анализ использования оперативной памяти.
  • Анализ взаимодействия с сетью.

Цель оптимизации на уровне системы – добиться наиболее эффективного взаимодействия программы с системой. Наличие проблем на уровне системы может лишить смысла оптимизацию программы на других уровнях (если программа мало загружает процессор из-за проблем на уровне системы, даже серьезное ускорение на уровне архитектуры не даст, скорее всего, заметного выигрыша).

Оптимизация на уровне приложения - оптимизация алгоритмов.

Выполняется анализ:

  • эффективности использования ППИ;
  • эффективности реализации многопоточности;
  • наличия блокировок;
  • др

3 (самый нижний) уровень анализа – уровень архитектуры. Обладает наименьшим потенциалом эффективности.

Ключевые факторы:

  • использование кэш-памяти;
  • выравнивание данных;
  • другие вопросы.

Наибольший выигрыш (в несколько раз по производительности) достигается на уровне системы.

Умеренный выигрыш - на уровне приложения.

Небольшой выигрыш (до нескольких десятков процентов) - на уровне архитектуры процессора.

При анализе выполнения программы в первую очередь следует обратить внимание на следующие факторы:

  • количество промахов при обращении к кэш-памяти. Каждый промах приводит к дополнительным транзакциям между оперативной памятью и кэш-памятью, что отрицательно сказывается на производительности программы;
  • ошибки в предсказании ветвлений. Предсказание ветвлений позволяет прогнозировать исполнение программы, принимая меры для его ускорения. Чем точнее выполняется предсказание, тем эффективнее исполняется программа;
  • вычисления с плавающей точкой. Значение этого фактора очевидно для вычислительных программ, в которых может выполняться колоссальное количество арифметических операций с плавающей точкой;
  • блокировки, связанные с доступом к ресурсам. Каждая блокировка ведёт к потере производительности;
  • потери производительности, связанные с отсутствием выравнивания данных. Время выполнения команд с невыровненными данными существенно увеличивается, что приводит и к увеличению времени выполнения программы.

В Help имеется информация о событиях, по которым возможен сбор статистики.

Для выполнения анализа приложения VTune потребуются:

  • исполняемый (бинарный) файл, подготовленный соответствующим образом;
  • исходный файл (не обязательно, но желательно, поскольку в этом случае результаты сбора статистики можно "привязать" к исходному коду программы);
  • символьная информация;
  • информация о номерах строк.

Необходим правильно подготовленный тестовый набор данных, соответствующий "стандартной" для данного приложения ситуации. Запуск приложения с этим набором данных даёт опорную точку, по которой будет определяться эффективность различных методов оптимизации производительности.

Евгений Звягин
Евгений Звягин
Россия, Липецк, Липецкий Государственный Технический Университет, 2014
Артур Гибадуллин
Артур Гибадуллин
Россия, Нижневартовск, ФГБОУ ВО НВГУ, Преподаватель