APDEX

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

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

APDEX (Application Performance Index) – индекс производительности приложения. Открытый международный стандарт, разработанный с целью формирования объективной оценки показателей производительности корпоративных информационных систем.
Проще говоря, APDEX – это индекс, отражающий удовлетворенность пользователей скоростью работы информационной системы. Важно понимать, что речь идет только о скорости, а не о функциональности или удобстве работы. Суть методики состоит в том, что определяются ключевые операции (являются индикаторами скорости работы системы), для каждой из них устанавливается целевое время (время выполнения операции которое полностью устраивает пользователя, обозначается буквой T), фиксируется время выполнения каждой из ключевых операций и рассчитывается индекс производительности – так можно понять, насколько довольны пользователи скоростью работы системы.
При появлении проблем производительности, первое что нужно сделать, это рассчитать APDEX, т.е. сначала необходимо зафиксировать текущее состояние системы и только потом приступать непосредственно к оптимизации.

Методика APDEX

Методика APDEX состоит из следующих шагов:

  • Определение списка ключевых операций
  • Определение целевого времени ключевых операций
  • Определение приоритета ключевых операций
  • Сбор информации о реальном времени выполнения ключевых операций
  • Вычисление APDEX.

Определение списка ключевых операций

Ключевая операция (КО) – это такая операция в информационной системе, которая критически важна для нормального функционирования организации.
Например, в торговой организации проведение документа по продаже товара будет являться ключевой операцией, ведь если документ будет проводиться медленно, то это скажется на бизнесе, покупатели не любят долго ждать. Типичными ключевыми операциями являются: проведение документов, формирование отчетов, выполнение различных обработок и открытие форм.
Под заказчиком не обязательно понимается организация, которая заказала проект по оптимизации, в случае оптимизации собственной конфигурации заказчиком может являться конечный пользователь или начальник отдела, направления, т.е. тот, кто оценивает эффект от оптимизации.
Список ключевых операций всегда составляется вместе с заказчиком.
Ключевой операцией не всегда является та операция, которая выполняется множество раз в течение дня, это может быть и редкая, но критически важная операция. Например, расчет себестоимости, восстановление последовательности и т.д.
Важно понимать, что если выполняется групповая обработка чего-либо, то вся групповая обработка будет являться одной КО, при этом отдельные действия, выполняемые в этой обработке, не являются КО. Например, надо перепровести 5 000 документов за 1 час, здесь ключевой операцией будет являться не проведение каждого отдельного документа, а выполнение всей обработки. Соответственно, и целевое время для данной операции будет 1 час, а не 0,72 секунд на один документ. Это имеет большое значение для расчета APDEX, т.к. выполнение обработки мы можем ускорить, например, распараллеливанием, а ускорить проведение одного документа до 0,72 сек. будет гораздо сложнее для эксперта и дороже для заказчика.
Возможна ситуация, когда документ может содержать как 10 строк, так и 1 000. Естественно, требовать одинакового времени проведения в этом случае будет неправильно. В такой ситуации необходимо разбить одну КО на несколько и к каждой из них предъявить разные требования по времени выполнения. Например, документ, в котором содержится до 50 строк – это одна ключевая операция с одним целевым временем, от 50 до 150 строк – другая КО с другим целевым временем и так далее. Все эти пороги необходимо обязательно согласовать с заказчиком или пользователями.
Также возможна ситуация, когда ключевой является какая-либо длительная и редкая, но важная для бизнеса операция, например, расчет себестоимости. Если КО выполняется 1 раз в месяц, нет возможности собрать 100 замеров и рассчитывать APDEX по формуле, ведь это займет очень много времени. В этом случае нужно просто ускорить операцию, чтобы она укладывалась в целевое время.

Определение целевого времени

Целевое время – это время выполнения операции, которое полностью устроит заказчика.
В формуле расчета APDEX целевое время обозначается буквой Т.
Желательно проставить целевое время самостоятельно и отдать на утверждение заказчику, т.к. часто заказчик затрудняется определить целевое время или делает это очень долго.
Рекомендуется использовать следующие значения для наиболее типичных КО:

