Создание прототипа распределённой вычислительной среды на базе мобильных устройств

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

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

Список литературы:

1. Casella G., Fienberg S., Olkin I. The Bayesian Choice / G Casella, S. Fien-berg, I. Olkin. - Springer, 2007. - P. 285-310.

2. Russel S., Norvig P. Artificial Intelligence A Modern Approach / S. Russel, P. Norvig. - Prentice Hall. - 2009. - P. 566-599.

3. Zalewski M. The Tangled Web. A Guide to Securing Modern Web Applications / M. Zalewski. - No starch Press, 2012. - 477 p.

4. Тулупьев А. Байесовские сети, логико-вероятностный подход / А. Ту-лупьев, С. Николенко, А. Сироткин. - СПб.: Наука, 2006. - 728 с.

СОЗДАНИЕ ПРОТОТИПА РАСПРЕДЕЛЁННОЙ ВЫЧИСЛИТЕЛЬНОЙ СРЕДЫ НА БАЗЕ МОБИЛЬНЫХ УСТРОЙСТВ

© Фирун К.Б.*

Санкт-Петербургский государственный университет, г. Санкт-Петербург

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

* Аспирант кафедры Системного программирования.

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

Ключевые слова: распределённые вычисления, распознавание речи, распознавание голоса, графические процессоры.

Введение. Мобильные устройства в виде смартфонов и планшетов широко распространились среди пользователей за последнее время. Согласно новейшим отчётам аналитиков, проникновение мобильных устройств в мире превысило 6 млрд. и их последующее распространение будет превосходить аналогичные показатели персональных компьютеров в соотношении 2 к 1 [1]. Мобильное устройство превратилось в продукт первой необходимости, который вытесняет привычный персональный компьютер для решения задач по обработке информации. Таким образом, многие пользователи уже используют свои мобильные устройства для редактирования документов, участия в видео-конференциях и других ресурсоёмких приложений, хотя вычислительная мощность данных устройств по-прежнему уступает персональным компьютерам.

Один из путей решения проблемы недостатка вычислительной мощности мобильных устройств - использование облачных вычислительных платформ [2]. Таким образом, использование решений Amazon EC2, Microsoft Azure, Google AppEngine и др. позволяет избежать нехватки локальных мощностей для хранения и вычисления данных. К настоящему времени были проведены исследования, изучавшие возможность использования мобильных устройств в качестве клиентов [3-6], так и вычислительных узлов облачных платформ [7]. В данных работах рассматривается портирование на мобильные устройства традиционных подходов к построению облачных вычислительных платформ - управление мобильными клиентами и потоком задач производится централизованно в самой платформе. Но данный подход не позволяет пользователям мобильных устройств работать с облачной вычислительной платформой при отсутствии или сложности подключения к сети Интернет.

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

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

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

Обзор предыдущих разработок исследователей. Разработки распределённых вычислительных сред на базе мобильных устройств представлены в работах нескольких исследователей. В работе [3] представлены основные требования и ключевые технологии для создания такой распределённой вычислительной среды - авторы приводят анализ современных мобильных устройств, контекстно-осведомлённой сети для мобильных устройств, облачных и КБ8Т-сервисов. Также даётся объяснение как объединение данных компонентов позволяет создать распределённую вычислительную среду на базе мобильных устройств и решить задачи их пользователей. В работе [4] авторы озвучивают идею использования облачных вычислительных платформ для улучшения возможностей по работе пользователей с мобильными устройствами. В работе [5] авторы используют облачную вычислительную платформу в виде репозитория приложений для мобильных устройств - приложения предварительно запускаются на платформе в соответствии с текущими требованиями пользователя, таким образом оптимизированные приложения отправляются из облака на мобильное устройство. В ходе работы над публикацией [5] авторы подробно рассматривают права доступа к разделам ПЗУ на мобильном устройстве для возможности запуска на нём приложения из облачной платформы. В работе [6] авторы рассматривают преимущество запуска приложений для мобильных устройств в специально настроенных виртуальных машина на облачной вычислительной платформе - таким образом приложение исполняется в одинаковой среде, как в облаке, так и на мобильном устройстве, что положительно влияет решение проблемы несовместимости различных сред для исполнения приложений. В работе [7] авторы представляют для мобильных устройств клиент для подключения к облачным вычислительным платформам, который позволяет мобильным устройствам использовать мощности данных платформ.

Данный клиент основывается на проекте На^ор и главной задачей публикации [7] является его портирование на мобильное устройство для обеспечения последующей совместимости с существующими облачными вычислительными платформами, работающими на На^ор. В работе [7] авторы представляют концептуальную идею использования мобильных устройств в виде вычислительных узлов распределённой вычислительной среды. Схожая работа была проделана и исследователями в области сетевых вычислений. Авторы работы [8] доказывают возможность использования мобильных устройств в качестве элементов вычислительной сети - была создана Х86-совместимая виртуальная машина, запущенная на мобильном устройстве 1РИопе, предназначенная для запуска существующего клиентского программного обеспечения для сетевых вычислений. Таким образом, в предыдущих работах рассматривается возможность использования мобильных устройств в качестве клиентов, либо вычислительных узлов распределённых сред, но не даются экспериментальные заключения.

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

