Что же нам делать теперь, когда мы узнали, что проект обречен? Менее очевидное достоинство теории массового обслуживания заключается в том, что она точно указывает, какие изменения системы (моделируемые изменением параметров M/M/m) могут оказать положительное воздействие на производительность. Параметры, значения которых допускают возможность обсуждения, были перечислены в разделе «Чувствительность к параметрам». В нашем примере следует проанализировать следующие допускающие изменение параметры:
Количество систем q и количество процессоров в системе m
Для начала исследуем интересный результат моделирования, чтобы понять, почему добавление процессоров не приводит к возрастанию интегральной функции распределения времени отклика более, чем до 87%. Модель показывает, что даже сто систем по сто процессоров в каждой не могут предложить удовлетворяющего пользователей времени отклика в более, чем 87% случаев.
Причина в том, что время обслуживания в модели M/M/m - это случайная величина. Несмотря на то, что среднее время обслуживания постоянно, реальное время обслуживания для определенного типа функций меняется от одной функции к другой. Например, двум идентичным SQL-запросам с разными значениями переменных связывания в предикате инструкции where могут соответствовать несколько отличающиеся количества операций LIO, из-за чего отличается и время обслуживания процессором. Увеличивая количество процессоров в системе, мы уменьшаем лишь составляющую средней задержки в очереди (W) для времени отклика (R = S + W). Если среднее время обслуживания само по себе достаточно близко к допустимому пределу, то случайных колебаний времени обслуживания будет достаточно для того, чтобы время отклика превысило указанный предел для значительного (в процентном отношении) количества выполнений.
На самом деле для нашей важной команды SQL не будет пользы от увеличения количества процессоров сверх шести.
Средняя интенсивность поступления запросов Л
Действительно ли необходимо каждому из 100 пользователей выполнять важную команду четыре раза в минуту? Такой вопрос звучит вполне законно. Часто оптимизация начинается с осознания того факта, что пользователи требуют от машины большего, чем они в принципе в состоянии потребить. Например, опрос технологического процесса и формирование сигналов для пользователей четыре раза в минуту не имеет смысла, если пользователю для успешной работы вполне хватает просмотра полученных предупреждений раз в час.
Если бы удалось соответственно снизить интенсивность поступления запросов в пиковое время для нашей задачи с
команд в секунду до
команд в секунду, то нагрузка, порождаемая данной командой, уменьшилась бы в 240 раз. Результатом будет значительный выигрыш в масштабируемости. Системе потребуется всего один процессор для обеспечения удовлетворяющего пользователей времени отклика в 87% исполнений команд.
Интенсивность запросов X представляет собой отношение величин A/T, поэтому существуют два способа ее уменьшения. Во-первых, можно уменьшить числитель A, т. е. количество поступлений запросов в систему (это я уже предлагал). Во-вторых, можно увеличить знаменатель T, период времени, в течение которого система должна принять указанное количество запросов.
Уменьшение средней интенсивности поступления запросов может снизить стоимость системы, но не решит задачу до конца. Ни одно из описанных изменений не приведет к увеличению доли требуемого времени отклика для исследуемой команды до 95%.
Допустимый предел времени отклика rmax и процентиль успеха p
Действительно ли для бизнеса необходимо, чтобы время отклика для той самой важной команды составляло менее одной секунды? Действительно ли это требуется в 95% случаев? Такие вопросы следует задавать шепотом, т. к. они относятся к самому сокровенному. Пользователи часто считают, что эти условия не подлежат обсуждению, но важно, чтобы они понимали, что жесткая позиция по данному вопросу повышает требования к стоимости системы, что может оказаться неприемлемым для бизнеса. Например, если согласие на 100 дополнительных секунд времени отклика в день будет означать экономию 100 000 долларов в год, то, вероятно, на такое предложение стоит откликнуться. Если компания готова пойти на снижение планки до обеспечения 95% успеха для rmax = 1,5 секунды, то вам удастся обеспечить необходимую производительность для изначально запрошенной интенсивности поступлений (X» 6,666667 команд в секунду) с помощью шести процессоров. Если же компания готова обсуждать и снижение интенсивности поступления запросов, то при значении X » 0,027778 команд в секунду нашу задачу можно решить при помощи всего одного процессора.
Средняя скорость обслуживания л
Именно этот параметр предоставляет широкие возможности регулирования производительности, не заставляя пользователей идти на компромисс в отношении потери производительности или функциональности. Вероятно, вы слышали, что настройка SQL может быть весьма эффективной, но хотелось бы знать, насколько именно эффективной, прежде чем углубляться в такую настройку. И на этот вопрос поможет ответить наша модель.
Так, если удастся уменьшить время обслуживания важной команды с 0,49 секунды до 0,3125 секунды, то скорость обслуживания для команды возрастет с л = 2,04 команд в секунду до л = 3,2 команд в секунду. Если удастся увеличить скорость обслуживания именно настолько, то исходное требование rmax = 1,0 будет удовлетворено в 95% выполнений команды при условии использования четырех процессоров. Если же можно повысить скорость обслуживания до /=10 команд в секунду (например, оптимизировав SQL так, что среднее время обслуживания достигнет 0,1 секунды), то требования к производительности можно удовлетворить даже посредством одного процессора.
Я считаю, что главная ценность модели массового обслуживания M/M/m в том, что она показывает, в каком направлении следует действовать. В только что рассмотренном примере вы узнали, что не стоит даже помышлять об установке более чем шести процессоров для обслуживания важной команды. Узнали о том, что договоренность с пользователями о некотором увеличении значения rmax позволит вам вздохнуть чуть свободнее. Но только снизив частоту выполнения пользователями важной команды (X) или же уменьшив время обслуживания команд S = 1//), вы получите систему, которая наилучшим образом соответствует требованиям к производительности.
Microsoft Excel предлагает средство под названием Goal Seek (Подбор параметра), позволяющее ответить на многие из поставленных вопросов. Оно предоставляет возможность рассматривать любые выходные значения модели в качестве своих входных параметров. Предположим, что требуется определить, какая средняя скорость обслуживания понадобится для того, чтобы довести удовлетворенность пользователей временем отклика до 95% при фиксированном значении m.
Решить задачу можно следующим образом. Сначала вводим для / произвольное постоянное значение (на рис. 9.24 /=1). Затем выбираем пункт меню Сервис Подбор параметра (Tools Goal Seek) для вызова диалогового окна выбора параметра (рис. 9.25). Наша задача состоит в том, чтобы довести значение CDF(rmax) до 95%, изменяя /. На рис. 9.26 в ячейке для и показано значение, полученное в результате выполнения операции подбора параметра. Оказывается, что желаемого результата можно достигнуть при / « 10.
Качество прогнозирования времени отклика прямо зависит от качества «контура обратной связи», применяемого для уточнения прогноза. Получив старательно подготовленную формулировку задачи и модель массового обслуживания, практически каждый сможет получить правильные количественные показатели. Но при этом важно устоять перед искушением прекратить мыслительную деятельность сразу же после того, как модель «дала ответ». Получив ответ, следует потратить еще некоторое количество времени на чрезвычайно важное занятие - анализ чувствительности, которым пренебрегают 99% аналитиков, впер-
Рис. 9.25. Наша цель - довести значение CDF(rmax) до 95%, изменяя значение л
вые применяющих модель. Оставшаяся часть раздела посвящена некоторым ключевым моментам анализа ошибок все для того же примера.
Наряду с выходными параметрами модели необходимо также учитывать следующие факторы:
Физические ограничения
Естественно, нельзя установить какую-то часть процессора. Количество процессоров в системе должно быть целым числом. Некоторые системы могут требовать установки процессоров парами. Разумеется, максимальное число процессоров, которые могут быть установлены в системе, тоже ограничено.
Несовершенство масштабируемости
Модель массового обслуживания ничего не знает о тех недостатках, которые не позволяют системе с m процессорами обеспечить увеличение производительности в m раз. Например, для получения шестикратной производительности сервера Linux, потребуется установка восьми или более процессоров. А в ОС Windows NT может оказаться, что независимо от того, сколько процессоров может физически вместить сервер, никакая конфигурация системы не позволит увеличить производительность более чем в два раза. Аналитик по производительности должен в своей работе учитывать несовершенство масштабируемости, препятствующее m-кратному приросту производительности реальной системы с m процессорами.
Дополнительная нагрузка
Формулировка задачи упоминает лишь об одной команде SQL, но на самом деле система почти наверняка будет выполнять и какие-то другие полезные действия. Поэтому результат моделирования для данного конкретного случая следует интерпретировать так: «Количество процессоров, необходимых для обеспечения требуемого времени отклика команды SQL примерно на 5 больше того количества, которое требуется для поддержки всей остальной нагрузки системы».
Другие узкие места
Формулировка задачи обращает наше внимание исключительно на мощность процессора, необходимую для обеспечения требований к времени отклика. А как обстоит дело с потенциальной нехваткой других ресурсов? Что, если на время отклика нашей команды SQL значительно влияют дисковая или сетевая задержки? Вы, конечно, можете смоделировать любой ресурс, участвующий в реализации некоторой функции, но часто самая простая модель оказывается и самой полезной. Если какой-то ресурс, кроме процессора, потребляет основную часть времени отклика функции, то разумно задать вопрос о причинах такого явления.
Изменения входных параметров
В школе принято считать, что предположения, сделанные в условии задачи, обязательно являются верными. Опытные профессионалы знают, что ошибка в постановке задачи может привести в дальнейшем к серьезным проблемам с проектом. Как же защитить проект от не заслуживающих доверия предположений, содержащихся в начальных условиях? Следует оценить влияние таких предположений на нашу модель. Что произойдет с результатом, если одно или несколько предположений, заложенных в формулировки задачи, окажутся неточными или просто со временем изменятся?
Общая производительность системы чрезвычайно чувствительна даже к небольшим изменениям средней скорости обслуживания (л) и средней интенсивности поступлений запросов (X). Это отражается в модели. По своей природе данные параметры исключительно сильно влияют на общую производительность, из-за чего погрешность в их оценке ставит под сомнение результат моделирования.
Например, завышение средней скорости обслуживания всего на 1% может привести к занижению среднего времени отклика в загруженной системе на 10% или даже более. Изменение величин / и X может быть вызвано следующими обстоятельствами:
Некорректное тестирование. В качестве классического примера можно привести тесты, созданные для эмулирования поведения рабочей базы данных, но основанные на излишне упрощенных конфигурацях продукта или на нереально маленьких таблицах.
Изменения объема данных, особенно для SQL-запросов, производительность которых линейно (или в большей степени) зависит от объема обрабатываемых данных [Millsap (2001a)].
Изменения физического распределения данных, которые могут со временем повысить или понизить эффективность индекса (или его полезность для оптимизатора запросов Oracle) [Millsap
(2002)].
Изменения кода функции, такие как изменения команд SQL или объектов схемы, вызванные модернизацией оборудования, работами по повышению производительности или чем-то еще.
Изменения объема бизнес-функции, вызванные приобретениями и поглощениями, неожиданными успехами или неудачами маркетинговых компаний и т. д.
Если неуправляемые изменения чувствительных входных параметров возможны, то следует позаботиться о том, чтобы выбранная конфигурация системы позволяла провести экономное повышение (или понижение) производительности. Ваши знания о чувствительности входных параметров помогут определить, с какими из них необходимо обращаться особенно аккуратно.
< Предыдущая | Следующая > |
---|