DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Распределение Пуассона и экспоненциальное распределение


Агнер Эрланг заметил, что интенсивность поступления вызовов в теле­фонную систему подчиняется распределению Пуассона. Я уже отме­чал, что многие процессы поступления запросов в компьютерных сис­темах, в том числе и в Oracle-системах, также подчиняются распреде­лению Пуассона. Почему же тогда я решил предложить вашему внима­нию M/M/m-модель массового обслуживания, которая работает лишь тогда, когда время между поступлениями запросов и время обслужи­вания характеризуются экспоненциальным распределением? Почему я не выбрал модель, в которой процессы поступления и обслуживания запросов подчиняются распределению Пуассона?
Дело в том, что на самом деле я выбрал модель, в которой процессы по­ступления и обслуживания запросов подчиняются распределению Пу­ассона. Экспоненциальное и пуассоновское распределения связаны об­ратной зависимостью [Gross and Harris (1998) 16-22]:
Для того чтобы система удовлетворяла условию первого «M» из «M/M/m», время между поступлениями запросов должно иметь экспоненциальное распределение. Если вы помните, среднее время между поступлениями запросов т - это величина, обратная средней частоте поступления (т = 1/X). Частота поступления имеет распре­деление Пуассона с параметром X в том и только в том случае, если соответствующее время между поступлениями подчиняется экспоненциальному распределению с параметром 9= т = 1/X.
Для того чтобы система удовлетворяла условию второго «M» из «M/M/m», ее время обслуживания должно быть распределено экс­поненциально. Естественно, среднее время обслуживания обрат­но пропорционально средней скорости обслуживания (S =1///). Скорость обслуживания имеет распределение Пуассона с парамет­ром / в том и только в том случае, если соответствующее время об­служивания подчиняется экспоненциальному распределению с па­раметром = 1//.
Поэтому некоторые авторы говорят о модели M/M/m как о модели, в которой интенсивность поступления и время обслуживания распре­делены по закону Пуассона.
Проверка на соответствие экспоненциальному распределению
Две буквы «M» в обозначении модели массового обслуживания M/M/m означают, что мы можем использовать модель лишь в том случае, если время между поступлениями запросов и время их обслуживания име­ют экспоненциальное распределение. То есть мы можем применять M/M/m для моделирования производительности системы, только если гистограммы времени между поступлениями запросов в систему и ско­рости обслуживания имеют такой же вид, как и кривая функции плот­ности вероятности при экспоненциальном распределении, приведен­ная на рис. 9.11.
Вопрос в том, как определить, достаточно ли «похожи» множество промежутков времени между поступлениями или интенсивность об­служивания на то, что изображено на рис. 9.10? Для определения сте­пени соответствия набора значений некоторому распределению стати­стики применяют критерий согласия хи-квадрат (chi-square goodness-of-fit test). Программа на Perl в примере 9.4 проверяет степень соответ­ствия набора чисел, хранящегося в файле, экспоненциальному распре­делению. Она выносит вердикт: «Accept» (соответствует), «Almost suspect» (почти сомнительна), «Suspect» (вызывает сомнения) или «Re-ject» (не соответствует), основываясь на процедуре, рекомендованнойв [Knuth (1981) 43-44]. Если данных слишком мало для выполнения теста «хи-квадрат», программа выдаст соответствующее сообщение. Если же по отношению к измеренным значениям времени между по­ступлениями запросов и времени обслуживания будет вынесен вер­дикт «Accept» или «Almost suspect», то можно не без оснований счи­тать, что модель M/M/m даст достоверные результаты.
Модель M/M/m сформирует достоверные прогнозы лишь в том случае, если и время между поступлениями запросов, и время обслуживания являются экспоненциально распределенными случайными величина­ми. Другие модели массового обслуживания могут предложить точ­ные прогнозы для систем, в которых эти характеристики не подчиня­ются экспоненциальному распределению. Я сосредоточился на модели M/M/m потому, что она во многих случаях очень удачно подходит для анализа производительности Oracle. При работе над проектами повы­шения производительности Oracle обычно удается выделить подмноже­ства рабочей нагрузки, удовлетворяющие условиям M/M, например:
• Легко проверить экспоненциальность распределения времени меж­ду поступлениями запросов и времени обслуживания при выполне­нии пакетных заданий. Хороший диспетчер очереди пакетных за­даний записывает время постановки задания в очередь, время нача­ла и завершения выполнения заданий для последующего анализа. Время между поступлениями заданий - это просто разность времен постановки в очередь для данного и предыдущего по отношению к нему задания. Время обслуживания задания - это разность време­ни завершения и времени начала выполнения задания. Получив 50 или более значений времени между поступлениями заданий и 50 или более значений времени обслуживания, можно определить, подчиняется ли данное подмножество пакетных заданий M/M-ус-ловиям модели M/M/m.
Важно применять модель M/M/m только для подмножества пакет­ных данных, демонстрирующего соответствующее поведение. На­пример, если рассматривать время между поступлениями пакетных заданий на протяжении 24-часового периода, то они вероятнее всего не будут распределены экспоненциально - ночной интервал наверняка будет значительно больше дневного. Аналогично, время обслуживания всех пакетных заданий также вряд ли будет распре­делено экспоненциально. А вот время обслуживания всех заданий, выполненных в течение менее одной минуты, скорее всего будет подчиняться экспоненциальному распределению.
• Логический ввод/вывод Oracle (LIO) удобно использовать в качест­ве единицы измерения запросов на обслуживание. В Oracle невоз­можно напрямую измерить интервалы между поступлениями или время обслуживания LIO, но интуиция и успешный опыт примене­ния M/M/m для моделирования производительности LIO указыва­ют на то, что в действительности время между поступлениями и время обслуживания LIO распределены экспоненциально. Ис­полнение любой бизнес-функции можно представить в терминах количества выполненных LIO, так что результат применения моде­ли массового обслуживания можно выразить в терминах времени отклика и производительности бизнес-функции. Будет просто заме­чательно, если вы сможете думать о функциях приложения в тер­минах количества исполняемых LIO!
Программа для проверки экспоненциальности распределения
Все хорошие книги по теории массового обслуживания сообщают сво­им читателям, что прежде чем применять модель M/M/m, необходимо убедиться в экспоненциальном характере распределения времени меж­ду поступлениями запросов и времени обслуживания в моделируемой системе. Трудность в том, что большая часть этих хороших книг не да­ет никакого практического совета о том, как в этом бы убедиться. Та­кую задачу может выполнить программа на Perl, приведенная в приме­ре 9.4. Ее идея подсказана мне работой [Allen (1994) 224-225]. В реализации я руководствовался в основном книгой [Knuth (1981) 38-45] с дополнительным привлечением средств пакета Mathematica, [Olkin et al. (1994)], [CRC (1991)] и ресурсов http://www.cpan.org.
Для того чтобы начать работу с программой, загрузите исходный текст в систему, где установлен Perl. В Unix (Linux, HP-UX, Solaris, AIX и т. д.), вы, вероятно, назовете этот файл mdist. В Windows он, вероят­но, будет назван mdist.plВозможно, что в Unix-системе придется от­редактировать первую строку кода, указав там точную ссылку на ис­полняемый файл Perl (может быть, например, исполняемый файл на­зывается /usr/local/bin/perl). Затем наберите в командной строке perldoc mdist (или perldoc mdist. pl) для обращения к странице руковод­ства для данной программы.

Поведение систем M/M/m
Прелесть M/M/m в том, что применение модели делает возможным проведение экспериментов с такими параметрами, манипулирование которыми в реальной жизни обошлось бы слишком дорого. В этом раз­деле мы поговорим об интересных особенностях поведения M/M/m. Эти особенности помогут понять, как избежать проблем с производи­тельностью, которым подвержены реальные многоканальные системы массового обслуживания. В результате вы, вероятно, начнете гораздо глубже разбираться в системе Oracle.

 









jAntivirus