Russian Language English Language

11. Модели и методы для оценки производительности ВС

11.1 ОЦЕНКА ВРЕМЕНИ ДОСТАВКИ ЭЛЕКТРОННОГО ПИСЬМА

11.2 МЕТОДИКА ЭКСПЕРИМЕНТАЛЬНОГО ОПРЕДЕЛЕНИЯ БАЗОВЫХ ПАРАМЕТРОВ ПРОИЗВОДИТЕЛЬНОСТИ КОММУНИКАЦИОННОГО УЗЛА

11.3 ИССЛЕДОВАНИЕ ПРОИЗВОДИТЕЛЬНОСТИ SIMD-ОПЕРАЦИЙ ПРОЦЕССОРА CELERON-M


Экспресс информация

Редколлегия журнала

Подписка на новости

Гостевая книга

Предоставление материалов

Письмо в редакцию

На начало


2007, Номер 1 ( 10)



Place for sale
Актуальность темы диссертации:

BC/NW 2007, №1, (10) :11.2

 

МЕТОДИКА ЭКСПЕРИМЕНТАЛЬНОГО ОПРЕДЕЛЕНИЯ БАЗОВЫХ ПАРАМЕТРОВ ПРОИЗВОДИТЕЛЬНОСТИ КОММУНИКАЦИОННОГО УЗЛА.

 

Е.В. Кокорина, Л.И. Абросимов

(Москва, Московский энергетический институт (технический университет), Россия)

 

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

 

Целью проводимых исследований является разработка методики экспериментального определения сетевых характеристик производительности вычислительной сети (ВС).

 

Поставленная цель потребует решения следующих задач:

·        Разработка плана проведения экспериментов

·        Выбор и обоснование коммуникационного узла (КУ) для проведения экспериментальных исследований

·        Анализ возможностей программных средств

·        Сбор и настройка экспериментального стенда

·        Разработка методики экспериментального определения количественных значений сетевых характеристик КУ

·        Разработка комплекса программных средств для измерения базовых временных параметров функционирования сетевых программ

·        Разработка программных средств для обработки и представления  количественных значений сетевых характеристик на основе предложенной методики.

 

Под коммуникационным узлом вычислительной сети понимаем  устройство, выполняющее функции транспортного, сетевого  и канального уровня, которое реализовано на базе IBM PC, функционирующей  под  управлением ОС Linux в сети Fast Ethernet.

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

Для проведения экспериментальных исследований рассматривается команда ping, как тестовая команда, которая позволяет проверить все положения методики исследования количественные значения сетевых характеристик КУ, которые являются базовыми понятиями  при определении производительности ВС.

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

 

Постановка задачи:

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

Под элементом узла ВС понимаются единица обработки, временно сосредотачивающая ресурсы узла для обработки транзакции (процессы, подпрограммы).

Чтобы по численным характеристикам элементов определить значения производительности узлов, необходима математическая модель.

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

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

«Детализированная» модель КУ для фазы обработки полученного пакета представлена на рисунке 1.

Далее приводятся разъяснения примененных обозначений модулей КУ. Каждый из представленных модулей содержит собственные точки трассировки, поддерживаемые  Linux Trace Toolkit.

Hardware Controllers – работа аппаратных контроллеров;

Kernel – работ ядра ОС Linux;

Network – выполнение сетевых функций;

IPC (Inter Process Сommunication) – работы внутренних процессов взаимодействия;

Scheduler – работа планировщика процессов;

System Call Interface – работа интерфейса системных вызовов;

Virtual File System – работа виртуальной файловой системы;

Socket – выполнение функций сокетом.

 

 

