DeepEdit!

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

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

Теория массового обслуживания и «интерфейс ожидания»


Вы познакомились с формулами теории массового обслуживания. Те­перь надо понять, как связаны с ними рабочие характеристики Oracle, а именно, как информация, полученная от так называемого «интер­фейса ожидания», согласуется с теорией массового обслуживания? К сожалению, сама корпорация Oracle пришла к неверным выводам на эту тему. Статья 223117.1 Oracle MetaLink является тому примером:
Настройка производительности основывается на следующем фундамен­тальном отношении:
Время отклика = Время обслуживания + Время ожидания
Для базы данных Oracle «время обслуживания» измеряется при помощи статистики «время процессора, использованное данным сеансом», а «время ожидания» - при помощи событий ожидания (курсив автора).
Выделенная курсивом часть предложения ложна. На самом деле так называемое событие ожидания Oracle - это не то, о чем говорится в данном предложении.
Время ожидания Oracle
Путаница начинается уже с названия «событие ожидания». Термин выбран неудачно, т. к. заставляет пользователей думать, что продол­жительность события ядра Oracle равна задержке в очереди. Но это не соответствует действительности. Из главы 7 вы уже знаете, что продолжительность события ожидания на самом деле включает в себя ряд раз­нообразных составляющих. Компоненты времени отклика для отдель­ного вызова чтения операционной системы представлены на рис. 9.9.
Время ожидания Oracle, измеренное при выполнении системного вы­зова, - это общее фактическое время, прошедшее с момента последней инструкции, предшествующей выполнению вызова ОС и до первой ин­струкции, следующей за возвратом вызова ОС. Все, что происходит в интервале между моментами времени t0 и t1, - это время ожидания Oracle. На рис. 9.9 одно-единственное время ожидания Oracle включа­ет в себя все перечисленные ниже составляющие:
SCPU
Время работы процессора, потраченное на подготовку системного вызова. Для вызова дискового чтения основная часть этого времени проходит в привилегированном режиме. Однако некоторые систем­ные вызовы могут расходовать процессорное время и в пользова­тельском режиме.
"'disk
Задержка в очереди к дисковому устройству, которая на рисунке включает в себя задержку при передаче запроса от процессора к дисковому устройству.
sdisk
Время работы дискового устройства, включая задержку поиска, за­держку вращения и задержку передачи данных обратно с устройст­ва ввода/вывода в память, к которой обращается процессор.

Задержка в очереди к процессору, процесс находится в состоянии готовности к исполнению.
sCPU
Еще один период работы процессора, необходимый для завершения системного вызова. Кроме того, для одних вызовов процессорное время может расходоваться в привилегированном, а для других -в пользовательском режиме.
Надеюсь, теперь вы отчетливо понимаете, что время ожидания Oracle для вызова чтения ОС не совпадает с величиной u?disk. Для остальных системных вызовов ситуация будет аналогичной.
Различные обозначения для понятий теории массового обслуживания
Прочитав несколько книг по теории массового обслуживания, можно еще сильнее запутаться в том, как же на самом деле измеряется время ожидания Oracle. Во всех источниках обычно употребляются одни и те же греческие буквы, под которыми подразумевается одно и то же, а вот формулы теории массового обслуживания авторы часто записы­вают по-разному (см. табл. 9.2).
Таблица 9.2. Пример представления формул теории массового обслуживания
Я перегруппировал члены в правой части каждого из равенств так, чтобы все они представляли одну и ту же сущность. Другими словами, (Гюнтер и я) - это в точности то же самое, что Tq и Wq (Гросс и Хар-рис), а также wn (Клейнрок). Особенно сбивает с толку использование в разных книгах одних и тех же слов для обозначения абсолютно раз­ных вещей, например:
Предполагаемое время ожидания устойчивой системы равно времени об­служивания      плюс задержка в очереди Wq [Gross and Harris (1998) 64].
Время отклика равно сумме времени обслуживания S и времени, потра­ченного на ожидание в очереди [Gunther (1998) 52].
Гросс и Харрис обозначают при помощи термина «время ожидания» то, что Гюнтер называет «временем отклика». Более того, разные авторы под термином «ожидание» подразумевают две абсолютно разные вещи. Если обратится к формуле R = S + W, то мы увидим, что Гросс и Харрис называют ожиданием, а для Гюнтера ожидание - это W. По своей су­ти время ожидания Oracle ближе к определению Гросса и Харриса.
Итак, кто же прав? Выбор слов не имеет значения, важно лишь не сме­шивать подразумеваемые под ними понятия. Я выбрал обозначения, подобные используемым Джейном и Гюнтером, в основном потому, что именно с этих двух книг началось мое знакомство с теорией массо­вого обслуживания. R, и можно называть любыми именами. Что неправильно, так это воспринимать время ожидания Oracle как одно из слагаемых правой части выражения R = S + W. На самом деле вре­мя ожидания Oracle - это время отклика для вызова операционной системы с точки зрения ядра Oracle. Ядро Oracle публикует значения времени ожидания во многих местах, в том числе в статистике ela встроках WAIT расширенной трассировки и в следующих фиксирован­ных представлениях:
V$SESSION_WAIT.WAIT_TIME V$SESSION_EVENT.TIMEWAITED V$SESSION_EVENT.AVERAGE_WAIT V$SESSION_EVENT.MAX_WAIT V$SESSION_EVENT.TIME_WAITED_MICRO V$SYSTEM_EVENT.TIME_WAITED V$SYSTEM_EVENT.AVERAGE_WAIT V$SYSTEM_EVENT.TIME_WAITED_MICRO
Каждая из этих статистик ссылается на некий промежуток времени, включающий задержку в очереди для запрашиваемого устройства, но кроме этого время ожидания Oracle включает в себя и множество других составляющих времени отклика. Точнее говоря, время ожидания Ora­cle - это не W из отношения R = S + W теории массового обслуживания.

 









jAntivirus