Cloud of Science. 2020. T. 7. № 3 http:/ / cloudofscience.ru
Использование асинхронных акторов в вычислительных комплексах для специальных задач
В. Е. Сачков
МИРЭА - Российский технологический университет, 119454, Москва, пр-т Вернадского, 78
email: megawatto@mail.ru
Аннотация. В современном мире «больших данных» актуально стоит вопрос обработки больших массивов неструктурированной цифровой информации. Сложность обработки таких данных обуславливается, тем что необходимо разрабатывать отдельные решения под каждый тип специальных задач. Из-за этого каждая специальная вычислительная задача (СВЗ) по обработке данных становится уникальной. Стандартной практикой сегодня является использования уже готовых специальных решений для обработки СВЗ. Это позволяет уменьшить время на разработку и поиска необходимого решения. Но это практика порождает другие проблемы связанные с тем, что: используемые решения нельзя модифицировать; закрытый исходный код; зашита авторским правом или лицензией. Наиболее частая проблема с готовыми специальными решениями — это плохая поддержка распараллеливания на многопроцессорном вычислительном комплексе и отсутствие возможности распределения задач на вычислительный кластер. В качестве решения в данной статье рассматривается возможность использования модели асинхронных акторов, в свойства которых входит возможность обмена сообщений между собой и работы в разных режимах распараллеливания задач. Ключевые слова: модели асинхронных акторов, специальная вычислительная задача, распараллеливание задач.
1. Введение
С развитием цифровых технологий и с распространением сети интернет, с каждым годом увеличивается количество генерируемой цифровой информации. Данная тенденция привела к появлению концепции «больших данных» (Big Data) [1], которая заключалась в задачах обработки значительных массивов цифровой информации. Обрабатываемые данные разнородны, не структурированы, генерируются в больших объемах и с высокой скоростью. Это потребовало разработки новых методов и алгоритмов для извлечения ценных данных из огромных массивов информации [2], например появление модели MapReduce [3]. Сложность решения задач специальной обработки данных обусловливается их уникальностью. Специальные вычислительные задачи (СВЗ) не обладают унификацией, и единого стандарта не
существует. Каждый тип задач является уникальным и требует разработки собственного решения, методов оптимизации, алгоритмов и т. д.
Для решения СВЗ разрабатывают специализированные приложения, которые могут основываться на различных принципах:
- распределенные вычисления, когда задачи по некоторому алгоритму распределяются на доступные вычислительные узлы в кластере [5], например с использованием «Apache Hadoop» [6];
- использование моделей машинного обучения, наиболее популярные готовые решения это: TensorFlow [7], Scikit-learn [8] и др;
- использование специализированных алгоритмов, например расчет метрики «tf-idf» для поиска документа на естественном языке [9].
Все эти подходы объединяет, то что им необходимо обрабатывать большое количество вычислительных задач с использованием специальных приложений, которое могут быть как сторонними, так и внутренней разработки.
Но несмотря на то, что готовые решения упрощают и удешевляют разработку, такой подход обладает рядом недостатков.
1. Закрытый исходный код, который не позволяет модифицировать приложение под нужды пользователя.
2. Плохая оптимизация приложения для работы в параллельном режиме или распределением нагрузки на вычислительный кластер.
3. Сложность в разработке, обучении и сопровождении.
Отсюда формируется актуальность исследования — это разработка новых методов и алгоритмов способных повысить производительность вычислительных комплексов при обработке СВЗ, упростить разработку и эксплуатацию средств обработки больших массивов неструктурированных цифровых данных, отвечающих концепции «больших данных»; использовать, на сколько это возможно, только открытые и свободные не проприетарные специальные сторонние готовые решения или собственные разработки. В данной статье представляется разработанная модель асинхронных акторов, для решения задач по обработке СВЗ.
2. Модель асинхронных акторов
На основе обзора существующих решений исследованы современные подходы к оптимизации, распараллеливанию программ и распределению вычислений [10] разработана модель асинхронных акторов.
Актор — это примитив параллелизма высокого уровня [11], который позволяет моделировать параллельные вычисления с использованием сущностей, взаимодействующих между собой, путем передачи сообщений. По сути, актор сам является
вычислительной сущностью, которая в ответ на полученное сообщение может одновременно:
- отправить конечное число сообщений другим акторам;
- создать конечное число новых акторов;
- выбрать поведение, которое будет использоваться при обработке следующего полученного сообщения.
Так как разработанная модель оперирует изменением своего состояния через обмен сообщениями, приведем ее формальное описание с помощью конечных автоматов.
Определим множество вида дг = {х0, х1,..хг}, где х; — входной символ алфавита.
Определим множество состояний Q = {Ц0,Ц1,..., Ц„}, так чтобы {д0 ^,..., } ~ {ожидание сообщения, проверка сообщения,
установка режима работы, обработка, отправка}
Определим входной алфавит хг, где 7 — это порядковый номер состояния: х0 = {сообщение, ожидание};
X = {для текущего актора, не для текущего актора, общее}; X = {режим задан пользователем, режим не задан}; х3 = {адаптер есть, адаптер отсутствует}; х4 = {адрес получателя указан, адрес получателя отсутствует}.
Определим выходной алфавит у, где 7 — это порядковый номер состояния: у0 = {получено сообщение в почтовый ящик, ожидание сообщения}; у = {взято в обработку, отклонено};
у = {пользовательский режим работы, режим работы балансировщика}; у3 = {отправка результата, ошибка};
у4 = {отправка получателю, отправка в очередь решений}.
Определим правила переходов состояний, которые используется в случае ошибок при вычислениях. Правила перехода для ошибок вида
Е, ^ С' V хj+2 V. • )' Х' ^ }' 7 — порядковый номер состояния, где определены входные сигналы при которых автомат в текущем состоянии возвращается в конечное состояние.
Разработанная модель асинхроных акторов, выраженная через конечные автоматы, представлена в виде графа состояний Мили на рис. 1.
Рисунок 1. Граф состояний модели асинхронных акторов
Основными свойствами разработанной модели являются:
- модель может из каждого состояния переходить в состояние «ожидание сообщения» или находиться в состоянии «проверка входящих сообщений», тем самым позволяя вести асинхронную работу в вычислительном комплексе;
- конечное состояние модели — это «ожидание сообщения», то есть с момента запуска модель не прекратит своей работы при получении любого количества входных данных;
- модель стремится перейти в конечное состояние путем полного цикла обработки входящего сообщения или при возникновении ошибки.
Рассмотрим основные взаимодействующие компоненты в модели и алгоритм ее работы на UML диаграмме действий представленной на рис. 2. На представленной диаграмме обозначены следующие основные элементы:
- актор — объект актора, главный модуль модели, в котором сосредоточена основная логика работы и управления асинхронным актором;
- балансировщик нагрузки (БН) — модуль балансировщика нагрузки определяющий оптимальный режим работы актора;
- обработчик сообщений (ОС) — модуль, содержащий подключаемые адаптеры обработки сообщений для вычислительных задач. Алгоритмы и архитектура адаптера специально разработаны так чтобы он мог распространять функционал асинхронного актора на текущее решение;
- очередь задач (ОЗ) — объект, который отвечает за рассылку сообщений между акторами;
- очередь решений (ОР) — объект, отвечающий за сохранение результатов вычислений акторов.
Рисунок 2. UML диаграмма последовательности модели асинхронных акторов
Алгоритм работы модели асинхронных акторов включает в себя следующие основные шаги:
1. Асинхронное ожидание сообщений из очереди задач в почтовый ящик актора.
2. Полученное в почтовый ящик сообщение обрабатывается главным модулем актора.
3. Актор запрашивает у БН оптимальный режим работы для обработки поступившей в сообщении вычислительной задачи:
a. Однопоточный режим — режим, в котором обработка сообщений происходит последовательно, без создания параллельных потоков. Является блокирующем режимом работы, актор не может выполнять одновременно более одной задачи.
b. Многопоточный режим — режим, в котором актор обрабатывает сообщения параллельно используя пул потоков выполнения.
^ Многопроцессный режим — режим, в котором актор использует для параллельной обработки сообщений пул легковесных процессов.
d. Режим копирования — дополнительный режим, в котором актор создает свои копии и запускает их в одном из ранее перечисленных режимов.
4. В зависимости от режима балансировки (калибровка, балансировка) возвращается определенный режим работы.
5. Актор устанавливает полученный режим работы.
6. Сообщение асинхронно отправляется в обработчик сообщений (ОС).
7. В ОС вызывается адаптер соответствующего типа вычислительной задачи в сообщении.
8. После обработки асинхронно ОС возвращает результат актору.
9. Актор отправляет результат в очередь решений (ОР).
10. ОР сохраняет результаты вычислений актора.
11. После отправки результатов актор собирает статистику, по обработанному сообщению, и передает ее в БН для агрегации статистики.
3. Применение асинхронных акторов
Решая задачу повышения производительности распределенной вычислительной системы в многопроцессорных вычислительных комплексах (МВК), нельзя обойти стороной организацию топологии сети и протоколов передачи сообщений. Основными рабочими процессами на вычислительных машинах являются асинхронные акторы, коммуникация между ними организована путем обмена сообщениями. Архитектура организации вычислительного кластера с применением асинхронных акторов представлена на рис. 3
На рис. 3. представлены следующие элементы:
1. Актор — специальное приложение, выполняющее вычисления.
2. Обработчик сообщения — модуль асинхронного актора, который обрабатывает определенный тип сообщений.
3. МВК — многопроцессорный вычислительный комплекс, на котором выполняются вычисления и который объединен в единую вычислительную сеть.
4. RabbitMQ — сервер очередей, которые выполняют роль общей шины для передачи сообщений между акторами и другими элементами.
5. Очередь задач — очередь сообщений, в которой хранятся задания для акторов.
6. Очередь решений — очередь сообщений, в которую отправляются готовые результаты решения задач.
7. Менеджер задач — специальное приложение, которое создает задачи для акторов.
8. БД — элемент, сохраняющий результаты.
Рисунок 3. Архитектура организации вычислительного кластера с применением асинхронных акторов
Чтобы показать все преимущества использования акторов, в качестве сравнения возьмем скорость обработки СВЗ в нормальном режиме (работа приложения без использования акторов) и сравним с изменением скорости обработки с использованием асинхронных акторов.
В качестве СВЗ была выбрана одна из актуальных и востребованных на текущий момент задач — это обработка текста на естественном языке [12]. Задача заключается в первичной обработке текста: токенизация, стеммизация, удаление стоп-слов и т. д. [13].
Специальное приложение для обработки текста на естественном языке не оп-тимизированно для параллельной работы, но подключено с помощью адаптера к асинхронному актору.
Приведем результаты обработки неоптимизированной СВЗ был использован вычислительный комплекс со следующими характеристиками:
- процессор Intel Xeon E5-2660V2 x — 2 шт;
- ОЗУ 128 ГБ;
- операционная система CentOS 7.
В качестве систем измерения использовались: 2аЬЫх — система мониторинга и отслеживания статуса вычислительного кластера; rabbitmq-managment — плагин для сервера RabbitMQ, показывающий статистику обмена сообщениями.
Результаты измерений для нормального режима работы представлены на рис. 4, 5.
Рисунок 4. Измерение загрузки CPU системой Zabbix
Рисунок 5. Измерение средней скорости обработки сообщений RabbitMQ
Из рисунков видно, что текущее специальное приложение по обработке текста на естественном языке крайне неэффективно использует доступные вычислительные ресурсы Средняя нагрузка на CPU вычислительного узла ~2.98%, средняя скорость обработки ~21.95 сообщений в секунду. А значительный запас вычислительной мощности «простаивает».
Сравним среднею скорость обработки сообщений (сообщ. / сек) с использованием асинхронных акторов в многопоточном и многопроцессном режиме работы с разным количеством рабочих потоков (здесь под рабочим потоком будет пониматься количество запущенных потоков или процессов). Результаты измерений работы с использованием асинхронных акторов представлены в табл. 1.
Таблица 1. Средняя скорость обработки СВЗ в разных режимах работы
Режим/кол. потоков 1 5 20 40
Нормальный (без акторов) 21.95 - - -
Многопоточный 21.9 22.8 22.17 22.60
Многопроцессный 80.39 78.70 81.5 80.59
Из табл. 1 видно, что наилучший режим работы асинхронного актора, это многопроцессный. Многопоточный и нормальный режимы из-за реализации приложения не отличаются по производительности. Многопроцессный режим при увеличении рабочих потоков не дает видимого прироста, из-за реализации приложения и платформы асинхронных акторов, наилучшая скорость при 20 рабочих потоках, но при этом если измерить загрузку CPU, то она будет составлять всего ~11%.
Это дает возможность актору не только использовать средства распараллеливания, но и задействовать свободные вычислительные ресурсы создавая свои копии. Рассмотрим среднюю скорость обработки сообщений асинхронным актором в многопроцессном режиме с 20 рабочими потоками, при разном количестве запущенных копий в табл. 2 и рисунках 6, 7.
Таблица 2. Средняя скорость обработки СВЗ с разным количеством копий асинхронных акторов
Количество акторов 2 5 10 20 40 100
Ср. скорость всех процессов, с./сек. 120 300 350 360 350 230
100% во % 60 % 40« 20 % 0 %
■ CPU idle time [сред) 0.67% 0.67% 4Э.81 % 93.84%
■ CPU user time [сред] 98.7% 3.38% 55.6% 98.7%
■ CPU system time [сред! 0.53% 0.53% 1.21% 2.73%
■ CPU lowait time [сред] 0.0062% 0.0008% 0.03% 0.07%
■ CPU nice time [сред] 0% 0% 0% 0%
■ CPU interrupt time [сред] 0% 0% 0% 0% □ CPU softlrq time [сред] 0.08% 0.04% 0.11% 0.15% 9 CPU steal time [сред] 0% 0% 0% 0%
Рисунок 6. Измерение загрузки CPU системой Zabbix
Рисунок 7. Измерение средней скорости обработки сообщений RabbitMQ
Из табл. 2 видно, что когда актор запускает свои копии в определенном режиме, скорость обработки СВЗ возрастает, но на определенном количестве копий скорость падает, что явно демонстрирует закон Амдала [14]. Измерение нагрузки CPU системой Zabbix показывает значительный прирост нагрузки с каждой новой копией актора. А максимальная средняя скорость обработки с одного вычислительного узла ~350 сообщений в секунду.
Из результатов работы асинхронного актора по обработке неоптимизирован-ной СВЗ, можно сделать вывод: при нормальной работе приложения средняя скорость обработки СВЗ ~21.95 сообщений в секунду, а загрузка CPU ~2.98%, при использовании асинхронных акторов в разных режимах работы можно добиться увеличения скорости обработки СВЗ без изменения используемого приложения в ~ 16 раз до 350 сообщений в секунду.
4. Заключение
Разработанная модель асинхронных акторов позволяет за счет асинхронной работы и переключений в разные режимы может повысить производительность специального неоптимизированного приложения без его модификации. Алгоритм модели при обработке любой задачи собирает подробную статистику, которую можно использовать для тренировки моделей машинного обучения или формирования правил, которые позволят асинхронному актору выбирать наиболее производительный режим работы при текущей СВЗ.
Данная модель будет удобна для упрощения организации распределительных вычислений и оптимизации специальных приложений, путем распространения своего функционала через адаптеры.
Литература
[1] Lynch C. Big data: how do your data grow? // Nature. 2008. Vol. 455. No. 7209. P. 28-29.
[2] Han J. Kamber J. P. M. Data Mining. Concepts and techniques // In: Data management systems. — 3rd edn. — Burlington : Morgan Kaufmann, 2012.
[3] Lammel R. Google's Map Reduce Programming Model // Science of Computer Programming. 2008. Vol. 70. P. 1-30.
[4] Таненбаум Э., Остин Т. Архитектура компьютера. — 6-е изд.— СПб. : Питер, 2020.
[5] Ibrahim I., Bassiouni M. Improvement of job completion time in data-intensive cloud computing applications // Journal Cloud Comp. 2020. Vol. 9. Art. 8.
[6] Apache Hadoop [Электронный ресурс] URL: http://hadoop.apache.org.
[7] TenserFlow [электронный ресурс] URL: https://www.tensorflow.org/.
[8] Scikit-learn [электронный ресурс] URL: https://scikit-learn.org/.
[9] Маннинг Д. К., Рагхаван П., Шютце Ш. Введение в информационный поиск / пер. с англ. — М. : ООО И. Д. Вильямс, 2011.
[10] Wilkinson B. Allen M. Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers — 2nd edition. — New Jersey : Pearson, 2005.
[11] Agha G. ACTORS: A Model of Concurrent Computation in Distributed Systems. — Cambridge : MIT Press., 1986.
[12] Сачков В. Е., Гильмутдинова Е. Ф., Матяш Е. Д., Акимов Д. А. Обработка и компьютерный анализ текста на естественных языках // Современная наука: актуальные проблемы теории и практики. Серия: Естественные и технические науки. 2016. № 12. С. 57-64.
[13] Ингерсолл Г. С., Мортон Т. С., Фэррис Э. Л. Обработка неструктурированных текстов. Поиск, организация и манипулирование / пер. с анг. Сликин А. А. — М. : ДМК Пресс, 2015.
[14] Amdahl G. M. Validity of the single processor approach to achieving large scale computing capabilities // In: Proceedings of the April 18-20, 1967, spring joint computer conference (AFIPS '67 (Spring)) — NY : Association for Computing Machinery, 1967. P. 483-485.
Автор:
Валерий Евгеньевич Сачков — преподаватель кафедры «Интеллектуальные системы
информационной безопасности», МИРЭА — Российский технологический университет
Use of Asynchronous Actors in Special Computing Tasks
V. E. Sachkov
MIREA — Russian Technological University, 78 Vernadsky Avenue, Moscow 119454
e-mail: megawatto@mail.ru
Abstract. In the modern world of "big data", the urgent issue is the processing of large arrays
of unstructured digital information. The complexity of processing such data is determined by
the fact that it is necessary to develop separate solutions for each type of special tasks. Because of this, each special computing task (SCT) for data processing becomes unique. The standard practice today is the use of ready-made special solutions for processing SCT. This allows you to reduce the time to develop and find the necessary solution. But this practice gives rise to other problems associated with the fact that: the solutions used cannot be modified; closed source code; copyright or license protection. The most common problem with ready-made special solutions is poor support for parallelization on a multiprocessor computer complex and the inability to distribute tasks to a computing cluster. As a solution, this article discusses the possibility of using a model of asynchronous actors, whose properties include the ability to exchange messages between themselves and work in different modes of task paralleliza-tion.
Keywords: models of asynchronous actors, a special computational task, task parallelization.
References
[1] Lynch C. (2008) Nature, 455(7209):28-29.
[2] Han J. Kamber J. P. M. (2012) Data Mining. Concepts and techniques. In: Data management systems. (Burlington, Morgan Kaufmann).
[3] Lammel R. (2008) Science of Computer Programming, 70:1-30.
[4] Tanenbaum A., Austin T. (2020) Arkhitektura kompyutera (Peter). [Rus]
[5] Ibrahim I., BassiouniM. (2020) Journal Cloud Comp., 9:8.
[6] URL: http://hadoop.apache.org.
[7] URL: https://www.tensorflow.org/.
[8] https://scikit-learn.org/.
[9] ManningD.K., Raghavan P., Schütze S.(2011) Introduction to the Information Search.
[10] Wilkinson B. Allen M. (2005) Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers (2nd edition; New Jersey, Pearson).
[11] Agha G. (1986) ACTORS: A Model of Concurrent Computation in Distributed Systems (MIT Press).
[12] Sachkov V. E., Gilmutdinova E. F., Matyas C. D., Akimov D. A. (2016) Sovremennaya nauka: aktualny-yeproblemy teorii ipraktiki. Seriya: Yestestvennyye i Tekhnicheskiye Nauki, (12):57-64.
[13] Ingersoll G. S., Morton T. S., Farris A. L. (2015) Obrabotka nestrukturirovannykh tekstov. Poisk, or-ganizatsiya I manipulirovaniye (DMK Press). [Rus].
[14] Amdahl G. M. (1967) Validity of the single processor approach to achieving large scale computing capabilities. In: Proceedings of the April 18-20, 1967, spring joint computer conference (AFIPS '67 (Spring)) (NY, ACM), pp. 483-485.