Оценка интегральной производительности системы по методике APDEX

Краткое содержание:

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

Решаемые задачи

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

Пример 1. Внедрение информационной системы

Имеется заказчик, который планирует внедрять информационную систему на платформе 1С:Предприятие. Заказчик хотел бы иметь гарантии того, что внедренная система будет работать с требуемой производительностью.

Необходимо внедрить систему и обеспечить требуемую производительность ее работы. Для этого нужно решить следующие подзадачи:

Пример 2. Оптимизация работающей информационной системы

Имеется заказчик, которого не устраивает текущая производительность работы информационной системы на платформе 1С:Предприятие. Требуется провести оптимизацию системы и довести ее производительность до необходимого уровня.

Для этого нужно решить следующие подзадачи:

Требования к методике оценки производительности

Для решения приведенных выше задач необходимо оценивать производительность. Оценка должна быть:

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

Методика APDEX

Методика APDEX является широко распространенным международным стандартом оценки производительности информационных систем. Оценка производительности системы по методике APDEX состоит из следующих основных этапов:

После этого можно интерпретировать полученный результат в терминах качественных оценок (то есть, по шкале «хорошо - плохо»).

Получить список ключевых операций

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

Рекомендуется считать операцию ключевой при выполнении одного из следующих условий:

Список операций должен составляться при непосредственном участии специалистов заказчика. Полученный список операций следует поместить в таблицу (например Excel).

Операция
Приходный кассовый ордер
Товарная накладная ТОРГ-12
Реализация товаров и услуг
Расходный ордер на товары

Определить приоритет каждой операции

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

Приоритеты операций должны определяться при непосредственном участии специалистов заказчика.

Добавьте в таблицу колонку «Приоритет» и заполните ее полученными значениями. Отсортируйте операции по приоритету. Обычно считается, что 1 – наивысший приоритет, 2 – следующий и т.д.

Операция Приоритет
Реализация товаров и услуг 1
Расходный ордер на товары 2
Приходный кассовый ордер 3
Товарная накладная ТОРГ-12 4

Определить целевое время для каждой операции

Для каждой операции необходимо определить целевое время – Т.

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

Целевое время Т для каждой ключевой операции должно определяться при непосредственном участии специалистов заказчика.

Иногда заказчик может затрудняться с определением времени Т для некоторых ключевых операций. В таких случаях можно попробовать решить задачу «от обратного» - зная APDEX, получить значение целевого времени Т.

Добавьте в таблицу колонку «Т» и заполните ее полученными значениями.

Операция Приоритет T
Реализация товаров и услуг 1 3
Расходный ордер на товары 2 20
Приходный кассовый ордер 3 5
Товарная накладная ТОРГ-12 4 10

Собрать информацию о времени выполнения каждой ключевой операции

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

Информация должна быть собрана за достаточно длительный период времени. Рекомендуется собрать данные не меньше чем за один полный рабочий день.

Например, в списке имеется операция «Реализация товаров и услуг». Предположим, что за один рабочий день все пользователи системы ввели 1200 различных документов «Реализация товаров и услуг». Это означает, что мы должны получить и сохранить информацию о реальном времени отклика, которое наблюдали пользователи на каждом из 1200 выполнений операции. В результате мы должны сохранить 1200 различных значений времени выполнения.

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

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

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

На основании собранных данных получить оценку APDEX

Для вычисления APDEX, необходимо обработать данные по времени выполнения всех ключевых операций и получить следующие значения:

Значение APDEX вычисляется по формуле: APDEX = (NS + NT/2)/N

Операция Приоритет T N NS NT APDEX
Реализация товаров и услуг 1 3 1012 262 403 0.46
Расходный ордер на товары 2 20 2136 2003 133 0.97
Приходный кассовый ордер 3 5 1012 318 524 0.57
Товарная накладная ТОРГ-12 4 10 2136 1325 567 0.75

Полученные числовые значения APDEX могут быть интерпретированы в терминах качественных оценок, то есть по шкале «хорошо - плохо».

Интерпретация полученных значений APDEX

Методика APDEX позволяет интерпретировать полученные числовые значения коэффициента в терминах качественных оценок. Шкала APDEX содержит следующие диапазоны значений:

Шкала APDEX

Значение

Оценка

от

до

0.00 0.50 неприемлемо
0.50 0.70 очень плохо
0.70 0.85 плохо
0.85 0.94 хорошо
0.94 1.00 отлично

Применив эту шкалу к таблице получим следующий результат:

