Если рассматривать максимальную рабочую пропускную способность в качестве меры производительности, то необходимо иметь в виду одну неувязку. Дело в том, что для пользователей не существует допустимого порога среднего времени отклика - на самом деле они думают о возможном допущении для худшего времени отклика. Слово «допустимый» скорее ассоциируется с некоторым предельным значением, чем с каким-то непонятным средним. Представим себе такой диалог:
Пользователь: Моя форма ввода заказа работает слишком медленно. Мы договаривались о том, что допустимое время отклика для обработки формы после ее заполнения должно быть полторы секунды, но на самом деле время отклика составляет менее 1,5 секунды лишь в 63,2% случаев.1
Я не случайно выбрал для этого примера число 63,2%. Это значение интегральной функции экспоненциального распределения в средней точке. То, что в диалоге названы именно эти цифры, означает, что пользователь наблюдает за поведением системы, среднее время отклика которой составляет приблизительно 1,5 секунды.
Администратор системы: На самом деле все именно так, как мы и договаривались. Речь шла лишь о том, что среднее время отклика для формы ввода заказа не должно превышать 1,5 секунд, а вы только что признали, что эта цель была достигнута.
Поставщик информации выполнил то, что было указано в соглашении об уровне обслуживания, но система не соответствует ожиданиям пользователя. На самом деле желание пользователя могло бы быть сформулировано, например, так:
Обработка формы после завершения ввода заказа должна завершаться не позднее чем в через 1,5 секунды, по меньшей мере, для 95 из каждых 100 исполнений.
Или, обобщая:
Функция f должна завершать свою работу не позднее чем через r секунд, по крайней мере, в p процентах своих исполнений.
С функциональной точки зрения подобное утверждение составляет основу соглашения между потребителем и поставщиком информации. Указывается, что для пользователей недопустимо возрастание времени отклика функции выше определенного значения. Отмечается и тот факт, что поставщик не может гарантировать, что абсолютно все пользователи останутся довольны производительностью данной функции, однако поставщик обещает свести неприятности к пренебрежимо малому проценту выполнений.
Как вы, наверное, догадываетесь, теория массового обслуживания предоставляет нам математические средства для вычисления тех величин, которые нам необходимы для создания подобных соглашений о качестве обслуживания. Одна из итоговых формул теории массового обслуживания предоставляет нам возможность определить минимальный уровень вложений в системные ресурсы, который необходим для удовлетворения требований к производительности системы в рамках экономических ограничений ее владельцев. Интегральная функция распределения (Cumulative Distribution Function - CDF) времени отклика позволяет вычислить вероятность P(R < r) того, что при выполнении определенного запроса время отклика окажется не больше некоторого допустимого значения r. Возможно, это самая полезная характеристика, предоставляемая моделью массового обслуживания, т. к. она позволяет непосредственно измерить степень удовлетворенности пользователя временем отклика.
Интегральная функция распределения времени отклика вычисляется по сложной формуле. Для частного случая - системы массового обслуживания M/M/m (о которой речь пойдет ниже) - она выглядит следующим образом [Gross and Harris (1998) 72-73]:
В примере 9.3 показан вариант решения этой задачи на старом добром Visual Basic.
Как я понял, что CDF-формула Джейна ошибочна
Формула Джейна для интегральной функции распределения времени отклика [Jain (1991), 528, 531] довольно долго не давала мне покоя. Она содержит такое выражение:
Я еще не понимал, о чем, собственно, в формуле идет речь, но наличие двух одинаковых членов (-eur) казалось мне странным. Почему автор или редактор не сгруппировал одинаковые члены и не записал их как -2e-lir? Оставалось предположить, что имела место какая-то типографская ошибка.
Я решил провести эксперимент. Выбрал произвольное целое значение для переменной m. В пакете Mathematica сгенерировал случайное время обслуживания s1 из экспоненциального распределения со случайно выбранным средним значением Затем получил случайное время между последовательными поступлениями запросов t1 из экспоненциального распределения со случайно выбранным средним значением 1/X. Применив известную нам формулу R = S + W, я вычислил ожидаемое время отклика системы, в которой время обслуживания и время между последовательными поступлениями запросов равнялись соответственно сгенерированным мною случайным числам. Имея на входе значения m, |_i = 1/s1 и X = 1/t1, вычислить R было несложно.
Я повторил свой эксперимент несколько миллионов раз (для нескольких миллионов случайных значений времени обслуживания si, выбранных из экспоненциального распределения со средним значением 1/| , и нескольких миллионов случайных значений интенсивности поступлений ti, выбранных из экспоненциального распределения со средним значением 1/X). Сохранил результаты. Затем для случайно выбранного значения времени отклика r я просто сосчитал, какое количество значений времени отклика, полученных в ходе моих экспериментов, оказалось меньше r. Количество значений, не превышающих r, должно было приблизительно соответствовать значению интегральной функции распределения Джейна (именно так, по определению, она должна вести себя).
Но формула Джейна раз за разом выдавала результаты, не совпадающие с моим экспериментом. Зато формула Гросса и Хэрриса [Gross and Harris (1998) 72-73] всегда давала значения, совпадающие с моими результатами. Я пытался связаться с доктором Джейном, чтобы представить ему результаты моих исследований, но на момент написания этой книги ответа не получил.
Одна из сложностей реальных систем массового обслуживания состоит в том, что невозможно точно предсказать время поступления запросов в систему (на самом деле, если бы запросы поступали в систему через равные интервалы времени и при этом не изменялось бы и время обслуживания, то при условии устойчивости системы никаких очередей бы не было). Например, мы можем считать, что запросы в телефонную систему поступают с частотой приблизительно 2,0 запроса в секунду, но неразумно ожидать поступления запросов с интенсивностью ровно один запрос каждые полсекунды. В большинстве реальных систем можно ожидать, что поступления запросов будут случайным образом распределены во времени. Мы предполагаем, что можно прогнозировать «среднее поведение» для большого количества запросов, но понимаем, что предсказать каждое отдельное время отклика невозможно.
< Предыдущая | Следующая > |
---|