Научная статья на тему 'Методы и средства профилирования и управления распределенными системами'

Методы и средства профилирования и управления распределенными системами Текст научной статьи по специальности «Автоматика. Вычислительная техника»

CC BY
74
15
Поделиться
Ключевые слова
РАСПРЕДЕЛЕННЫЕ СИСТЕМЫ / УПРАВЛЕНИЕ РЕСУРСАМИ / ПРОФИЛИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ / АВТОМАТИЗАЦИЯ УПРАВЛЕНИЯ

Аннотация научной статьи по автоматике и вычислительной технике, автор научной работы — Сухарев Р.Г., Лукьянчиков О.И., Плужник Е.В.

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

Похожие темы научных работ по автоматике и вычислительной технике , автор научной работы — Сухарев Р.Г., Лукьянчиков О.И., Плужник Е.В.,

Profiling and Control of Distributed Systems

The article analyzes and standardizes methods for profiling distributed systems that focus on simulation to conduct experiments and build a graph model of the system. The theory of queueing networks is used for simulation modeling of distributed systems, receiving and processing user requests. To automate the above method of profiling distributed systems the software application was developed with a modular structure and similar to a SCADA-system.

Текст научной работы на тему «Методы и средства профилирования и управления распределенными системами»

of Science. 2016. ^ 3. № 4 http:/ / cloudofscience.ru

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

Р. Г. Сухарев*, О. И. Лукьянчиков*, Е. В. Плужник**

*Московский технологический университет (МИРЭА) 119454, Москва, Проспект Вернадского, 78

**Московский технологический институт 119334, Москва, Ленинский проспект, 38а

е-mail: luk-it6@yandex.ru

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

Ключевые слова: распределенные системы, управление ресурсами, профилирование информационных систем, автоматизация управления.

1. Введение

Каждый разработанный программный модуль может включаться в состав разных программ, если выполнены условия его использования, декларированные в документации по этому модулю. Таким образом, программный модуль может рассматриваться и как средство борьбы со сложностью программ, и как средство борьбы с дублированием в программировании. Они сокращают время разработки программ, облегчают внедрение и обеспечивают гибкость. Но модульное программирование так и не смогло полностью реализовать все свои концепции в полной мере [1]. Поэтому с развитием сетей и распределенных систем модули стали отдельными сетевыми приложениями, которые образовали сервис-ориентированные системы Software-as-a-Service (SaaS) и более сложные облачные системы. Сервисы предоставляют приложениям или другим сервисам свои услуги, решая ряд интеграционных проблем. Однако выросла сложность анализа таких систем, так как операции выполняются на различных вычислительных узлах и на каждую службу

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

Все существующие сегодня системы для анализа распределенных систем строятся на основе анализа журналов работы (логов) всех служб, например ELK [2, 3] (Elasticsearch — для перенаправления потоков логов; Logstash — для поиска в логах; Kibana — для отображения пользователю результатов) или Dapper [4] от Google. Данные средства позволяют по предусмотренным разработчиками логам найти ошибки или «узкие» места, но не позволяют эффективно предпринять меры по их исправлению, т. е. выполнить управляющие воздействия на систему. Поэтому для профилирования и управления распределенными системами предпочтительным являются системы типа SCADA(Supervisory Control And Data Acquisition). Термин «SCADА-система» используется, когда речь идет об автоматизированных системах, т. е. системах контроля и управления, осуществляемого с участием человека, — диспетчера (оператора). В информационных системах производится огромное множество операций, за которыми оператор не в состоянии уследить, поэтому предпочтительным при профилировании и управлении показывать только ошибочные и трудозатраные, выходящие за норму, операции, что позволит найти узкие места в системе и переконфигурировать ее при необходимости.

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

Общепринятого метода и инструмента для профилирования распределенных систем сегодня нет, однако существует ряд предложенных методов в работах [5, 6]. Оба этих метода анализа и профилирования распределенных систем ориентированы на имитационное моделирование для проведения экспериментов и построение графовой модели системы. Проведя объединение и унификацию данных методов, можно выделить основные этапы профилирования распределенных систем:

- формирование графового представления процесса решения функциональных задач как взаимосвязанной совокупности процессов обработки запросов;