Операция Приоритет T N NS NT APDEX Оценка
Реализация товаров и услуг 1 3 1012 262 403 0.46 неприемлемо
Расходный ордер на товары 2 20 2136 2003 133 0.97 отлично
Приходный кассовый ордер 3 5 1012 318 524 0.57 очень плохо
Товарная накладная ТОРГ-12 4 10 2136 1325 567 0.75 плохо

Из полученной таблицы можно сделать следующие выводы:

Применение методики APDEX

Полученные данные APDEX можно применять для решения организационных и технических вопросов в рамках различных задач.

Оптимизация работающей системы

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

1. Объективно оценить текущую производительность системы.

Полученные данные APDEX по всем ключевым операциям зафиксировать в таблице «Начальное состояние системы».

2. Договориться о конечном итоге оптимизации.

Обычно считается, что система работает с достаточной производительностью, если показатели APDEX по всем операциям находятся в зоне «хорошо» или выше (APDEX от 0.85 до 1.00). Достижение целевых показателей производительности системы может быть зафиксировано в договоре в качестве цели работ.

3. Оценить объем и сроки работ, а так же приоритеты оптимизации.

Имея объективную картину текущей производительности и зная целевую производительность можно ориентировочно оценить объем и сроки предстоящих работ по оптимизации. Наиболее важной задачей следует считать вывод в зону «хорошо» ключевых операций с наивысшим приоритетом. На основании полученной таблицы APDEX можно разбить работы на несколько этапов: например, сначала операции с высоким приоритетом, потом – остальные.

4. Отслеживать промежуточные результаты оптимизации.

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

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

5. Оценить результаты проделанных работ.

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

Оценка применимости решения 1С для решения задач заказчика

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

1. Описать требования заказчика к производительности системы.

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

2. Провести нагрузочное тестирование и получить данные APDEX по результатам теста.

Тест необходимо проводить на оборудовании заказчика (или на оборудовании близком по производительности). Тест должен создавать реалистичную нагрузку, адекватную той, которая будет наблюдаться в рабочей системе заказчика.

3. Довести систему до требуемой производительности

Если полученные коэффициенты APDEX не попадают в зону «хорошо» или выше, то следует оптимизировать систему до тех пор, пока не будут получены нужные показатели.

4. Продемонстрировать заказчику результаты тестирования.

Обратная задача: определение целевого времени Т по известному APDEX

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

В этом случае можно попробовать решить задачу от обратного – получить значение времени Т, исходя из субъективной оценки.

Предположим, заказчик затрудняется оценить целевую производительность для операции «Приходный кассовый ордер».

Операция Приоритет T
Реализация товаров и услуг 1 3
Расходный ордер на товары 2 20
Приходный кассовый ордер 3 ???
Товарная накладная ТОРГ-12 4 10

В этом случае последовательность действий может быть следующей:

1. Получить субъективную оценку производительности этой операции.

Следует субъективно оценить производительность данной операции в терминах APDEX, то есть по следующей шкале:

Оценка должна отражать консолидированное мнение всех заинтересованных специалистов заказчика.

Предположим, что заказчик оценил производительность как «очень плохо». Будем считать, что это соответствует значению APDEX = 0.6 (середина интервала «очень плохо»).

2. Получить данные по фактической производительности данной операции в системе.

Необходимо собрать полную информацию о производительности системы при выполнении этой операции.

3. Подобрать такое значение Т, при котором APDEX = 0.6

Необходимо задавать различные значения Т с некоторым шагом, вычисляя APDEX для каждого из значений. При получении нужного значения APDEX – зафиксировать значение Т, для которого оно получено.

Эту процедуру можно автоматизировать. Например, при помощи функции «Подобрать значение», входящей в Excel.

Предположим, что путем такого перебора мы получили значение Т = 5 секунд.

4. Проверить правильность полученного значения Т

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

Вычисление времени отклика на интерактивных операциях

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

Рассмотрим пример, когда документ проводится при нажатии кнопки "ОК" и нам необходимо выполнить замер времени проведения.

  Пример для платформы 8.2:

Для конфигураций на платформе 8.2 предполагается использование "Библиотеки стандартных подсистем". Начиная с версии 1.1.2.3 добавлена подсистема "Оценка производительности", которая позволяет автоматизировать замеры времени. Описание подсистемы можно найти в документации "Библиотеки стандартных подсистем".

1. "ОК" стандартная кнопка.

Для обычных форм:

Открыть форму на редактирование, в контекстном меню кнопки выбирать пункт "Удалить", создать новую кнопку с таким же именем и разместить ее на форме.

Для управляемых форм:

Открыть форму на редактирование, в свойствах формы(свойство "Состав команд") отключить отображение команды "ОК", в редакторе форм создать новую команду с именем "ОК", расположить ее на форме, при необходимости установить свойство "КнопкаПоУмолчанию" в "Истина".

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

Копировать в буфер обмена
&НаКлиенте
Процедура КомандаОК(Команда)
 
  #Если ТолстыйКлиентОбычноеПриложение Тогда
      КлючеваяОперация = Перечисления.КлючевыеОперации.ПроведениеДокумента;
  #Иначе
      КлючеваяОперация = ПредопределенноеЗначение("Перечисление.КлючевыеОперации.ПроведениеДокумента");
  #КонецЕсли
  ОценкаПроизводительностиКлиентСервер.НачатьЗамерВремени(КлючеваяОперация);
 
  Попытка
      #Если ТолстыйКлиентОбычноеПриложение Тогда
          ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);
      #Иначе
          ПараметрыЗаписи = Новый Структура("РежимЗаписи");
          ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение;
          ЭтаФорма.Записать(ПараметрыЗаписи);
      #КонецЕсли
  Исключение
      //Обработка неудачного проведения документа
      //Впишите код для обработки неудачного проведения документа -->
      //...
  КонецПопытки;
 
КонецПроцедуры

2. "ОК" не стандартная кнопка.

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

Копировать в буфер обмена
&НаКлиенте
Процедура КомандаОК(Команда)
 
  #Если ТолстыйКлиентОбычноеПриложение Тогда
      КлючеваяОперация = Перечисления.КлючевыеОперации.ПроведениеДокумента;
  #Иначе
      КлючеваяОперация = ПредопределенноеЗначение("Перечисление.КлючевыеОперации.ПроведениеДокумента");
  #КонецЕсли
  ОценкаПроизводительностиКлиентСервер.НачатьЗамерВремени(КлючеваяОперация);
 
  //......
  //Код написанный в обработчике
  //......
 
КонецПроцедуры


Пример для платформы 8.1:

1. Включите регистрацию ошибок и предупреждений в журнале регистрации (если она еще не включена). Модифицируйте код модуля обычного приложения, вписав в него следующий текст:

Копировать в буфер обмена
Перем ВремяВыполнения Экспорт;
Перем НазваниеОперации Экспорт;
Перем script;
 
Функция ТекущееВремя() Экспорт
  
  Если script = Неопределено Тогда
      script = Новый COMОбъект("scriptControl");
      script.language = "jscript";
      script.addCode("
       |function getTime()
       |{
       |   return new Date() - new Date(0, 0, 0);
       |}");
  КонецЕсли;
  
  Возврат(script.run("getTime"));
 
КонецФункции
 
Процедура ПодключитьОбработчикОкончаниеВыполнения() Экспорт
 
  ПодключитьОбработчикОжидания("ОкончаниеВыполнения", 0.1, Истина);
 
КонецПроцедуры
 
Процедура ОкончаниеВыполнения() Экспорт
 
   ВремяВыполнения = (ТекущееВремя() - ВремяВыполнения) / 1000;
   ЗаписьЖурналаРегистрации(
      "ЦКТП",
      УровеньЖурналаРегистрации.Предупреждение,,
      НазваниеОперации,
      Формат(ВремяВыполнения, "ЧГ=0"));
 
КонецПроцедуры

2. Возможны два варианта:

2.1 "ОК" стандартная кнопка

Открыть форму на редактирование, в контекстном меню кнопки выбирать пункт "Удалить", создать новую кнопку с таким же именем и разместить ее на форме. Обработчик ее нажатия может выглядеть следующим образом:

Копировать в буфер обмена
Процедура ОсновныеДействияФормыОК(Кнопка)
 
  ВремяВыполнения = ТекущееВремя();
  НазваниеОперации = "Проведение документа";
  ПодключитьОбработчикОкончаниеВыполнения();
 
  Попытка
      ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);
      ЭтаФорма.Закрыть();
  Исключение
      //Обработка неудачного проведения документа
      //Впишите код для обработки неудачного проведения документа -->
      //...
  КонецПопытки;
 
КонецПроцедуры

2.2 "ОК" не стандартная кнопка

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

Копировать в буфер обмена
Процедура ОсновныеДействияФормыОК(Кнопка)
 
  ВремяВыполнения = ТекущееВремя();
  НазваниеОперации = "Проведение документа";
  ПодключитьОбработчикОкончаниеВыполнения();
 
  //......
  //Код написанный в обработчике команды
  //......
 
КонецПроцедуры

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

4. По окончании одного полного рабочего дня откройте журнал регистрации, установите фильтр на события «ЦКТП» и сохраните журнал в файл.