- •Метакомпьютинг и его задачи
- •2. Концепция Грид
- •Архитектура Грид
- •Фабрикаты: Интерфейсы локального управления.
- •Связь: Лёгкое и безопасное общение
- •Ресурс: Разделение отдельных ресурсов
- •3.4. Кооперация: Согласование множества ресурсов
- •Прикладной уровень
- •Понятие о виртуальной организации
- •Распределение ресурсов в Грид
- •2.Cистема boinc
- •2.2. База данных
- •2.3. Служба обработки состояния подзадач (Transitioner)
- •2.4. Служба проверки результатов (Validator)
- •2.5. Служба освоения (Assimilator)
- •2.6. Служба удаления файлов (File deleter)
- •2.7. Служба подачи (Feeder)
- •2.8. Планировщик (Scheduler)
- •2.9. Мост (Bridge)
- •2.10. Приложения boinc
- •2.11. Жизненный цикл задания
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.