- построение и настройка имитационной модели процесса обработки запросов на конкретный вариант компьютерной сети и размещения распределенного информационного хранилища;

- проведение эксперимента на имитационной модели для оценки времени выполнения запросов;

- определение узких мест в системе, кардинально влияющих на производительность распределенной системы.

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

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

- недетерминированное в общем случае время обслуживания единичной заявки; время, потраченное на обслуживание заявки зависит от общего объема пакета, в результате чего имеется взаимная зависимость среднего времени обслуживания заявки и количества заявок, ожидающих обслуживания;

- корреляционные связи между временами поступления заявок, поступающих от различных элементарных источников, приводящие к отсутствию стационарности потока.

При наличии рассчитаных показателей эффективности отдельных СМО можно провести расчет показателей эффективности стохастической сети массового обслуживания (СеМО), определяемой совокупностью характеристик [6]:

1) множеством СМО {^ , S2,..., образующих сеть;

2) числом каналов К, К,К в системах ^, ^,. ., ^ соответственно;

3) матрицей траекторий движения заявок Я =|| ^||, где ^ — номер СМО, на

которую переходит заявка, продвигающаяся по 7-му пути на }-й фазе обслуживания при детерминированной процедуре маршрутизации, или матрицей вероятностей перехода заявок из одной СМО в другую Р =|| р||, где р — вероятность того, что

заявка, покидающая ^, поступает в S.;

4) числом заявок, циркулирующих в замкнутой сети (Я);

5) интенсивностью источников заявок в разомкнутой сети Л = (Хг-(к)}, где 7 — тип заявки; к — категория срочности;

6) законами распределения времени ¥г(7), ¥г(7), ..., ¥п(I) и дисциплинами обслуживания заявок в системах ^, S2,..., ^. Системы ^, ^,. ., ^ и связи между ними определяют структуру сети. Интенсивность источников заявок Х^ (к), интенсивность обслуживания ^ (к), длины очередей и режим работы приборов характеризуют нагрузку и производительность СеМО.

Моделирование распределенной информационной системы на основе СеМО описано в работах [7, 8].

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

3. Инструментальные средства профилирования и управления распределенными системами

Инструментальные средства, автоматизирующие профилирование распределенных систем, реализованы в системе hmiSCADA (https://github.com/RSukharev/ hmiSCADA), написанной на языке C++ с использованием библиотеки Qt. В данном приложении использован принцип модульного построения. Система состоит из основного модуля, обеспечивающего полный набор базовых функций обработки и визуализации информации, а также дополнительных функциональных модулей-опций, реализующих функции сбора данных и необязательные в применении функции контроля и управления. Дополнительные модули сбора данных и управления включаются в исходный код профилируемой системы.

Функционал основного модуля включает:

- получение данных от внешних модулей;

- визуализацию данных;

- обеспечение возможности управления процессом профилирования;

- имитационное моделирование.

Функционал дополнительных модулей включает:

- сбор данных о времени начала и времени завершения тестируемого участка кода;

- отправку данных о профилировании по сети на основной модуль системы;

- выполнение команд, полученных от модуля визуализации и управления.

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

привести графический интерфейс пользователя к общепринятому стандарту. Также можно обеспечить совместимость со стандартами передачи данных в системах SCADA (OPC UA). Расширение функционала системы происходит по мере написания и подключения новых модулей.

Модули подключаются динамически и имеют интерфейсы:

1) request, предназначенный для отправки данных;

2) processData, предназначенный для выполнения команд и обработки полученных данных.

Работа системы построена на обмене сообщениями между модулями. Обмен сообщениями осуществляется при помощи структуры данных, состоящей из полей: senderID (идентификатор плагина-отправителя), receiverID (идентификатор плагина-получателя), command (команда для выполнения на стороне плагина-получателя) и value (пересылаемые данные).

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

Компоненты системы отображены на рис. 1:

Рисунок 1. Диаграмма компонентов системы hmiSCADA

Основной компонент на диаграмме (HMI SCADA) состоит из элементов:

- Controller (является диспетчером сообщений и обеспечивает обмен данными между модулями системы);

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

