stringtranslate.com

Настройка производительности

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

Систематическая настройка выполняется следующим образом:

  1. Оцените проблему и установите числовые значения, которые классифицируют приемлемое поведение.
  2. Измерьте производительность системы перед ее модификацией.
  3. Определите часть системы, которая имеет решающее значение для улучшения производительности. Это называется узким местом .
  4. Измените эту часть системы, чтобы устранить узкое место.
  5. Измерьте производительность системы после модификации.
  6. Если модификация улучшает производительность, примите ее. Если модификация ухудшает производительность, верните ее в исходное состояние.

Это пример цикла «измерение-оценка-улучшение-обучение» из сферы обеспечения качества .

Проблема производительности может быть выявлена ​​по медленным или неотзывчивым системам. Обычно это происходит из-за высокой загрузки системы , в результате чего некоторая часть системы достигает предела в своей способности реагировать. Этот предел в системе называется узким местом.

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

Анализ производительности

Основную статью см. в разделе Анализ производительности.

Анализ производительности, обычно называемый профилированием, — это исследование поведения программы с использованием информации, собранной во время ее выполнения. Его цель — определить, какие разделы программы следует оптимизировать.

Профилировщик — это инструмент анализа производительности, который измеряет поведение программы во время ее выполнения, в частности частоту и длительность вызовов функций. Инструменты анализа производительности существовали по крайней мере с начала 1970-х годов. Профилировщики можно классифицировать по типам выходных данных или методам сбора данных.

Инженерные характеристики

См. основную статью в разделе «Производительность инжиниринга».

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

В различных методологиях было выявлено несколько общих видов деятельности:

Оптимизация кода

Основную статью смотрите в разделе Оптимизация (компьютерные науки) .

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

Оптимизация конфигурации

Современные программные системы, например, системы больших данных, включают несколько фреймворков (например, Apache Storm, Spark, Hadoop). Каждый из этих фреймворков предоставляет сотни параметров конфигурации, которые значительно влияют на производительность таких приложений. Некоторые оптимизации (настройки) включают улучшение производительности приложения путем поиска лучшей конфигурации для таких приложений.

Стратегия кэширования

Кэширование — это фундаментальный метод устранения узких мест производительности, которые являются результатом медленного доступа к данным. Кэширование повышает производительность за счет сохранения часто используемой информации в высокоскоростной памяти, сокращения времени доступа и избегания повторных вычислений. Кэширование — это эффективный способ повышения производительности в ситуациях, когда применяется принцип локальности ссылок . Методы, используемые для определения того, какие данные хранятся в более быстром хранилище, в совокупности называются стратегиями кэширования. Примерами являются кэш ASP.NET , кэш ЦП и т. д.

Балансировка нагрузки

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

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

Распределенные вычисления

Распределенные вычисления используются для увеличения потенциала параллельного выполнения на современных архитектурах ЦП, использование распределенных систем необходимо для достижения преимуществ производительности от доступного параллелизма . Высокопроизводительные кластерные вычисления — это хорошо известное использование распределенных систем для повышения производительности.

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

Самонастройка

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

Узкие места

Узкое место — это часть системы, которая находится на пределе своих возможностей. Другие части системы будут простаивать, ожидая, пока она выполнит свою задачу.

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

Смотрите также

Ссылки

Внешние ссылки