Опубликован: 11.10.2012 | Доступ: свободный | Студентов: 307 / 58 | Длительность: 07:36:00
Лекция 5:

Intel® VTune Amplifier XE

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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