- PluginUDP (сетевой модуль, обеспечивает прием сообщений по сетевому протоколу UDP от модуля AgentUDP и перенаправление компоненту Controller, а также отправку по сети управляющих команд от Controller-a модулю AgentUDP);

- Syslog (модуль анализа логов, используется для получения данных о профилировании на основании анализа логов системы);

- Model (модуль, предназначенный для имитационного моделирования). Дополнительные модули системы представлены на диаграмме компонентами:

- Agent (модуль сбора данных и управления профилируемой системой);

- SysLog source (любой источник данных, совместимых с форматом SysLog).

Сбор информации обеспечен включением в исходный код профилируемой системы класса Profiler и осуществляется посредством макросов:

#define PROFILE_BEGIN(nodeinfo, moduleinfo)

Profiler _profiler_(nodeinfo, moduleinfo,_FILE_);

#define PROFILE_START(...)

_profiler_.start(_FILE_,_LINE_, ##__VA_ARGS__);

#define PROFILE_STOP()

_profiler_.stop(profileBlock,_FILE_,_LINE_);

#define ON_EXIT(...) _profiler_.onExit();

Макросы вызывают функции класса Profiler со следующими параметрами: название файла с исходным кодом и номер строки профилируемого блока. Пример использования: #include "Profiler/profiler.h" std::string appID = qPrintable(QString("mini") +

QString::number(getTimeNS())); #define PROFILE_ENABLE

#define PROFILE_BEGINNER PROFILE_BEGIN(appID, " ");

PROFILE_START(Q_FUNC_INFO); #define PROFILE_ENDER PROFILE_STOP(); void mini::on_pbSend_released() {

PROFILE_BEGINNER; // начало профилирования

sendMessage();

PROFILE_ENDER; // окончание профилирования

}

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

AgentUDP отправляет по сети сообщение на адрес и порт основного модуля системы. Получателем в сообщении указан модуль Visualiser. PluginUDP отдает принятые по сети данные классу Controller, добавляя к ним свой идентификатор в виде параметра pluginID (идентификатор плагина-ретранслятора). Controller перенаправляет данные модулю, указанному в сообщении как получатель, т. е. Visualiser. В сообщении отправителем указан идентификатор модуля AgentUDP, поэтому при возникновении необходимости отправки ответа или управляющей команды модуль Visualiser сформирует сообщение с данным идентификатором в качестве получателя. Сообщение от Visualiser-а поступит диспетчеру сообщений Controller и затем перенаправится на модуль-ретранслятор (PluginUDP), который перешлет его по сети модулю AgentUDP с соответствующим идентификатором.

Результаты профилирования простого чата, отправляющего сообщения по UPD, показаны на рис. 2.

Рисунок 2. Визуализация результатов профилирования двух экземпляров приложения чата

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

4. Заключение

Рассмотрены методы и инструментальные средства типа SCADA для профилирования и управления распределенными системами. Данные системы позволят автоматизировать процесс профилирования систем, что упростит поиск узких мест и ошибок в системе [9]. Важным фактором в развитии и популяризации таких систем типа SCADA является возможность интегрирования их в уже эксплуатирующиеся распределенные системы, поэтому в прототипе hmiSCADA предлагается модульная архитектура. Благодаря данной архитектуре сторонние разработчики получают возможность разрабатывать свои модули hmiSCADA. Потраченные трудозатраты на разработку данных модулей должны с легкостью окупиться сэкономленным временем на профилирование и анализ системы.

Литература

[1] Бреслер И. Б., Семенов С. А., Корниенко В. В., Борисов В. В. Перспективный подход к организации программных комплексов // Радиопромышленность. 2009. Вып. 1. С. 7288.

[2] Reelsen A. Using elasticsearch, logstash and kibana to create realtime dashboards [Электронный ресурс] URL: https://secure.trifork.com/dl/goto-berlin-2014/GOTO_Night/logstash-kibana-intro.pdf.

[3] Bagnasco S. et al. Monitoring of IaaS and scientific applications on the Cloud using the Elasticsearch ecosystem // Journal of Physics: Conference Series. 2015. Vol. 608. No. 1. P. 012016.

