Во всех компьютерных приложениях есть инициаторы запросов, чего-то требующие, и поставщики информации, обеспечивающие ответ на такие запросы. Весь анализ производительности Oracle посвящен отношениям между поставщиками и потребителями, в особенности в условиях острой конкуренции за совместно используемые ресурсы.
Массовое обслуживание - это то, что происходит, когда потребитель требует выделения ему некоторого ресурса, который в данный момент занят обслуживанием другого запроса. Это просто: вы ждете, когда наступит ваша очередь. Существует множество разнообразных дисциплин распределения ресурсов. Одной из наиболее распространенных является уравнительная дисциплина обслуживания в порядке поступления требований, т. е. обслуживания по принципу «первым пришел - первым обслужен» (first-come, first-served). Находят также применение различ-
«Queueing» или «Queuing»
Теоретики массового обслуживания должны определиться, как писать по-английски то самое слово, которое обозначает «массовое обслуживание» - queueing. Сколько букв «e» должно быть в этом слове - две или одна. Утилита проверки орфографии моего текстового процессора (как и многие словари) оповестила меня о том, что слово «queueing» пишется как «queuing», с одним «e». Однако в сфере теории массового обслуживания (подробности можно найти по адресу http://www2.uwindsor.ca/ ~hlynka/qfaq.html) принято писать это слово как «queueing». К счастью, именно это написание рекомендуют два таких уважаемых словаря, как «Oxford English Dictionary» и «Oxford American Dictionary».
ные варианты дисциплины обслуживания с приоритетами, при этом на порядок обслуживания влияет, например, статус заявки. Вот некоторые примеры: первоочередное обслуживание собственных сотрудников, членов королевской семьи, наиболее пробивных личностей и, наоборот, обслуживание последними самых кротких и благонравных.
«Дождавшись своей очереди», вы получаете запрошенную услугу, что, естественно, занимает некоторое время. Затем вы освобождаете место, и стоящий следом за вами человек получает услугу в соответствии со своим запросом. Люди выстраиваются в очереди к обеденным столикам, банковским клеркам, билетным кассам, эскалаторам, автострадам и «горячим линиям» поддержки программного обеспечения. Компьютерные программы стоят в очередях к таким ресурсам, как процессор, память, дисковый и сетевой ввод/вывод, блокировки и защелки.
Конечно же, стояние в очереди сопровождается отчетливым ощущением напрасно потраченного времени. Один из способов, которым поставщик услуг может ускорить продвижение очереди, заключается в увеличении количества или производительности ресурсов. Более быстрые ресурсы или большее их количество, или и то, и другое вместе сократят время пребывания в очереди. Но, разумеется, поставщики услуг переложат на вас стоимость улучшения ресурсов, подняв цены на свои услуги. В конце концов, это вы решаете, где находится разумный компромисс между скоростью и стоимостью обслуживания.
В жизни мы ежедневно занимаемся оптимизацией по критериям времени отклика и экономичности. Например, многие из нас тратят тысячи долларов на покупку автомобилей. Несмотря на то, что покупка и обслуживание велосипеда обойдется гораздо дешевле, чем автомобиля, мы покупаем машины отчасти из-за того, что они намного быстрее и обеспечивают значительно лучшее время отклика в наших поездках. (Хотя мы, американцы, известны своей склонностью ездить на автомобилях даже там, где велосипед был бы не только дешевле, но и значительно быстрее.)
Купив автомобиль, мы обнаруживаем, что опять необходима оптимизация. В обычных поездках машина, развивающая скорость 325 км/час, не дает преимуществ во времени по сравнению с автомобилем, способным передвигаться не быстрее 100 км/час, т. к. правила дорожного движения и соображения безопасности накладывают более строгие ограничения, чем мощность двигателя. По этой же причине даже обладатели сверхбыстрых машин планируют свои поездки так, чтобы не попасть в час пик. В некоторых случаях мы применяем стратегию, минимизирующую время обслуживания, в других - стремимся уменьшить задержку в очереди. Наибольшая выгода для вас и ваших пользователей имеет место, когда есть возможность уменьшить время обслуживания, или задержки в очереди, или и то и другое.
Наглядное представление очередей и массового обслуживания
Как говорилось в главе 1, диаграмма последовательности - это удобная форма представления структуры расходования времени пользовательской операцией, путешествующей по различным уровням технологического стека. На рис. 9.1 показана диаграмма последовательности для системы с одним процессором и одним диском. Выполнение пользовательского запроса приводит к расходованию ресурсов процессора и диска. Каждая линия на диаграмме обозначает наличие ресурса на данном отрезке времени. Каждый темный прямоугольник на оси времени ресурса показывает факт потребления запросом данного ресурса. Длина этого прямоугольника пропорциональна длительности использования ресурса. Участки временной оси, на которых отсутствуют темные прямоугольники, соответствуют периодам простоя. Диаграмма последовательности читается сверху вниз. Стрелка, направленная слева направо, означает запрос на обслуживание, направленная справа налево - предоставленную услугу. Время отклика равно длительности промежутка между инициированием и завершением запроса.
На рис. 9.1 пользователь приложения выполняет запрос на обслуживание к процессору. Процессор в момент получения запроса свободен, поэтому немедленно начинает его обслуживание. По ходу работы система обнаруживает, что для продолжения обработки требуется обращение к диску. Процессор отправляет диску запрос на обслуживание. Тот в момент получения запроса ничем не занят, поэтому сразу начинает его обслуживание. Выполнив запрос на обслуживание, диск возвращает процессору требуемый результат, и процессор продолжает обработку. После третьего обращения к процессору запрос пользователя выполнен, и процессор возвращает ему результат.
С точки зрения пользователя время отклика равно времени, прошедшему с момента отправки запроса до получения результата. Обратите внимание на то, что на рис. 9.1 показаны также и другие времена отклика. Например, длительность первого (т. е. самого верхнего) темного прямоугольника на оси Диск с точки зрения процессора представляет собой время отклика первого вызова дискового ввода/вывода.
Диаграмма последовательности особенно помогает понять, как конкуренция за совместно используемые ресурсы влияет на многозадачную систему. В частности, на рис. 9.2 показано, почему увеличение нагрузки в системе из предыдущего примера может привести к снижению производительности. В ненагруженной системе запросы на использование процессора исполняются без задержек (случай а).
Когда мы увеличиваем нагрузку на систему (случай б), некоторые запросы к процессору вынуждены ждать, т. к. процессор в момент их получения занят другой работой. На рис. 9.2 показаны две таких задержки в очереди. Второй запрос к процессору после того, как диск вернул управление, вынужден ждать, т. к. процессор занят выполнением задания, обозначенного светло-серым прямоугольником. И третий запрос к процессору ждет по той же причине. Увеличение общего времени отклика нагруженной системы (случай б) по сравнению с не-нагруженной системой (случай а) в точности соответствует общему времени, проведенному запросами в очереди к занятому ресурсу.
Какого увеличения времени отклика можно ожидать, увеличивая нагрузку на систему? Для ответа на этот и многие другие важные вопросы разработан специальный математический аппарат: теория массового обслуживания.
< Предыдущая | Следующая > |
---|