Ключевая операция Целевое время (сек.)
Проведение документа 3
Формирование отчета 5
Открытие формы 1

Как правило, выполнение операций за указанное в таблице время не вызывает дискомфорта у пользователей.
Для специфичных операций конкретной конфигурации целевое время необходимо обязательно получить от заказчика.
Возможно, заказчик захочет установить слишком жесткие требования, например, проведение документа за 0,3 секунды, в этом случае, скорее всего, возникло недопонимание. Задача 1С:Эксперта – выяснить истинные цели заказчика и причины таких требований.
Возможно, что в действительности он хочет групповой обработкой перепровести 12 000 документов за 1 час. В этом случае необходимо объяснить заказчику, что ключевой операцией здесь является групповое перепроведение, а не проведение каждого отдельного документа.
В редких случаях заказчик может необоснованно настаивать на слишком малом времени выполнения ключевой операции.
Например, заказчик требует, чтобы документ, независимо от количества строк, проводился за 0,5 сек., тогда необходимо разъяснить, что добиться такого эффекта без серьезных финансовых затрат будет крайне сложно. Когда речь заходит про деньги, заказчик, как правило, выдвигает более реалистичные требования.
Следует понимать, что целевое время не является чем-то неизменным, в процессе работ по оптимизации оно может изменятся в любую сторону, но только по взаимной договоренности.
Например, целевое время операции 2 секунды, APDEX операции равен 0.84, проведен уже большой объем работ, и программная оптимизация не представляется возможной, можно ускорить операцию только апгрейдом оборудования. При этом если увеличить целевое время до 3 секунд, то APDEX будет равен 0,85, что и требуется. В данном случае разумнее увеличить целевое время на 1 секунду, чем покупать дорогостоящее оборудование. Здесь, как и всегда, все зависит от конкретной ситуации.

Определение приоритета

Приоритет ключевой операции – это степень важности ключевой операции с точки зрения деятельности организации. Приоритет должен быть уникальным, т.е. не может быть двух операций с приоритетом 1.
В последовательности шагов методики APDEX, определить приоритет следует сразу после определения ключевых операций, но на практике приоритет чаще всего определяется после выяснения целевого времени.
Обычно приоритет — это порядок, в котором будет производится оптимизация системы.
Часто заказчик затрудняется проставить приоритеты и утверждает, что для него одинаково важны все операции и нужно оптимизировать все сразу. Тем не менее, необходимо понять, с чего начинать оптимизацию. Надо разъяснить заказчику, что в любом случае нужно с чего — то начать и установить порядок. Как правило оптимизацию проводит только один человек, и он не может параллельно работать сразу над несколькими операциями.
На практике в системах с высокой нагрузкой нет возможности ежедневно обновлять конфигурацию. Как правило, в одно обновление попадает оптимизация сразу нескольких операций.
При этом не всегда операции оптимизируются по приоритету, все зависит от ситуации.

Приоритет Ключевая операция APDEX
1 Проведение Реализация товаров и услуг 0,83
2 Проведение Поступление товаров и услуг 0,65

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

Сбор информации о реальном времени выполнения

После определения целей и приоритетов необходимо собрать информацию о фактическом времени выполнения КО. Для этого можно использовать как инструменты фирмы 1С, например, подсистему «Оценка производительности» из Библиотеки стандартных подсистем (БСП), так и альтернативные инструменты, например, облачный сервис контроля производительности по методике APDEX.
При желании вы можете написать свой собственный инструмент для измерения времени выполнения операций.

Вычисление APDEX

