IBM®
Перейти к тексту
    в России и странах СНГ [изменить]    Условия использования
 
 
   
    Главная страница    Продукты    Услуги и решения    Поддержка и загрузка    Мой профиль    
Перейти к тексту

developerWorks Россия  >  Linux | Open source  >

Подготовка к экзамену LPI 301: Тема 306. Планирование пропускной способности

Профессионал Linux высокого уровня (LPIC-3)

developerWorks
На предыдущую страницуСтраница 4 из 9 На предыдущую страницу

Опции документа

Обсудить


Выскажите мнение об этом учебном пособии

Помогите нам улучшить содержание


Оценка потребностей в ресурсах

В этом разделе описывается материал по теме 306.3 экзамена на профессионала Linux высокого уровня (LPIC-3) 301. Эта тема обладает весом 2.

Из этого раздела вы узнаете, как:

  • Устанавливать потребности в ресурсах
  • Детализировать потребности приложений
  • Определять потребности приложений в памяти и ресурсах центрального процессора
  • Проводить полный анализ, исходя из потребностей отдельных приложений

Устранение текущих проблем является ключевой задачей системного администратора. Другая задача – это анализ текущей работы системы с целью предсказания ограничений на количество ресурсов в будущем и разрешения этой ситуации прежде, чем она выльется в проблему. В этом разделе рассматривается анализ текущих потребностей, а в следующем – прогнозирование использования ресурсов в будущем, исходя из материалов текущего раздела.

Вы можете использовать два подхода к анализу текущих потребностей: измерять текущие потребности в течение некоторого периода времени (наподобие базового уровня), или моделировать систему и задавать ряд параметров, которые приводят эту модель в состояние, соответствующее текущему состоянию системы. Первый подход проще и позволяет получить достаточно правдоподобную информацию. Второй подход точнее, но более трудоемок. Настоящее преимущество моделирования проявляется тогда, когда вам необходимо спрогнозировать поведение системы в будущем. Когда у вас имеется модель вашей системы, вы можете изменить определенные параметры, отражающие ее будущее развитие, и посмотреть, как изменится производительность.

На практике оба этих подхода используются совместно. В некоторых случаях построение модели конкретной системы оказывается слишком сложным, поэтому результаты измерений являются единственной основой для прогнозирования требований к ресурсам в будущем. С другой стороны, для построения моделей все-равно необходимы измерения.

Моделирование поведения системы

Активность системы может быть смоделирована в виде серии очередей. Очередь – это конструкция, которая принимает на вход запросы и удерживает их до тех пор, пока ресурс не станет доступен. Как только ресурс становится доступен, задание выполняется и покидает очередь.

Несколько очередей можно объединить вместе в более объемную систему. Диск может быть смоделирован как очередь, в которой запросы поступают в буфер. Когда обслуживание запроса может быть выполнено, запрос передается к диску. Обычно запрос поступает от центрального процессора, который является одним простым ресурсом с несколькими задачами, конкурирующими за его использование. Изучением очередей и их приложений занимается теория очередей.

Книга Analyzing Computer System Performance with Perl::PDQ (ссылку вы можете найти в разделе Ресурсы) знакомит вас с теорией очередей и показывает, как смоделировать компьютерную систему в виде серии очередей. Далее в этой книге описывается библиотека языка С, которая называется PDQ, и сопутствующий интерфейс языка Perl, позволяющие вам определять и использовать очереди для получения оценки производительности.

Знакомство с очередями

На рисунке 4 изображена простая очередь. Запрос поступает слева и входит в очередь. Как только запросы обрабатываются кругом, они покидают очередь. Прямоугольные блоки слева от круга означают объекты, поставленные в очередь.


Рисунок 4. Простая очередь
Простая очередь

Поведение очереди характеризуется параметрами времени, частоты и размеров. Частота поступления обозначена буквой лямбда (Λ) и обычно выражается количеством запросов в секунду. Значение Λ можно определить, выполнив наблюдения за вашей системой в течение подходящего интервала времени и посчитав поступления запросов. Подходящий интервал должен по меньшей мере в сто раз превышать время обслуживания, которое представляет собой продолжительность обработки запроса. Время пребывания – это общее время, в течение которого запрос находился в очереди, включая время, затраченное на его обработку.

Частота поступления описывает частоту, с которой объекты поступают в очередь, а пропускная способность определяет частоту, с которой объекты покидают очередь. В более сложной системе узловая пропускная способность определяет пропускную способность отдельного узла очереди, а системная пропускная способность относится ко всей системе в целом.

Размер буфера в большинстве случаев не имеет значения, поскольку буфер будет иметь ограниченный и предсказуемый размер, пока выполняются следующие условия:

  • Размер буфера достаточно большой для обработки поставленных в очередь объектов.
  • Очередь не увеличивается безгранично.

Второе условие является наиболее важным. Если очередь может отправлять запросы с частотой один запрос в секунду, но запросов, поступающих за одну секунду в очередь, больше, то очередь будет увеличиваться безгранично. В реальности частота поступления будет колебаться, но при анализе производительности нас интересует устойчивое состояние, поэтому используются средние значения. Возможно, что в какой-то момент в очередь попадут 10 запросов в секунду, а в другой момент – ни одного. До тех пор, пока среднее значение меньше, чем один запрос в секунду, очередь будет иметь конечную длину. Если среднее значение частоты поступления превышает частоту, с которой запросы выходят из очереди, длина очереди будет продолжать расти и никогда не достигнет устойчивого состояния.

Очередь, изображенная на рисунке 4, называется открытой очередью, поскольку в нее входит неограниченное число запросов, и им не обязательно возвращаться назад после своей обработки. Закрытая очередь возвращает информацию на вход; в системе находится ограниченное число запросов. После того, как запросы были обработаны, они возвращаются в очередь поступления.

Классическим примером очереди является продовольственный магазин. Количество людей, встающих в очередь к кассе, поделенное на период измерения – это частота поступления. Количество рассчитавшихся и покидающих очередь людей, поделенное на период измерения – это пропускная способность. Среднее время, которое затрачивает кассир на обслуживание одного покупателя – это время обслуживания. Среднее время, в течение которого покупатель стоит в очереди и ждет расчета с кассиром, плюс время обслуживания этого покупателя кассиром – это время пребывания.

Чтобы перейти к рассмотрению PDQ, рассмотрим следующий сценарий. Web-служба получает 30,000 запросов за один час. Наблюдая некоторое время за ненагруженной системой, мы установили, что время обслуживания составляет 0.08 секунды. На рисунке 5 это изображено в виде очереди.


Рисунок 5. Web-служба, смоделированная в виде очереди
Web-служба, смоделированная в виде очереди

Какую информацию может предоставлять PDQ? В листинге 13 приведена требуемая программа PDQ и ее вывод данных.


Листинг 13. Программа PDQ и ее вывод данных
					
#!/usr/bin/perl
use strict;
use pdq;
# Observations
my $arrivals = 30000; # requests
my $period = 3600; # seconds
my $serviceTime = 0.08; # seconds

# Derived
my $arrivalRate = $arrivals / $period; 
my $throughput = 1 / $serviceTime; 
# Sanity check -- make sure arrival rate < throughput
if ($arrivalRate > $throughput) {
        die "Arrival rate $arrivalRate > throughput $throughput";
}

# Create the PDQ model and define some units

pdq::Init("Web Service");
pdq::SetWUnit("Requests");
pdq::SetTUnit("Seconds");
# The queuing node
pdq::CreateNode("webservice", $pdq::CEN, $pdq::FCFS);

# The circuit
pdq::CreateOpen("system", $arrivalRate);

# Set the service demand

pdq::SetDemand("webservice", "system", $serviceTime);

# Run the report
pdq::Solve($pdq::CANON);
pdq::Report();

..... output ..
                ***************************************
                ****** Pretty Damn Quick REPORT *******
                ***************************************
                ***  of : Sat Feb 16 11:24:54 2008  ***
                ***  for: Web Service               ***
                ***  Ver: PDQ Analyzer v4.2 20070228***
                ***************************************
                ***************************************



                ***************************************
                ******    PDQ Model INPUTS      *******
                ***************************************


Node Sched Resource   Workload   Class     Demand
---- ----- --------   --------   -----     ------
CEN  FCFS  webservice system     TRANS     0.0800



Queueing Circuit Totals:

        Streams:      1
        Nodes:        1



WORKLOAD Parameters

Source        per Sec        Demand
------        -------        ------
system         8.3333        0.0800





                ***************************************
                ******   PDQ Model OUTPUTS      *******
                ***************************************


Solution Method: CANON

                ******   SYSTEM Performance     *******


Metric                     Value    Unit
------                     -----    ----
Workload: "system"
Mean Throughput           8.3333    Requests/Seconds
Response Time             0.2400    Seconds

Bounds Analysis:
Max Demand               12.5000    Requests/Seconds
Max Throughput           12.5000    Requests/Seconds


                ******   RESOURCE Performance   *******


Metric          Resource     Work              Value   Unit
------          --------     ----              -----   ----
Throughput      webservice   system           8.3333   Requests/Seconds
Utilization     webservice   system          66.6667   Percent
Queue Length    webservice   system           2.0000   Requests
Residence Time  webservice   system           0.2400   Seconds



Листинг 13 начинается с типичной для UNIX строки, определяющей интерпретатор для оставшейся части программы. Первые две строки Perl-кода указывают на использование модулей pdq и strict. Модуль pdq предоставляет функции PDQ, тогда как модуль strict налагает жесткие ограничения на синтаксис Perl, позволяя избежать ряда ошибок при написании кода.

В следующем разделе листинга 13 определены переменные, связанные с наблюдениями за системой. С помощью этой информации в следующем разделе вычисляются частота поступления и пропускная способность. Последняя величина является обратной к времени обслуживания – если вы можете обработать один запрос за N секунд, значит, вы можете обработать 1/N запросов в секунду.

Установка PDQ

Дистрибутив PDQ можо загрузить с Web-сайта автора (обратитесь к разделу Ресурсы). Распакуйте его во временную папку с помощью команды tar -xzf pdq.tar.gz и перейдите во вновь созданную папку, выполнив команду cd pdq42. После этого запустите команду make, чтобы выполнить компиляцию исходного кода на языке C и модуля Perl. Наконец, выполните команду cd perl5 и из этой папки запустите команду ./setup.sh, чтобы завершить компоновку модуля Perl и установить его в вашу системную директорию.

Первый тест на работоспособность проверяет, что длина очереди ограничена. Хотя большинство функций PDQ и сообщают об ошибках, автор модуля рекомендует выполнять явную проверку. Если количество поступающих в секунду запросов больше, чем количество запросов, покидающих очередь за это же время, программа завершается с ошибкой.

В оставшейся части программы выполняются прямые вызовы функций PDQ. Сначала выполняется инициализация модуля и указывается название модели. Затем временной модуль и рабочие модули настраиваются таким образом, чтобы информация в отчетах выводилась в нужном вам виде.

Каждая очередь создается с помощью функции CreateNode. В листинге 13 создана очередь типа CEN (центр организации очереди, в отличие от узла задержки, который не выполняет никакой работы) с именем webservice (эти имена являются метками и помогают вам разобраться в итоговом отчете). Это стандартная очередь типа FIFO (first in, first out – первый вошел, первый вышел), которая в терминах PDQ называется first-come first-served (первый вошел, первый обработан).

Затем происходит вызов функции CreateOpen с целью определения цепи (совокупность очередей). Частота поступления в цепь уже рассчитана. Наконец, с помощью функции SetDemand для очереди задается нагрузка. Функция SetDemand определяет время, необходимое на завершение конкретной рабочей нагрузки (очередь в составе цепи).

Наконец, цепь решается с помощью функции Solve, и с помощью функции Report создается отчет. Обратите внимание на то, что PDQ берет вашу модель, преобразует ее в ряд уравнений и затем решает их. PDQ не имитирует модель каким-либо образом.

Теперь рассмотрим, как интерпретировать полученные результаты. Отчет начинается с заголовка и сводной информации о модели. Раздел WORKLOAD Parameters содержит более интересную для нас информацию. Время обслуживания в цепи составляет 0.08 секунды, в соответствии с заданным ранее значением. Значение per second - это частота поступления.

В разделе SYSTEM performance рассчитывается производительность системы в целом. Цепь выдержала частоту поступления, равную 8.3333 запросам в секунду. Время отклика (response time) составило 0.24 секунды (более подробно об этом позже); это значение включает в себя время обслуживания, равное 0.08 секундам, и время нахождения запроса в очереди. Максимальная производительность цепи оценивается в 12.5 запросов в секунду.

Посмотрев на очередь более внимательно, вы можете увидеть, что она используется на 66.6667%. Средняя длина очереди равна двум запросам. Это означает, что перед входящим запросом в очереди может содержаться еще два запроса, плюс запрос, обрабатывающийся в данный момент. С учетом времени обработки одного запроса, равного 0.08 секундам, среднее время ожидания составляет 0.24 секунды, о чем было сообщено ранее.

Эту модель можно детализировать до компонентов Web-службы. Вместо использования одной очереди, представляющей собой Web-службу, вы могли бы использовать отдельную очередь для обработки запроса, отдельную очередь для доступа к базе данных и отдельную очередь для подготовки ответа. Если ваша модель правильно построена, производительность системы должна оставаться той же самой, просто в этом случае вы получите более подробную информацию о внутренней работе Web-службы. С этого уровня вы можете использовать подход "что если" и смоделировать применение более быстрой базы данных или нескольких Web-серверов, чтобы посмотреть, какой эффект получится в результате внесенных изменений. Разделение модели на отдельные ресурсы поможет вам понять, какая конкретная очередь является узким местом, и сколько ресурсов у вас имеется в запасе.

В листинге 13 приведен элементарный пример использования библиотек PDQ. Чтобы узнать, как строить более сложные модели, прочитайте книгу Analyzing Computer System Performance with Perl::PDQ (ссылку вы можете найти в разделе Ресурсы).



В начало



На предыдущую страницуСтраница 4 из 9 На предыдущую страницу
    IBM в России Конфиденциальность Контакты