С технической точки зрения отправка и приём данных между различными устройствами позволяет ресурсоёмким приложениям работать на мобильном устройстве, так как отпадает проблема нехватки ресурсов - например, если приложению не хватает ОЗУ или ПЗУ, то возможно использование ресурсов другого вычислительного узла в распределённой вычислительной среде на базе мобильных устройств. К тому же возможно увеличение скорости работы приложения, при оптимизации последовательности исполнения для алгоритмов параллельной обработки данных. Данная оптимизация возможна при увеличении числа операций, которые могут быть исполнены во время ожидания результатов вычисления с другого вычислительного узла [9], безусловно, если задержки по отправке и получению данных между узлами не критичны. Описанные преимущества могут быть использованы для создания узкоспециализированных вычислительных сред, предназначенных например для решения задачи распознавания речи и биометрических признаков человека. Так как только часть вычислений проводится на одном вычислительном узле, использование распределённых вычислений позволяет оптимизировать использование вычислительных ресурсов и повышать энер-

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

Примером востребованности распределённой вычислительной среды на базе мобильных устройств может служить следующий сценарий использования: в движущемся автомобиле без постоянного доступа к сети Интернет находятся несколько пассажиров, которые управляют персональными мобильными устройствами и развлекательной автомобильной электроникой при помощи голосовых команд. В данном случае мобильные устройства и автомобильная электроника объединяются в распределённую вычислительную среду для увеличения скорости обработки и распознавания по голосу пассажиров отдающих голосовые команды. Таким образом создаётся беспроводная самоорганизующаяся сеть, в которой есть несколько вычислительных узлов, распределяющих между собой обработку речи пассажиров. Совместное расположение пользователей и их мобильных устройств в средах с малой гетерогенностью - например, не только в автомобиле, но и в самолёте, кафе или музее - повышает возможность совместного использования ресурсов мобильных устройств различных пользователей для решения ресурсоёмких задач. В работе [12] даётся оценка деятельности пользователей в зависимости от окружающей их среды, которая влияет на появление схожих задач у различных пользователей - например, распознавание речевых команд в автомобиле. Примеры использования распределённых вычислительных сред на базе мобильных устройств в ограниченных пространствах - в тех же автомобилях, самолётах или автобусах - позволяет говорить о большей надёжности таких сред, так как уменьшается перемещение вычислительных узлов, повышается связанность среды, что сказывается на уменьшении числа обрывов и исчезновения вычислительных узлов. Также следует отметить другой пример использования распределённой вычислительной среды, в котором мобильное устройство переназначает свою задачу на вычислительные узлы, которые уже занимаются решением данной задачи - таким примером может служить децентрализованная (пиринговая) сеть, узлы которой заняты поиском и получением данных [11]. То есть, мобильное устройство пользователя желающего получить данные, может подключиться к вычислительным узлам, которые уже получают требуемые данные, тем самым они обладают информацией о ещё большем количестве вычислительных узлов у которых можно получить запрашиваемые данные. Данный подход увеличивает скорость получения данных и уменьшает энергопотребление мобильного устройства, так как задача распределяется по нескольким вычислительным узлам.

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

Для построения распределённой вычислительной среды необходимы и достаточны следующие требования:

- Мониторинг и управление ресурсами для определения невозможности исполнения вычислений на мобильном устройстве;

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

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

- Определение вычислительных узлов со схожими задачами. Т.е. находится вычислительный узел, занимающийся решением схожей задачи с гарантированная доступностью ресурсов в течение определённого времени;

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

- Кеш-память для сохранения промежуточных результатов вычислений;

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

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

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

Рис. 1. Принцип работы распределённой вычислительной среды на базе мобильных устройств

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

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

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

Текущая реализация прототипа. Для создания прототипа авторами статьи был выбран язык программирования Java, на котором была создана

модель программной системы (фреймворк). Данный выбор основывается на широких возможностях языка Java по созданию работе с распределёнными вычислениями, а также благодаря большому количеству реализованного программного обеспечения по работе с облачными вычислительными платформами.

Прототип состоит из двух составляющих:

- Клиент для подключения к облачным вычислительным платформам;

- Фреймворк распределённой вычислительной среды на базе мобильных устройств.

Обе составляющие разработаны на базе облачной вычислительной платформы Hadoop. Большинство классов и интерфейсов касающихся файловой системы были заменены файловой синхронизацией с мобильным устройством. Модель распределённых вычислений MapReduce была заменена на вызов удалённых процедур (RPC), реализованной в протоколе Jabber.

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

Связь между мобильными устройствам происходит при помощи протокола Extensible Messaging and Presence Protocol (XMPP). Для этого был модифицирован XMPP-клиент Yaja!, написанный на Java. С его помощью авторам статьи удалось получить на мобильных устройства доступ к следующим возможностям протокола XMPP - Serverless Messaging и Jabber RPC. Первая из упомянутых возможностей протокола XMPP основана на стандартах mDNS и ZeroConf, которые позволяют организовывать взаимодействие между устройствами без необходимости развёртывания централизованной инфраструктуры. Jabber RPC основывается на стандарте XML-RPC и использует протокол XMPP для передачи команд на запуск приложений на вычислительных узлах распределённой вычислительной среды на базе мобильных устройств.

