stringtranslate.com

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

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

Систематическая настройка состоит из следующих шагов:

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

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

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

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

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

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

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

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

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

См. основную статью в разделе Performance Engineering.

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

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

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

См. основную статью на сайте «Оптимизация (информатика)» .

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

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

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

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

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

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

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

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

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

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

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

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

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

Узкие места

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

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

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

Рекомендации

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