`

Рисунок 1 -   «Детализированная» модель коммуникационного узла

(фаза обработки полученного пакета)

 

В полученной «детализированной» модели представлены функции, которые выполняются в КУ при  сетевом обмене, последовательность, частота и длительность их выполнения.

Соответственно при планировании экспериментов для оценки интервалов времени обработки тестовых пакетов отдельными модулями КУ необходимо:

- декомпозировать модули на отдельные функции;

- измерить время выполнения каждой из функций;

- определить суммарное время выполнения функций для каждого из модулей.

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

Таким образом, измеряемыми параметрами производительности (ИПП) является время обслуживания t0 сетевых транзакций КУ, где t0 =1/ µ. Базовым параметром производительности (БПП) является интенсивность обслуживания µ потока сетевых транзакций КУ

Для измерения времени выполнения функций использованы возможности программных средств:

§              Linux Trace Toolkit-0.9.5a

§              Kernprof 1.5.1

§              Dynamic Probes (DProbes)

§              Gprof

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

С помощью программных средств необходимо оценить интервалы времени обработки тестовых пакетов отдельными программными модулями КУ при их отправлении/получении и по полученным (найденным) значениям времен оценить производительность модулей КУ для режима отправки и получения тестовых пакетов. 

Для обработки результатов экспериментов разрабатывается программный модуль, с помощью которого определяется интервалы времен при отправке/получении тестовых пакетов, время пакетов в сети. По найденным значениям интервалов времен каждого модуля КУ определяется интенсивность отправки и получения тестовых пакетов, строится график прохождения тестовых пакетов. Также в программном модуле формируется список функций ядра, состоящий из следующих частей: функции отправки, получения и общих функции для всего процесса передачи тестового пакета.

 

Описание экспериментального стенда

Коммуникационный узел (КУ) реализован на базе компьютера IBM PC под управлением операционной системы (ОС) RedHat Linux 8.0 с ядром версии 2.4.19.

Конфигурация компьютера:

- Intel Pentium II 233 MHz,

- ОЗУ 288 Мбайт,

- сетевые карты Intel 21041 и RealTek8139.

К сетевой карте RealTek8139 подключена внешняя сеть, к сетевой карте Intel 21041 подключена клиентская машина (клиент).

Клиент – компьютер IBM PC под управлением ОС Windows 2000 AS. Конфигурация компьютера клиента: Intel Pentium I MMX 200 MHz, ОЗУ 160 МБайт, сетевая карта Intel 21041.

КУ, клиент и внешняя сеть изображены на рисунке 2 КУ выполняет роль моста между клиентом и внешней сетью. Заметим, что КУ на базе компьютера представляет собой довольно универсальное решение, т.к. при желании его возможно использовать, например, как маршрутизатор.

 

Рисунок 2 – Соединение КУ с внешними устройствами

 

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

В данном работе на КУ будут установлены следующие средства: Kernprof, Linux Trace Toolkit и Dynamic Probes, с помощью которых мы сможем узнать какие процессы происходят в ядре, какие функции наиболее важные с точки зрения сетевой обработки и в какие моменты времени они вызываются. Собранные данные помогут при будущем изучении данного вопроса.

В рамках данного исследования спланированы и проведены эксперименты по передачи тестовых пакетов. Для этого разработана методика экспериментального определения сетевых характеристик производительности ВС.

Цели проведения экспериментов следующие:

·        проверка работоспособности комплекса программных средств;

·        получить список функций, вызываемых модулями КУ, с временными отметками их выполнения .

·        получить временные интервалы задержки на отправку и получение тестовых пакетов отдельными модулями КУ, на примере команды PING, для оценки интенсивности обслуживания и уточнения модели КУ;

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

Измерять характеристики для любого КУ можно только в реальном времени выполнения программных функций.

Данное исследование позволит оценивать характеристики целого класса КУ, основанного на базе универсального компьютера с соответствующим программным обеспечением.

Разработана методика, экспериментального определения сетевых характеристик КУ,  включающая в себя следующие этапы:

·        Обоснование состава параметров в модели.

·        Обоснование состава измеряемых параметров в модели.

·        Выбор инструментальных средств и их параметров настройки.

·        Настройка инструментальных средств.

·        Сбор «сырых» измеренных параметров.

·        Обработка измеренных параметров для получения параметров модели.

 

Для проведения экспериментов используется протокол межсетевых управляющих сообщений ICMP (Internet Control Message Protocol), который формирует команда PING, рассматриваемую как тестовую транзакцию при проведении эксперимента.

 

 

v    В соответствии с п.1 Плана экспериментов необходимо:

- провести серию экспериментов по трассировке событий пользовательского уровня (на примере выполнения команды ping), используя программное средство Linux Trace Tookit 0.9.5a(LTT).

 

№ п/п

Что необходимо сделать

Что получаем в результате проведения эксперимента

1.1

загрузить ядро linux-ltt.

При прохождении команды ping:

1. отображен граф событий

2. анализ процессов

3. поток событий, с указанием временных отметок

4. результаты трассировки записаны в файл.

 

- выполнить анализ процессов:

 

-зафиксировать поток событий при трассировке:

 

-построить граф событий:

 

 

зафиксировать фрагмент файла результатов работы LTT

---------------------------------------------------------------------------------------------------------

######################################################################

Event          Time           PID   Length          Description

######################################################################

Process                1,075,049,346,986,941    0        16      WAKEUP PID :

Sched change       1,075,049,346,986,942    1937 19      IN : 1937;

Syscall exit           1,075,049,346,986,944    1937 7       

Syscall entry         1,075,049,346,986,958    1937 12      SYSCALL :

File system           1,075,049,346,986,959    1937 20      WRITE : 1;

Timer                  1,075,049,346,986,986     1937 17      SET TIMEOUT :

---------------------------------------------------------------------------------------------------------

где приняты следующие обозначения:

Event имя зафиксированного события (функции);

Time временная отметка (указывается в микросекундах);

PID идентификатор текущего процесса;

Length длина  зафиксированного события;

Description описание вызова зафиксированного события (функции).

 

 

v    В соответствии с п.2 Плана экспериментов необходимо:

Для более глубокого изучения процессов, происходящих в ядре ОС Linux провести серию экспериментов используя программное средство Kernprof 2.5.

 

№ п/п

Что необходимо сделать

Что получаем в результате проведения эксперимента

2.1

загрузить ядро linux-kernprof

1. единый файл, содержащий перечень уникальных функций вызываемых в ядре ОС Linux для серии экспериментов

2. установлена взаимосвязь между функциями ядра

 

- зафиксирован фрагмент файла результатов работы Kernprof

#############################################################################

Flat profile:

Each sample counts as 1e-05 seconds.

  %   cumulative   self              self     total          

 time   seconds   seconds    calls  us/call  us/call  name   

 84.49      0.60    0.60                                              huft_build

  8.02      0.65     0.06     6527     8.70     8.79       exit_notify

  1.66      0.67     0.01                                              pm_send

  1.63      0.68     0.01                                              read_zero

  0.38      0.68     0.00    10240     0.27     0.27     zlib_inflate_flush

. . .

Call graph (explanation follows)

 

granularity: each sample hit covers 4 byte(s) for 0.00% of 0.71 seconds

index % time    self  children    called     name

                                                5439180         huft_build [1]

[1]     84.5    0.60    0.00       0+5439180     huft_build [1]

#############################################################################

 

Kernprof позволяет получить список вызываемых в ядре функций, то есть исследовать уровень ядра.

 

 

- установить взаимосвязь между функциями ядра (фрагмент файла):

 

 

 

В результате проведенных экспериментов выявлен список уникальных  функций, вызываемых в ядре ОС Linux при исследовании команды PING Количество функций ≈ 690 .

Таким образом, «детализированная» модель исследована с точностью до выполнения элементарных функций ядра.

 

v    В соответствии с п.3 Плана экспериментов необходимо:

 

Для обеспечения универсального рассмотрения всего исполняемого пространства ОС Linux, т.е. уровней пользовательского и ядра, использовать DProbes  совместно с  Linux Trace Toolkit. На примере выполнения команды ping убедиться, что происходит срабатывание в Dprobes зондов и зафиксировать все события в выходном файле LTT.

 

№ п/п

Что необходимо сделать

Что получаем в результате проведения эксперимента

3.1

загрузить ядро linux-ltt-dp

1. получен файл «сквозной» трассировки пользовательского уровня совместно с уровнем ядра ОС Linux в формате LTT.

3.2

разработать алгоритм скрипта для проведения экспериментов LTT совместно с Dprobes 

3.3

разработать и исполнить скрипт для проведения экспериментов

 

Поток событий при трассировке LTT совместно с DProbes:

###########################################################################################

Event          Time                    PID         Length          Description

###########################################################################################

Event creation         1,146,143,245,356,705 N/A   391    NEW EVENT TYPE : /usr/src/linux/vmli; CUSTOM EVENT ID : 23

/usr/src/linux/vmli    1,146,143,245,356,718 N/A   75      01 00 38 00 FB 07 00 00 07 00 FE 00 5E 0F 00 00 00 00 00 00 10 00 E0 C0 13 C0 14 CB 97 96 14 C0 0D C2 50 44 6C 71 05 00 74 72 61 63 65 64 61 65 6D 6F 6E 00 00 00 00 00

Syscall exit           1,146,143,245,356,722    N/A   7       

/usr/src/linux/vmli    1,146,143,245,356,766 N/A   75      01 00 38 00 FB 07 00 00 07 00 B7 00 5E 0F 00 00 00 00 00 00 10 00 B0 66 11 C0 C4 BF 84 93 10 C0 0D C2 50 44 9D 71 05 00 74 72 61 63 65 64 61 65 6D 6F 6E 00 00 00 00 00

Trap entry             1,146,143,245,356,773   N/A   13      TRAP : page fault; EIP : 0x400F6110

/usr/src/linux/vmli    1,146,143,245,356,781 N/A   75      01 00 38 00 FB 07 00 00 07 00 E9 00 5E 0F 00 00 00 00 00 00 10 00 A0 B4 12 C0 DC EC 7B 67 11 C0 0D C2 50 44 AC 71 05 00 74 72

/usr/src/linux/vmli    1,146,143,245,356,795 N/A   75      01 00 38 00 FB 07 00 00 07 00 24

#############################################################################################

 

В поле Event Description информация выводится в шестнадцатеричной системе счисления, в том случае, если LTT зафиксировало событие ядра.  Если же трассировщик зафиксировал событие пользовательского уровня – описание данного поля будет соответствовать стандартному для LTT.

 

Приведем пояснения поля Event Description (зафиксировано событие ядра):

Обязательная часть – первые 12 байт.

     1,2 – facility_id (идентификатор процесса)

     3,4 – len (длина поля)

     5,6,7,8 – mask (маска)

     9,10 – major (мажор)

     11,12 – minor (минор)

     41-56 – имя процесса (z - строка).

 

 

v    В соответствии с п.4 Плана экспериментов необходимо:

 

Разработать программу для преобразования полученного файла, содержащего перечень уникальных функций вызываемых в ядре ОС Linux для серии экспериментов в файл, с описанием точек зондирования. Программа должна создать входной файл для программного средства dprobes при его использовании совместно с LTT.

 

№ п/п

Что необходимо сделать

Что получаем в результате проведения эксперимента

4.1

разработать формат файла программы  с описанием точек зондирования.

1.  файл с описанием точек зондирования  probes.rpn.

4.2

разработать заголовок файла программы зондов

4.3

определить точки зондирования

4.4

разработка программы mkprobes

 

Фрагмент файла с описанием точек зондирования

// *** Заголовок файла ***

name="/usr/src/linux/vmlinux"  // имя модуля, в который "вставляем" зонд

modtype=kernel // kmod | user //тип модуля ядро/модуль ядра/польз. модуль

Vars=0                                   //число переменных

gvars=0                                  //число глобальных переменных

major=7                                 //главный код точки зондирования

id=0                                       //идентификатор программы зондов

logmax=1024                          //максимальное число байт

jmpmax=256                          //максимальное число переходов и циклов               

                                             //чтобы гарантировать, что система не зависнет

logonfault=no                         //будет производится запись в журнал при

                                            //ошибочной\ невыполненной команде

// *** Определения точек зондирования ***

address=_alloc_pages            //название функции

opcode=0x89c1                    //код операции

minor=1                              //второстепенный код точки зондирования

max_hits=0x7fffffff              //точка зондирования будет заблокирована после 

                                          //данного количества совпадений

Exit                                     //завершения обработчика зондов с сохранением

 

 

Входными данными для начала работы программы mkprobes:

·        файл, содержащий список уникальных функций ядра (List690.txt ), в котором на каждой строчке одно имя функции, сформированный в результате проведения серии экспериментов

·        файл дампа ядра Linux (dump.txt), полученный с помощью команды objdump.

 

По завершении работы mkprobes сформирует файлы:

·        файл probes.rpn – файл с описанием точек зондирования, т.е. входной файл для dprobes

·        файл errors.txt – файл с названиями функций, которые не были обнаружены в дампе ядра

 

 

v    В соответствии с п.5 Плана экспериментов необходимо:

 

Разработать программу для обработки и представления data - файлов (полученных при проведении экспериментов  LTT и Dprobes)

№ п/п

Что необходимо сделать

Что получаем в результате проведения эксперимента

5.1

Разработка алгоритма работы программы AnalysisD2T (укрупненная схема)

1. преобразованное поле  Description из hex-формата в текстовый вид для data- файлов

2. расчет времен отправки (), в сети (), получения () команды ping.

3. рассчитать по полученным значениям времен , ,  интенсивности (БПП) - отправки,  - передачи в сети,   - отправки команды ping.

4. диаграмма, отображающую процесс работы команды ping

5. вызываемые в ядре ОС Linux функции (при прохождении команды ping) разделены на три группы, 1– группа общих функций, 2 – группа функций, участвующих при получении и 3 – группа функций, участвующих при отправке команды ping.

6. полученные при обработке  результаты сохранены в отдельный файл.

5.2

Разработка алгоритма работы программы AnalysisD2T(обработка data - файла)

5.3

анализ  формат строки поля Description

5.4

Обработка data-файла

 

 

Для расчета времен отправки (tAB), в сети (tBC), получения (tCD), необходимо проанализировать путь, который проходит команда ping.

Точки A и D      соответствуют      моментам первого и последнего     появления     событий  с процессом ping.

Точки B и C соответствуют LTT-событиям SO SEND и SO RECEIVE, соответственно, сообщающих о посылке и о приеме команды ping.

 

 

Входные данные:

n     Filename – имя обрабатываемого data-файла.

 

Выходные данные:

n     txt-файл – результат преобразования (имеет то же имя, что и у входного файла, отличается только расширением);

n     rep-файл – отчет, содержащий информацию о том, какие функции встретились в исходном файле (data - файле), какие из них участвовали при посылке ping’а и какие при его приеме (имеет то же имя, что и у входного файла, отличается только расширением).

n     b-файл – содержит обобщенные данные по проведенным экспериментам (список функций)

 

Начальное состояние программы (главное окно).

 

Фрагмент входного файла:

#############################################################################

Event          Time           PID   Length          Description

...

/usr/src/linux/vmli    1,146,147,640,178,988    3806    75      01 00 38 00 FB 07 00 00 07 00 6E 02 DE 0E 00 00 00 00 00 00 10 00 F0 8C 25 C0 10 00 84 92 10 C0 38 D3 50 44 2B BB 02 00 70 69 6E 67 00 6C 6C 00 00 00 00 00 00 00 00 00

Socket                 1,146,147,640,178,992    3806    16      SO; CALL : 16; FPM(FD) : 3

Socket                 1,146,147,640,179,004    3806    16      SO SEND; TYPE : 3; SIZE : 64

/usr/src/linux/vmli    1,146,147,640,179,034    3806    75      01 00 38 00 FB 07 00 00 07 00 3F 00 DE 0E 00 00 00 00 00 00 10 00 50 A9 25 C0 73 00 17 9E 25 C0 38 D3 50 44 59 BB 02 00 70 69 6E 67 00 6C 6C 00 00 00 00 00 00 00 00 00

/usr/src/linux/vmli    1,146,147,640,179,064    3806    75      01 00 38 00 FB 07 00 00 07 00 9E 01 DE 0E 00 00 00 00 00 00 10 00 90 C7 25 C0 B8 C6 2C FF 26

#############################################################################

 

 

Фрагмент файла результата преобразования

#############################################################################

Event          Time           PID   Length          Description

...

/usr/src/linux/vmli    1,146,147,640,178,988    3806    75      Process: ping; major:  

                                                                7; minor: 622 (function: sys_socketcall)

Socket                    1,146,147,640,178,992    3806    16      SO; CALL : 16;

                                                                                                      FPM(FD) : 3

Socket                    1,146,147,640,179,004    3806    16      SO SEND; TYPE : 3;

                                                                                                          SIZE : 64

/usr/src/linux/vmli    1,146,147,640,179,034    3806    75      Process: ping; major:

                                                                        7; minor: 63 (function: alloc_skb)

/usr/src/linux/vmli    1,146,147,640,179,064    3806    75      Process: ping; major:

                                                  7; minor: 414 (function: memcpy_fromiovecend)

...

#############################################################################

 

Фрагмент файла отчета

#############################################################################

Работа процесса ping: 96.3 %

Интервалов: 2

 1)   [ 640160750 , 640179610 ]

 2)   [ 640180802 , 640192662 ]

SO SEND:    640179004 мкс

SO RECEIVE: 640179468 мкс

 tAB = 18254 мкс        µAB =   54.78 1/с

 tBC =   464 мкс        µBC = 2155.17 1/с

 tCD = 13194 мкс        µCD =   75.79 1/с

____________________________________________________

  N     OTHER   OUT     IN      NAME

    1    X       X       X      _alloc_pages

    2    X       -       -      __block_commit_write

    3    X       -       -      __block_prepare_write

...

#############################################################################

 

Вид главного окна после обработки файла

 

Диаграмма, отображающий работу процесса ping

 

Список функций ядра:

 

 

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

         Разработанная методика используется для проведения сравнительных исследований работы модулей ТСР и IP.