[4] Sigelman B. H. et al. Dapper, a large-scale distributed systems tracing infrastructure. - 2010.

[5] Лукьянчиков О. И., Филатов В. В. Профилирование распределенных систем // Инженерный вестник. 2016. № 2. URL: http://engsi.ru/doc/834731.html

[6] Иванов А. Ю., Горшков В. С. Методика оценки эффективности распределенных информационных хранилищ // Научно-аналитический журнал Вестник Санкт-

Р. Г. Сухарев, Методы и средства профилирования

О. И. Лукьянчиков, и управления распределенными системами

Е. В. Плужник

Петербургского университета государственной противопожарной службы МЧС России. 2010. Т. 6. № 2. С. 38-44 (http://vestnik.igps.ru/wp-content/uploads/V22/7.pdf)

[7] Башарин Г. П., Толмачев А. Л. Теория сетей массового обслуживания и ее приложения к анализу информационно-вычислительных систем // Итоги науки и техники. Серия «Теория вероятностей. Математическая статистика. Теоретическая кибернетика». 1983. Т. 21. № 1. С. 3-119.

[8] Макаров Д. В., Бурковский В. Л. Моделирование распределенной информационной системы на основе сети массового обслуживания // Вестник Воронежского государственного технического университета. 2016. Т. 12. № 1.

[9] Nikulchev E., Pluzhnik E., Lukyanchikov O., Biryukov D., Andrianova E. QoS-based Computing resources partitioning between virtual machines in the cloud architecture // International Journal of Advanced Computer Science and Applications. 2016. Vol. 7. No. 11. P. 165-170.

Авторы:

Роман Геннадьевич Сухарев — студент, Московский технологический университет (МИРЭА)

Олег Игоревич Лукьянчиков — кандидат технических наук, старший преподаватель кафедры управления и моделирования систем, Московский технологический университет (МИРЭА) Евгений Владимирович Плужник — первый проректор, Московский технологический институт

Profiling and Control of Distributed Systems

R. Sukharev*, O. Lukyanchikov*, E. Pluzhnik**

*Moscow Tecnological University MIREA Vernadsky Avenue, 86, Moscow, Russia 119571

**Moscow Technological Institute Leninskiy pr., 38A, Moscow, Russia 119334

e-mail: luk-it6@yandex.ru

Abstract. The article analyzes and standardizes methods for profiling distributed systems that focus on simulation to conduct experiments and build a graph model of the system. The theory of queueing networks is used for simulation modeling of distributed systems, receiving and processing user requests. To automate the above method of profiling distributed systems the software application was developed with a modular structure and similar to a SCADA-system.

Key words: distributed systems, resource management, profiling systems, control systems.

References

[1] Bresler I. B. et al. (2009) Radiopromyshlennost, 1:72-88. [In Rus]

[2] Reelsen A. (2014) Using elasticsearch, logstash and kibana to create realtime dashboards https://secure. trifork. com/dl/goto-berlin-2014/GOTO_Night/logstash-kibana-intro.pdf.

[3] Bagnasco S. et al. (2015) Journal of Physics: Conference Series, 608(1):012016.

[4] Sigelman B. H. et al. (2010) Dapper, a large-scale distributed systems tracing infrastructure.

[5] Lukyanchikov O. I., Filatov V. V. (2016) Inzhenernyj vestnik, 2, 83473 [In Rus]

[6] Ivanov A. Y., Gorshkov V. S. (2010) Vestnik Sankt-Peterburgskogo universiteta gosudarstven-noj protivopozharnoj sluzhby MChS Ros-sii, 6(2):38-44 [In Rus]

[7] Basharin G. P., Tolmachev A. L. (1983) Itogi nauki i tehniki. Serija «Teorija verojatnostej. Matematicheskaja statistika. Teoreticheskaja kibernetika», 21:3-119 [In Rus]

[8] Makarov D. V., Burkovskiy V. L. (2016) Vestnik Voronezhskogo gosudarstvennogo tehniche-skogo universiteta. 12(1) [In Rus]

[9] Nikulchev E. at al. (2016) International Journal of Advanced Computer Science and Applications, 7(11): 165-170.