Прогноз производительности

редактировать

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

Существует множество подходов к прогнозированию производительности программы на компьютере. Их можно условно разделить на три основные категории:

  • прогнозирование на основе моделирования
  • прогнозирование на основе профиля
  • аналитическое моделирование

прогнозирование на основе моделирования

Данные о производительности могут быть получены непосредственно из компьютерных имитаторов, в которых каждая инструкция целевой программы фактически динамически выполняется при заданном конкретном наборе входных данных. Симуляторы могут очень точно предсказать производительность программы, но для обработки больших программ требуется значительное время. Примеры включают симуляторы PACE и Wisconsin Wind Tunnel, а также новейший инструментарий моделирования WARPP, который пытается значительно сократить время, необходимое для моделирования параллельной системы.

Другой подход, основанный на моделировании на основе трассировки, запускает не все инструкции, а запускает файл трассировки, в котором хранятся только важные программные события. Этот подход теряет некоторую гибкость и точность по сравнению с симуляцией с точностью до цикла, упомянутой выше, но может быть намного быстрее. Создание трассировок часто требует значительного объема дискового пространства и может серьезно повлиять на время выполнения приложений, если во время выполнения записывается большой объем данных.

Прогнозирование на основе профиля

Классический подход прогнозирования производительности трактует программу как набор базовых блоков, соединенных путем выполнения. Таким образом, время выполнения всей программы - это сумма времени выполнения каждого базового блока, умноженная на его частоту выполнения, как показано в следующей формуле:

T program = ∑ i = 1 n (TBB i ∗ FBB i) { \ displaystyle T_ {program} = \ sum _ {i = 1} ^ {n} {(T_ {BB_ {i}} * F_ {BB_ {i}})}}{\ displaystyle T_ {program} = \ sum _ {i = 1} ^ {n} {(T_ {BB_ {i}} * F_ {BB_ {i}})}}

Генерация частоты выполнения базовых блоков из профилировщика , поэтому этот метод называется прогнозированием на основе профиля. Время выполнения базового блока обычно получается из простого планировщика инструкций.

Классическое прогнозирование на основе профилей хорошо работало для ранних процессоров с одной проблемой и упорядоченного выполнения, но не в состоянии точно предсказать производительность современных процессоров. Основная причина в том, что современные процессоры могут выдавать и выполнять несколько инструкций одновременно, иногда не в исходном порядке и пересекая границы базовых блоков.

Последняя правка сделана 2021-06-01 09:20:46
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте