BC/NW 2010; №2 (17):4.1
СПЕЦИФИКАЦИЯ ПАРАМЕТРОВ МОДЕЛИ УЗЛА ДЛЯ ОЦЕНКИ
ПРОИЗВОДИТЕЛЬНОСТИ ВЫЧИСЛИТЕЛЬНОЙ СЕТИ
Абросимов Л.И., Лебедь А.А.
(Московский энергетический институт
(технический университет), Россия)
Вычислительная сеть (ВС) – это множество связанных узлов сети и каналов связи. В
качестве узлов ВС будем рассматривать оборудование ЭВМ
(серверы, рабочие станции, маршрутизаторы).
Современные
пользователи предъявляют все возрастающие требования к качеству предоставляемых
информационно-технологических услуг. Безусловно, важную роль среди данных услуг
занимают услуги, предоставляемые вычислительными сетями, например, передача мультимедийного трафика.
Разработчикам
и администраторам вычислительных сетей
необходимо предоставить и гарантировать пользователям требуемый уровень
качества обслуживания.
Для сетей
передачи данных понятие «качество обслуживания» ассоциируется с термином QoS (Quality of Service). Для большинства случаев QoS определяет следующие характеристики:
1)
производительность
(throughput) или пропускная способность (bandwidth);
2)
задержка при
передаче пакета (delay);
3)
колебания
(«дрожание») задержки при передаче пакетов (jitter; первая производная задержки прохождения данных по
времени);
4)
вероятность
потери пакетов во время передачи (packet loss); причины
потери пакетов:
·
отбрасывание
пакетов (dropped packets; при
переполнении буферов приема);
·
прием
пакетов в разной очередности (out-of-order delivery;
из-за разных маршрутов прохождения пакетов);
·
ошибки (error; неверно
адресованные, объединенные, поврежденные).
Производительность
ВС является одной из основных характеристик качества
обслуживания, которая определяет эффективность функционирования не только в
части доставки пакетов, но и в выполнении информационно-вычислительных работ
[1]. Важно производить оценку производительности как на этапе проектирования ВС, так и при последующей эксплуатации ВС с целью выявления
узких мест и разработки рекомендаций по достижению требуемого качества
обслуживания.
Информационно-вычислительные
работы, выполняемые ВС, отличаются большим разнообразием,
которое определяется требованиями пользователей, технологической специализацией
организации и возможностями устройств и
каналов связи, составляющих ВС [1].
Производительность
каналов связи определяется их пропускной способностью.
Производительность
устройств, выполняющих обработку в ВС, определяется
аппаратными и программными средствами. Для того, чтобы не только определять, но
и иметь возможность прогнозировать производительность ВС,
необходимо составить модель каждого устройств ВС, называемую узлом.
Для описания
узла ВС вводится спецификация параметров PSpec, состоящая из трех множеств (рис. 1):
PSpec = <T, H, S> , где
T – множество функций вероятностно-временных
характеристик узла ВС, определяющих его производительность при выполнении
определенных процессов,
H – множество аппаратных средств узла ВС,
участвующих в реализации процессов.
S – множество программных средств узла ВС,
участвующих в реализации процессов.
Практическая
задача при проектировании либо модернизации ВС состоит
в определении и выборе множества аппаратных и программных средств узлов в
зависимости от требуемой производительности для каждого пользователя.
Рассмотрим
подробнее параметры, определяющие множества T, H, S.
Рис. 1. Матричная форма спецификации параметров
узлов ВС
Множество T
учитывает две временные отметки процессов: одну – для фазы отправки сообщений,
другую – для фазы приема [2].
T = <Ts, Tr, Protocol, MsgType, MsgLen, CtrlHdrLen, GrntDeliv, MsgOrder> , где
Ts – количественная характеристика времени фазы
отсылки,
Tr – количественная характеристика времени фазы приема,
Protocol – виды применяемых протоколов передачи данных,
MsgType – виды сообщений, присущих определенному протоколу,
MsgLen – длины сообщений (средние общие),
CtrlHdrLen – длины служебной информации (длины заголовков),
GrntDeliv – признак гарантированности доставки,
MsgOrder – признак важности порядка
поступления сообщений.
Каждое
аппаратно-реализованное средство характеризуется своим набором параметров, т.е.
H = <ArchType,
CP, RAM, NetCard, Chipset, Bus>
, где
ArchType – вид аппаратной архитектуры узла ВС (x86, x64, IA),
CP – вектор, описывающий характеристики центрального процессора (например,
тактовая частота),
RAM – вектор, описывающий характеристики оперативной памяти (например, емкость
ОЗУ),
NetCard – вектор, описывающий характеристики сетевой карты,
Chipset – множество, описывающее вспомогательные микроконтроллеры и их
характеристики,
Bus – множество, описывающее характеристики системных шин передачи
команд/данных.
Каждое
программное средство, обеспечивающее реализацию процессов, определяется
соответствующим набором параметров:
S = <SysS, AppS> , где
SysS – множество, описывающее характеристики системного ПО,
AppS – множество, описывающее характеристики прикладного ПО.
SysS = <BIOS, VMM, OS> , где
BIOS – характеристики базовой системы ввода/вывода,
VMM – характеристики монитора виртуальных машин (МВМ или гипервизора),
OS – характеристики применяемой операционной системы (ОС).
Рассмотрим процессы обеспечивающие функции сетевого, транспортного и
сеансового уровней модели OSI. В качестве примера будем рассматривать узел следующей конфигурации:
однопроцессорный (одноядерный) персональный компьютер вида IBM PC с *nix-подобной операционной системой (ОС). Аппаратные средства выбраны в силу
большого распространения и доступности. Программные (семейство ОС) – в силу
наличия открытых исходных кодов.
Прежде, чем
детализировать характеристики применяемой ОС, рассмотрим функциональность ОС во
время работы. В системе исполняется множество процессов, при этом
осуществляется их разделение по времени. Т.к. процессор один, то в каждый
момент времени может исполняться только один процесс, остальные ждут своей
очереди.
Запущенная
пользователем программа порождает один или несколько процессов, исполняемых в
пользовательском пространстве. Если процессу необходимо получить доступ к
аппаратуре, например, отправить или принять какие-либо данные, то задействуется
библиотека системных вызовов (рис. 2) [3]. Рис. 2 относится к системе UNIX System V (компании AT&T), но применим ко многим *nix-подобным ОС с некоторыми изменениями, учитывающими особенности этих ОС.
Отдельно стоит
отметить исполнение аппаратных прерываний [5]. Т.к. никакого специального
процесса обработки аппаратных прерываний не существует (эта обработка
производится непосредственно определенными функциями ядра), то они исполняются
в контексте того процесса, который находится в ядре. Отследить вызов
аппаратного прерывания можно по функции IRQn_interrupt(), которая
затем вызывает функцию do_IRQ(n). Возврат из прерываний осуществляется функцией ret_from_intr. Отметим, что в [3] вводилось определение u-функции, учитывающее только системные вызовы.
Предлагается расширить определение u-функции:
U-функция – это программная функция (подпрограмма) ядра операционной системы,
связанная с каким-либо системным вызовом или аппаратным прерыванием.
Рис. 2. Диаграмма переходов/состояний процессов
Непосредственное
исполнение программного кода осуществляется, когда процесс находится в
состоянии 1 «исполнение в пользовательском пространстве» или в состоянии 2
«исполнение в пространстве ядра». При этом в состоянии 2 среди множества
вызываемых в контексте процесса функций будут присутствовать u-функции (рис. 3). После нахождения временны́х отметок исполнения u-функций можно получить
численные характеристики времен Ts и Tr.
Рис. 3. Представление u-функций, вызываемых процессом
Изложенное
позволяет детализировать параметры
применяемой ОС.
OS = <OSName, OSVer, Process, Func> , где
OSName –
название ОС,
OSVer – версия
ОС,
Process –
список процессов и их характеристик, из которого можно выделить подмножество
интересуемых процессов,
Func –
статический список функций и их характеристик, из которого можно выделить
подмножество u-функций.
Process = <PPID, PID, PName,
PDyn > , где
PPID –
идентификатор родительского процесса,
PID –
идентификатор процесса,
PName – имя
процесса,
PDyn – динамический
список характеристик процесса.
PDyn = <PState, ExecFunc, PTimestamp>
PState – состояние процесса,
ExecFunc –
исполняемая функция (возможно, u-функция),
PTimestamp –
временная отметка, соответствующая заданному состоянию и исполняемой функции.
Func = <FName, FExecTime, FPQuantity> , где
FName – название
функции (возможно, u-функции),
FExecTime –
среднее время разового исполнения,
FPQuantity –
количество вызовов функции каждым процессом.
FPQuantity =
<PID, FQuantity, FPeriod>
, где
PID –
идентификатор процесса,
FQuantity –
количество вызовов данной функции процессом с идентификатором PID,
FPeriod –
временной интервал, на котором произошли вызовы данной функции в количестве FQuantity раз.
Рис. 4. Представление u-функций, исполняемых в пространстве ядра
Исполнение
процессов осуществляется в пользовательском пространстве и в пространстве ядра.
На рис. 4 показано, что процесс Process(i) во время исполнения переключается из одного состояния PMode(i,1) в другое PMode(i,2). Также показано подмножество u-функций, задействованных процессом в состоянии PMode(i,2) среди множества функций в пространстве ядра.
Итак, узел ВС принимает и передает множество различных пакетов,
предназначенных для разных программ. При приеме происходит чтение заголовков,
согласно которым пакет движется по определенной цепочке – от функции к функции.
Сначала происходит обработка в ядре, затем данные попадают к ожидающему их
приложению.
Для
проведения экспериментов по измерению количественных значений Ts и Tr необходимо решить следующие
задачи:
1)
определить
наблюдаемый процесс (множество процессов);
2)
выделить
список u-функций;
3)
установить
зонды на точки вызова u-функций (наблюдаем пространство ядра);
4)
определить
список и количество вызовов u-функций при отправке и при приеме пакетов;
5)
определить
среднее время исполнения для каждой i-ой u-функции;
6)
определить
точки начала и завершения фаз отсылки и приема;
7)
рассчитать
количественные характеристики времени фазы отсылки Ts и приема Tr.
Первые
результаты по практическому решению этих задач подтвердили реализуемость
выбранного направления исследований.
Таким
образом, приведенная спецификация параметров модели узла позволяет построить
модель узла ВС. На основе множества моделей узлов ВС
можно оценивать производительность всей ВС.
ЛИТЕРАТУРА
1. Абросимов Л.И. Концепция теории производительности вычислительных сетей, 2001. Источник: http://network-journal.mpei.ac.ru/cgi-bin/main.pl?l=ru&n=1&pa=3&ar=1
1. Абросимов Л.И., Лебедь А.А. Методика исследования производительности сетевых узлов, 2007. Источник: http://network-journal.mpei.ac.ru/
2. Абросимов Л.И., Лебедь А.А., Крамаренко М. Д. Анализ механизмов реализации средствами ОС UNIX служб сетевого и транспортного уровней модели OSI, 2009. Источник: http://network-journal.mpei.ac.ru/
3. Maurice J. Bach. The Design Of the Unix Operating System – Prentice-Hall, 1986. ‑ 471 p.
4. Daniel P. Bovet, Marco Cesati. Understanding the Linux Kernel – O'Reilly, 2000. –
702 p.