Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовик.docx
Скачиваний:
13
Добавлен:
29.08.2019
Размер:
321.33 Кб
Скачать

2.Cистема boinc

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

BOINC (англ. Berkeley Open Infrastructure for Network Computing) – открытая программная платформа (университета) Беркли для GRID вычислений) — некоммерческое межплатформенное ПО для организации распределённых вычислений. Используется для организации добровольных вычислений. Состоит из серверной и клиентской частей. Первоначально разрабатывался для крупнейшего проекта добровольных вычислений — SETI@home, но впоследствии разработчики из Калифорнийского университета в Беркли сделали платформу доступной для сторонних проектов. На сегодняшний день BOINC является универсальной платформой для проектов в области математики, молекулярной биологии, медицины, астрофизики и климатологии. BOINC даёт исследователям возможность задействовать огромные вычислительные мощности персональных компьютеров со всего мира. BOINC разработан командой во главе с Дэвидом Андерсоном (David Pope Anderson), возглавляющим также SETI@home, из Space Sciences Laboratory Калифорнийского университета в Беркли. На 2 февраля 2011 BOINC являет собой распределённую сеть из более чем 490’000 активных компьютеров (хостов) со средней производительностью, равной 5’000 TeraFLOPS. Платформа работает на различных операционных системах, включая Microsoft Windows и варианты юниксоподобных GNU/Linux, FreeBSD, NetBSD, OpenBSD, Solaris и Mac OS X. BOINC распространяется под лицензией GNU Lesser General Public License, как свободное программное обеспечение с открытым исходным кодом.[википедия ололо]

Архитектура системы BOINC

Особенность «volunteer computing» заключается в том, что для успешного решения отдельные небольшие подзадачи должны быть очень слабо связаны между собой и практически не зависеть от результатов параллельно выполняемых заданий. В противном случае очень большие издержки производительности будут приходиться на ожидание других результатов и на их синхронизацию. Идеальной задачей является, например, подбор пароля методом «грубой силы» – для каждого варианта (десятка, сотни – в зависимости от сложности вычисления) пароля отдельный компьютер вычисляет хэш и сравнивает его с заданным. Первое совпадение – задача решена, но никакой другой результат не может приблизить к правильному ответу, а подзадачи абсолютно независимы (в силу свойств парольных хэш-функций). Под такие задачи, состоящие из независимых подзадач, и разработана архитектура системы BOINC(рис.4).

  Рис.4 Архитектура системы BOINC

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

Конечный автомат (в теории алгоритмов) – это математическая абстракция, позволяющая описывать пути изменения состояния объекта в зависимости от его текущего состояния и входных данных при условии, что общее возможное число состояний конечно. Конечный автомат является частным случаем абстрактного автомата. Конечный автомат может быть детерминированным или недетерминированным в зависимости от того, имеется ли один или несколько вариантов его поведения на каком-то шаге.

Формально конечный автомат определяется следующей пятеркой объектов:

M=(Σ,Q,F,s,π), где

Σ – допустимый входной алфавит (конечное множество допустимых входных символов);

Q – конечное множество состояний автомата;

F – множество заключительных состояний автомата, являющееся подмножеством множества Q;

s – начальное состояние автомата;

π – отображение множества Σ на множество Q (функция перехода).

Автомат начинает работу в состоянии s, считывая по одному символы входной строки. Считанный символ переводит автомат в новое состояние из F, в соответствии с функцией переходов π. Процесс продолжается до тех пор, пока не будет достигнуто одно из состояний F. Если по завершении считывания входного слова (цепочки символов) автомат оказывается в одном из допускающих состояний, то слово "принимается" автоматом. В этом случае говорят, что оно принадлежит языку данного автомата. В противном случае слово "отвергается".

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

В целом, система состоит из сервера BOINC (при необходимости, распределенного на несколько физических серверов в целях повышения производительности, отказоустойчивости и безопасности), множества клиентов, выполняющих задания сервера и, возможно, дополнительных компонент в виде присоединенных GRID-сетей (например, на основе широко распространенного инструментария Globus Toolkit )

Globus Toolkit – это открытый (Open Source) инструментарий для создания вычислительных Grid. Включает в себя набор программных сервисов и библиотек для проведения мониторинга ресурсов, обнаружения и управления вычислительными узлами, обеспечения безопасности и управления файлами. Разрабатывается и поддерживается организацией Globus Alliance.

Сервер BOINC состоит из:

  • как минимум одного Web-сервера, который обрабатывает входящие и исходящие сообщения;

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

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

Как уже говорилось, все эти программы могут быть запущены как на одном физическом сервере, так и на нескольких. Решение, создавать ли распределенный сервер BOINC, безусловно, зависит от нагрузки и требований по отказоустойчивости.

Далее подробно о компонентах, составляющих сервер BOINC.

2.1. Web-сервер

Строго говоря, Web-сервер не является необходимой частью инфраструктуры сервера BOINC. Однако его наличие обусловлено самой сущностью «volunteer computing» – для того, чтобы привлечь участников к своему проекту, вы должны хоть чем-то заинтересовать их. Именно для этого нужен сайт, рассказывающий о том, насколько важное дело для всего человечества вы – а, значит, и присоединившиеся к вам добровольцы – выполняете: ищете внеземные цивилизации (как давно люди мечтают увидеть пришельцев! – SETI@HOME), разрабатываете новые лекарственные препараты (на благое дело не жалко отдать простаивающий процессор – Docking@Home) или предсказываете погоду (ну когда же прогнозы, наконец, будут совпадать с реальностью? – ClimatePrediction.net)... Расскажите о своем проекте – этим вы сможете привлечь единомышленников! Каждый проект распределенных вычислений на базе BOINC предоставляет своим участникам возможность объединиться в команды (например, в команду Linux-пользователей, чтобы насладиться более высокой строчкой рейтинга, чем у команды Windows-пользователей) и следить за увеличением числа набранных баллов... Учитывая, что роль сайта в работе BOINC-проекта все-таки является второстепенной, Web-сервер является первым кандидатом на «отселение» на соседний физический сервер. Однако необходимо помнить, что для демонстрации актуальных цифр статистики Web-сервер должен иметь связь с базой данных сервера BOINC.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]