На основе собранных данных вычисляется APDEX. Для расчета необходимо выбрать период, за который будет рассчитано значение. В указанных выше инструментах есть возможность просматривать APDEX за произвольный период времени. Чаще всего APDEX рассматривается минимум в разрезе дня.
Рассчитанное значение APDEX нигде не хранится, т.к. при наличии исходных данных его всегда можно рассчитать заново, при необходимости меняя целевое время.
Индекс производительности рассчитывается по следующей формуле:
APDEX = (NS + NT / 2) / N
Где:
NS – число выполнений со временем от 0 до Т
NT – число выполнений со временем от T до 4T
N – общее число выполнений данной операции
Чем больше число выполнений операции, тем точнее APDEX, желательно чтобы замеров было более 100, иначе рассчитанное значение может быть непоказательным.
APDEX может принимать значения от 0 до 1. Если APDEX = 0, значит пользователи не могут работать, т.к. система не отвечает на запросы. Если APDEX = 1, значит пользователи полностью довольны скоростью работы системы.

Диапазон значений APDEX Производительность (мнение пользователей)
0,00 – 0,49 неприемлемо
0,50 – 0,69 очень плохо
0,70 – 0,84 плохо
0,85 – 0,94 хорошо
0,95 – 1,00 отлично

Например, необходимо подсчитать APDEX ключевой операций «Формирование отчета Остатки по складам» за 1 неделю. Целевое время операции (Т) равно 1 секунде.
За этот период операция выполнялась 181 раз, 122 раза операция выполнялась не более 1 секунды и 47 раз от 1 до 4 секунд.
Подставим значения в формулу:
APDEX = (122 + 47 / 2) / 181 = 0,80
Значение 0,80 соответствует оценке «плохо», т.е. пользователи недовольны скоростью формирования этого отчета.
Как только APDEX стал равен значения 0,85 или выше, цель ускорения достигнута.
Зная APDEX каждой ключевой операции, можно получить APDEX всей информационной системы, для этого используется приведенная выше формула, но в качестве переменных выступают суммы значений параметров N, NS и NT. Для приведенной ниже таблицы общий APDEX рассчитывается так: APDEX = (333 + 47 / 2) / 392 = 0,90.

Ключевая операция T N NS NT APDEX
Формирование отчета Остатки по складам 1 181 122 47 0,80
Проведение документа Перемещение со склада 3 211 211 0 1
Общая производительность системы
392 333 47 0,90

Иногда требуется понять, как оптимизация одной ключевой операции повлияет на общий APDEX всей информационной системы. В этом случае можно использовать следующую формулу:
DeltaApdex = (NF + NT / 2) / Nall
Где:
NT — число выполнений операции с временем от Т до 4Т
NF — число выполнений операции с временем больше, чем 4Т
Nall — число выполнений всех операций.

Недостатки методики APDEX

Как и в любой другой методике, у методики APDEX есть свои минусы. Методика плохо работает, если число замеров мало. За минимальное значение, которое обеспечивает корректную оценку, можно взять 100 замеров. Также наличие резких «всплесков» в замерах, слабо отображается в APDEX. Допустим, было 100 замеров некоторой операции. Целевое время равно 3 секундам. 85 операций было выполнено за время от 1 до 3 секунд, остальные операции – за время свыше 600 секунд. В результате получаем следующий APDEX:
APDEX = (NS + NT / 2) / N = (85+0 / 2) / 100 = 0,85
Получается, что значение APDEX соответствует оценке хорошо, но при этом 15 операций выполнились за совершенно неприемлемое время.
При использовании методики следует понимать, что главным все-таки является мнение пользователей, и если они не довольны скоростью работы, значит, либо было ошибочно выбрано время T, либо неправильно встроен код замера. Так же возможно надо поднимать минимальный порог APDEX, например, производить оптимизацию, пока APDEX не достигнет значения 0,90 или выше.
Также очень полезно строить различные отчеты на основании «сырых» замеров и смотреть, как распределяются времена в зависимости от дня недели, пользователя, рабочих часов и т.д., иногда таким образом можно определить некоторые неявные закономерности.
В любом случае необходимо измерять и собирать длительность выполнения ключевых операций. Имея данные о времени выполнения ключевых операций, можно рассчитать индекс производительности по любой формуле.