УДК 519.2:004.421.5:004 7(075)
П,Е. Бурамеиский, Р.Е. Buramensky, btipaev@gmai!.com
Омский государственный технический университет, г. Омск. Россия
Omsk State Technical University, Omsk, Russia
РАСПРЕДЕЛЕННАЯ ВЫЧИСЛИТЕЛЬНАЯ СЕТЬ НА ОСНОВЕ ВЕБ-БРАУ ЗЕРОВ: НОВЫЕ ТЕХНОЛОГИЧЕСКИЕ ВОЗМОЖНОСТИ
BROW SER-BASED DISTRIBU TED COMPUTING: NEW TECHNOLOGICAL CAPABILITIES
В статье рассматривается возмоасность создания распределенных вычислительных сетей на основе веб-браузеров исходя из анализа современного состояния йраузерных технологий н производительности интерпретаторов JavaScript.
The article considers possibility of creating a distributed computing through web-browsers from the analysis of the current stale of browser technology and performance of JavaScript engines.
Ключевые слова: распределенные вычисления, веб-браузерJavaScript
Keywords: distributed computing, web-browsers, JavaScript
Введение
По предварительным оценкам к концу 2014-го года число пользователей интернета достигнет почти 3 миллиардов., что делает интернет мощнейшей распределенной вычислительной сетью, обладающей колоссальными вычислительными ресурсами. Встает вопрос: как использовать эти ресурсы с минимальными усилиями со стороны пользователя? Один из очевидных ответов: использовать веб-браузер в качестве промежуточного ПО для организации распределенных вычислений. Долгое время организация распределенных вычислений на базе веб-браузера была затруднена в силу отсутствия средств для запуска отдельных потоков вычислений, сохранения промежуточных данных и низкой скоростью JavaSciipt-инхерпретагорпмн но развитие HTML5 и совершенствование интерпретаторов открыто новые возможности для развития этой идеи.
140
Ограничения hsï классы решаемых задач
Кластер, состоящий из веб-браузеров, по природе своей динамичен. Размер кластера может резко изменяться, связи между браузерами и серверами также не стабильны. Так как между браузерами нет связей типа точка-точка, любой обмен информацией между ними проходит через выделенные серверы. Эти черты определяют класс задач, которые можно решать с использованием такой структуры - это так называемые «пластичные алгоритмы» (оригинальный английский термин - «malleable applications») [2] К ним относится метод Монте-Карло, параметрические исследования, алгоритмы поиска направленных ациклических графов, алгоритмы параллельного анализа данных и др.
Пластичные алгоритмы могут адаптироваться к изменению вычислительной среды и, в частности, к изменению размера кластера. Таким образом, пластичный алгоритм позволяет не зависимо обрабатывать любое подмножество входного набор данных, допуская неравномерное распределение задач между множеством узлов. Соответственно, каждый браузер обрабатывает лишь небольшую часть данных, в то время как вычисления в целом легко масштабируются в силу большого числа браузеров в кластере.
Веб-Зраузер как в ыч нет и тельный узел: возможности и ограничения
Вычислительным ядром веб-браузера является JavaScript-интерпретатор исполняющий код на клиентской стороне. Их производительность значительно выросла с приходом Wet 2.0 и широким внедрением AJAX. В соответствии с W3C стандартами JavaScript код в высокой степени переносим между различными реализациями браузеров и программных платформ. Такие технологии как Web workers, Web sockets, HTML5, WebGL (www Jihronos. org/webgl) и WebCL ( w w w Jdmmus oiç/ w e b cl) значительно расширяют возможности JavaSciipt-HHiepnpeTaTopa. Возможности, которые дают некоторые из этих технологий радикально повышают производительность и возможность веб-браузеров:
- Web worker обеспечивает исполнение задач JavaScript параллельно, не блокируя при этом другие процессы. Тем самым задачи обрабатываются в параллельных потоках;
- Web Socket является протоколом полно дуплекс ной связи поверх ТСР-соединения. предназначенным для обмена сообщенишш между браузером и веб-сервером в режиме реального времени;
- WebCL (Web Computing Language) предоставляет доступ из JavaScript к OpenGL, что позволяет браузеру использовать GPU для параллельных вычислений в браузере, а также позволяет более эффективно использовать многоядерные CPU и GPU.
Использование браузера в качестве вычислительного узла имеет свои ограничения. Например, в отличии от натнвного клиента, браузер не может определить текущую загрузку процессора и использовать его ресурс в заданных рамках Однако пользователь может ограничивать используемый интерпретатором ресурс посредством таймеров.
Возможности по передаче данных также ограничены. Соединение типа точка-точка (peer-to-peer или р2р) пока что доступны только для медкапотоков в рамках технологии WebRTC, так как в целях безопасности браузер не может прослушивать порты. Другое ограничение также связано с безопасностью: браузер блокирует кросс-доменные запросы, го есть браузер может делать запрос только в рамках текущего домена. Это ограничение можно обойти с помощью CORS: специального параметра Access Control Allow Origin добавляемого в заголовок запроса. CORS важен, поскольку он обеспечивает веб-браузеру доступ к удаленным данным напрямую из различных доменов, что обеспечивает передачу больших объемов данных на большое количество узлов.
Также осложняет использование браузера отсутствие высокопроизводительных JavaScnpt-библиотек, таких как GMP (предназначена для вычислений с произвольной точностью) для C/C++. Тем не менее, все эти ограничения меркнут на фоне перспективы использования: миллионов браузеров, каждый из которых может выполнять свой небольшой объем вычислений и тем самым вносить вклад в решение гораздо более значимых проблем.
Производительность JavaScript
Одной из слабых сторон JavaScript традиционно считается нижи производительность в сравнении с другими традиционными языками и компиляторами. Чтобы понять насколько данная позиция верна в случае использования JavaScript для распределенных вычислений, был проведен некоторый анализ производительности в сравнении с GNU С. На рис. 1 показано соотношение производительности для нескольких типичных, хорошо распараллеливаемых алгоритмов, запушенных под движком V8 и скомпилированных с помощью GNU GCC версии 4 5.2.
15
■V8-3.9 1YB-3.1 1V8-2.2 1VB-L3
Рнс. 1. Соотношение времени выполнения алгоритмов, реализованных на JavaScript (среда выполнения - различные версии JavaScript-ДБНжка VS) н на С. скомпилированных с помощью GNU GCC 4.5.2
Исходный код алгоритмов на С позаимствованы со специализированного сайта Computer Language Benchmarks (http://shootout, alioth. debian.org' u32/benchmark.php). Эксперимент проводился под управлением 32-битной операционной системы на процессоре Intel Е5500.
- Regex-DNA алгоритм сводится к оперированию со строками в частности, выполняется несколько регулярных выражений для поиска определенного шаблона и замены последовательности ДНК;
- SpectralNonii вычисляет спектральную норму матрицы; алгоритм на JavaScript использует тип данны Float64Arrays.
- K-Nucleotide это алгоритм сортировки, поиска и подсчета ДНК-нуклеотидов.
- N-Body моделирует орбитальное движение газовых гигантов:
- В-Tree является бэнчмарком, строящемся вокруг различных манипуляциях с бинарным деревом, включая аллокацию, деаллокашпо и обход дерева в глубину.
В целом, интерпретатор JavaScript от Google, конечно^ уступает в скорости GNU С. Но для некоторых алгоритмов можно видеть даже противоположенную картину: так алгоритм Regex-DNA на JS работает немного быстрее чем на С, благодаря оптимизации регулярных выражений в Chrome (Irregexp). Все другие алгоритмы выполняются медленней, чем на GNU С, но при этом заметен рост производительности в последних версиях V8; в сравнении с ранней версией 1.3.
Так значительный рост производительности для алгоритма SpectralNonii можно связать с добавлением в V8 новых структур данных - АггауВиНег и Float64Array и глобальной оптимизацией Crankshaft. Эти результаты показывают явную тенденцию к приросту производительности JavaScript-интерпретатора.
В дополнение к результатам, показанным на рис. 1. были проведены гесты с использованием технологий OpenGL и WebCL. Последняя позволяет ускорить вьпшсление за
счёт использования процессора графической карты. Полученные результаты для алгоритма сложения векторов показывают, что обе технологии работают с одинаковой производительностью. Чего, впрочем, и следовало ожидать, учитывая, что JavaScript реализует лишь API к коду WebCL, который выполняется непосредственно на «железе».
Заключение
Исходя из проведенного обзора актуальных браузерных технологий и оценки скорости выполнения JavaScript в современных средах, можно сделать уверенный вывод о том, в условиях надвигающегося информационного взрыва браузеры являются перспективной вычислительной платформой, способной превратить интернет в огромную вычислительную сеть за счет бесплатных и в данный момент неиспользуемых ресурсов веб-браузеров.
Библиографический список
1. Sansom, С. Hie DNA Deluge [Электронный ресурс] ! С. Sansom // Scientific Computing World. - Режим доступа : www.scientific-сomputing.coni/features/ feature.php? feature_id=168 (Дата обращения: 10.05.2014)
2. TDesell, Т. Malleable applications for scalable high performance computing - In / K. Maghraoui, C. Varela H Cluster Computing - 2013. - Vol. 10, Issue 3. - P. 323-337.
3. Tilkov. S. Nodejs: Using JavaScript to Build High Performance Network Programs I S. Tilkov, S. Vmoski 11 IEEE Internet Computing. - 2012.. - Vol. 14, no. 6. - P. S(bS3.
143