Выводы по работе прототипа. Авторы статьи провели предварительную оценку осуществимости предложенного ими подхода к построению распределённой вычислительной среда на базе мобильных устройств. В ходе предварительной оценки прототип тестировался на данных малого размера -менее 100 Кб.

Запуск прототипа распределённой вычислительной среды на мобильных устройства проводился на смартфонах и планшетных компьютерах под управлением ОС Android версии 4.0.4 и выше. В ходе запуска прототипа авторы статьи столкнулись с различными трудностями, связанными с несо-

вместимостью версий Java VM и Hadoop (версии 1.1.2). Связь между вычислительными узлами производилась по средствам беспроводной самоорганизующейся сети (Ad Hoc Wi-Fi).

В качестве приложения для запуска на распределённой вычислительной среде использовалось решение по распознаванию биометрических признаков человека, разработанное авторами статьи [13].

1,2

0,8

0,6

0,4

0,2

ш

Отправка данных Вычисления

Рис. 2. Сравнение времени исполнения локального вычисления и распределённого

Предварительные результаты оценки прототипа представлены на рис. 2. На данный момент результат работы распределённой вычислительной среды состоящей из трёх мобильных устройств незначительно уступает таковому при локальном вычислении на мобильном устройстве (в среднем менее 2 %). Из рис. 2 видно, что 44 % времени отнимает подготовка и отправка данных на соседний вычислительный узел, при этом само вычисление занимает 56 %. Таким образом можно сделать вывод, что практически производительность не упала не смотря на обработку большого количества файлов малого размера. Исходя из вывода работ [13, 14], авторы данной статьи могут сделать вывод, что у мобильного устройства повышается энергоэффективность благодаря уменьшению времени вычисления при использовании распределённой вычислительной среды по сравнению с локальным вычислением на мобильном устройстве. При использовании графического процессора для вычислений энергоэффективность мобильного устройства стала ещё ощутимее [13].

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

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

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

Список литературы:

1. Gartner Says Worldwide PC, Tablet and Mobile Phone Combined Shipments to Reach 2.4 Billion Units in 2013 [Электронный ресурс]. - Режим доступа: http://www.gartner.com/newsroom/id/2408515.

2. Kumar K., Yung-Hsiang L. Cloud Computing for Mobile Users: Can Offloading Computation Save Energy? // IEEE Computer. - 2010. - April. - P. 51-56.

3. Christensen J.H. Using RESTful web-services and cloud computing to create next generation mobile applications // Proceeding of the 24th conference on Object oriented programming systems languages and applications - OOPSLA '09. -New York, USA: ACM Press, 2009. - P. 627.

4. Luo X. From Augmented Reality to Augmented Computing: A Look at Cloud-Mobile Convergence // International Symposium on Ubiquitous Virtual Reality. - 2009. - P. 29-32.

5. Giurgiu I., Riva O., Juric D., Krivulev I., Alonso G Calling the cloud: enabling mobile phones as interfaces to cloud applications // Middleware '09: Proceedings of the 10th ACM/IFIP/USENIX International Conference on Middleware. - New York, USA, 2009. - P. 1-20.

6. Chun B., Maniatis P. Augmented Smartphone Applications Through Clone Cloud Execution. - HOTOS, USENIX, 2009.

7. Marinelli E. Hyrax: Cloud Computing on Mobile Devices using MapRe-duce. - CMU, 2009.

8. Black M., Edgar W. Exploring mobile devices as Grid resources: Using an x86 virtual machine to run BOINC on an iPhone //10th IEEE/ACM International Conference on Grid Computing. - IEEE, 2009. - P. 9-16.

9. Durkee D. Why cloud computing will never be free // Communications of the ACM. - 2010. - P. 62-69.

10. Kangashaiju J., Ott J., Karkulahti O. Floating Content: Information Availability in Urban Environments // Proceedings of the 8th Annual IEEE International Conference on Pervasive Computing and Communications. - Mannheim, Germany, 2010.

11. Berl A., Meer H., Hlavacs H., Treutner T. Virtualization in energy-efficient future home environments // IEEE Communications Magazine. - 2009. -P. 62-67.

12. Chiba S., Nishizawa M. An easy-to-use toolkit for efficient Java bytecode translators // Generative Programming And Component Engineering. - 2003.

13. Королёв А.И., Фирун К.Б., Вильчик А.И. Использование графических процессоров мобильных устройств для решения задачи распознавания речи и биометрических признаков человека. - 2013.

14. Kristensen M.D., Bouvin N.O. Using Wi-Fi to Save Energy via P2P Remote Execution // Mobile Peer-to-Peer workshop in conjunction with Eighth Annual IEEE International Conference on Pervasive Computing and Communications. - 2010.