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

BC / NW 2012; №1 (20): 4.1

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

Б.В. Усков

1 Распределённая вычислительная система

1.1 Определение

В настоящее время распределённые вычислительные системы (РВС ) получили крайне широкое распространение. В данной статье предлагается использовать следующее определение РВС, основанное на определении, данном в источнике :

Распределённая вычислительная система (Distributed System, DS ) ‑‑ набор независимых компьютеров, представляющийся пользователям единой объединенной системой, и направленный на решение определённой общей задачи.

Предпосылками появления распределённых систем были:

· Появление микропроцессоров с последующим быстрым ростом их производительности;

· Внедрение и широкое распространение сетей передачи данных .

1.2 Преимущества РВС

Основными преимуществами РВС над централизованными являются:

· Возможность использования разнородных вычислительных ресурсов, для решения определённой общей задачи. Другими словами, распределённые системы позволяют направлять некоторый набор (pool) вычислительных ресурсов, объединенных средой передачи данных, для решения проблем, требующих вычислительных затрат, превосходящих имеющийся ресурс централизованной системы. При этом вычислительные ресурсы распределённой системы могут быть территориально удалены друг от друга и, в том числе, принадлежать различным организациям или владельцам;

· Масштабируемость. Это свойство является следствием аппаратной независимости узлов, входящих в систему;

· Высокая отказоустойчивость. Свойство является следствием присутствия определенного рода аппаратной избыточности. Под отказоустойчивостью понимается способность сохранять работоспособность общей системы при выходе из строя отдельных элементов структуры.

1.3 Области применения РВС с повышенными требования к точности временной синхронизации

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

Распределённая система управления (Distributed Control System, DCS ) – система управления технологическим процессом, характеризующаяся построением распределённой системы ввода вывода и децентрализацией обработки данных. В основном, для построения таких систем используются встраиваемые вычислительные системы (embedded system ), представляющие собой специализированные контроллеры, ориентированные на работу непосредственно с объектом, подлежащим управлению. К основным задачам встраиваемой системы относятся отслеживание состояния управляемого объекта, фиксирование и обработка входных сигналов и выработка управляющих воздействий для объекта управления. Архитектура встраиваемой системы, как правило, оптимизирована под решение определённых задач, а сами устройства являются мобильными, имеют небольшие габаритные размеры и низкое энергопотребление.

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

Область Motion Control является подобластью систем автоматизации, решающей задачу организации управления направлением, скоростью и ускорением движения различных механизмов. В настоящее время одним из приоритетных направлений области Motion Control является точное позиционирование различных рабочих элементов в технологических процессах. Под понятием позиционирования подразумевается соответствие пространственных координат определённого элемента временному значению. Современный уровень индустриального развития предъявляет крайне высокие требования к точности позиционирования агрегатов – она должна составлять нанометры. При этом позиционирование должно осуществляться в трёхмерном пространстве. Для реализации трёхмерного высокоточного позиционирования применяются распределённые системы управления. Каждый вычислитель (встраиваемый контроллер) отвечает за организацию позиционирования по каждой координате. Для того чтобы все три координаты в определённый момент времени соответствовали требуемым значениям, процесс выдачи управляющих воздействий должен быть строго синхронизирован по времени. Таким образом, в области автоматизации Motion Control точность временной синхронизации распределённых систем имеет решающее значение. Примером системы высокоточного позиционирования является разработка фирмы IMMS GmbH (www.imms.de ) – устройство нанопозиционирования SFB 622, изображённая на Рисунке 1. Данная система направлена на организацию трёхмерного широкомасштабного позиционирования объектов. Точность позиционирования составляет нанометры, при этом максимальные амплитуды движения по осям X и Y составляют 100 миллиметров, а по оси Z – 10 мм.

Рисунок 1 – Система нанопозиционирования SFB 622.

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

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

В настоящее время получили широкое распространение различные Дата Центры (Data Center ), представляющие собой центры хранения и обработки больших массивов данных (ЦХОД). Структура современного ЦХОД представляет собой совокупность трёх основных элементов: информационная инфраструктура, представленная серверным оборудованием, коммутационная инфраструктура, обеспечивающая связь оборудования хранения и обработки данных, и инженерная инфраструктура, обеспечивающая нормальные условия для стабильной работы всего центра. Области применения Дата Центров в настоящее время очень широки: использование подобных структур позволяет оптимально использовать вычислительные ресурсы, ресурсы хранения информации, а также, сократить совокупную стоимость владения IT-инфраструктурой за счёт возможности эффективного использования технических средств, например, перераспределения нагрузок, а также за счёт сокращения расходов на администрирование. Использование в современных ЦХОД высокопроизводительных вычислительных компонентов, а также коммутационного оборудования, обладающего высокой пропускной способностью позволяет сократить время обслуживания одной заявки, поступившей в систему, до нескольких десятков микросекунд. Для многих областей применения Дата Центров последовательность, с которой были обработаны заявки, имеет решающее значение. В особенности это относится к ЦХОД, обслуживающих различные финансовые системы. Кроме того, для осуществления контроля работы системы, выявления узких мест, а также для повышения оптимальности использования ресурсов и повышения общей производительности необходимо иметь возможность прослеживать процесс прохождения заявки по всем узлам. Должная быть обеспечена возможность определения временных пунктов вхождения заявки в систему, временных пунктов обработки заявки на ключевых узлах, а также, моментов выхода заявки из системы. Для решения поставленных задач необходима организация временной синхронизации узлов, входящих в систему, с точностью до нескольких микросекунд, а в отдельных случаях, в интервале субмикросекунд.

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

· Системы управления (в частности, область Motion Control );

· Системы автоматических наблюдений и измерений;

· Системы виртуальной реальности;

· Крупные системы хранения и обработки данных (Data Center ).

2 Постановка задачи обеспечения высокоточной временной синхронизации в распределённых вычислительных системах (РВС)

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

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

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

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

3Современные средства обеспечения временной синхронизации в РВС

3.1 NetworkTimeProtocol - NTP

Для решения проблемы временной синхронизации в глобальных сетях передачи данных наиболее широко в настоящее время используется протокол NTP , описанный в RFC 958. Протокол был разработан в 1985 году и совершенствовался со временем. На настоящий момент времени используется версия NTP 4. NTP использует иерархическую систему «часовых уровней» (stratum ). Причём, NTP -сервера являются активными, то есть не только раздают время другим серверам и клиентам, но и сами выполняют настройки своих часов на основании данных, полученных от других источников. Для усреднения времени между NTP-серверами используется алгоритм Марзулло, позволяющий сводить к минимуму влияние данных от заведомо некорректно настроенных NTP -серверов на общую систему. Достижимая путём применения NTP точность временной синхронизации составляет десятки миллисекунд для глобальных сетей и сотни микросекунд для локальных сетей. Однако такое значение точности не удовлетворяет требованиям, предъявляемым в описанных областях.

3.2 GlobalPositioningSystem - GPS

Система глобального позиционирования GPS способна обеспечивать точность временной синхронизации порядка сотен наносекунд . Однако применение GPS требует, чтобы каждое синхронизируемое устройство было оборудовано GPS-трансивером/ресивером. Это значительно повышает стоимость системы, и практически нереализуемо для систем, содержащих достаточно большое количество узлов (например, Дата Центры).

3.3 PrecisionTimeProtocol - PTP

Для решения задачи обеспечения высокоточной временной синхронизации был разработан протокол PTP, описанный в стандарте IEEE1588. Данный протокол отвечает следующим требованиям:

· Точность временной синхронизации в диапазоне микросекунд и субмикросекунд;

· Технология синхронизации времени применима для широкого спектра сетевых технологий, используемых в индустриях автоматизации, управления и измерения - Ethernet (IEEE802.3), FireWire (IEEE1394), различные беспроводные стандарты передачи данных (WiFi (IEEE 802.11), ZigBee (IEEE 802.15.4) и т. д.;

· Технология предъявляет минимальные требования администрирования работы;

· Технология реализуема на технических устройствах низкого уровня производительности и программно-аппаратного обеспечения;

· Требуемые сетевые и вычислительные ресурсы минимальны.

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

4Краткое описание PTP

Протокол описывает процесс синхронизации системных часов устройств, объединённых в локальную сеть с помощью технологий передачи данных, поддерживающих технологию Multicast-Messagin g .К важнейшим свойствам протокола относятся:

использование без требования постоянного администрирования;

точность временной синхронизации в пределах микросекунд.

4.1 Типы устройств с точки зрения протокола

В стандарте предусмотрены 4 типа устройств:

· O rdinary clock – конечные устройства, объединённые сетью передачи данных. Между этими устройствами организуется временная синхронизация. Устройство может находиться в режиме Slave или Master . Все Slave -устройства синхронизируют свои системные часы с часами устройства Master в синхронизационном домене;

· Boundaryclock – представляет собой коммутационное устройство, разделяющее синхронизационные домены. Имеет несколько портов. При этом, с каждым портом ассоциируется виртуальные часы. Один порт – Slave , синхронизируемый с вышестоящим Master , другие порты – Master для подключенных синхронизационных доменов;

· End-to-End Transparent Clock – коммутационное устройство, не участвующее в процессе синхронизации, однако, способное пропускать PTP -сообщения, замеряя при этом резидентное время;

· Peer - to - Peer Transparent Clock – коммутационное устройство, не участвующее в процессе синхронизации, однако, способное пропускать PTP -сообщения, замеряя при этом резидентное время, а также, задержки каналов, непосредственно подключённых к устройству.

4.2 Best Master Clock Algorithm - BMC

Процесс синхронизации основан на обмене PTP-сообщениями. Устройства, входящие в систему, синхронизируют системные часы с системными часами Grandmaster Clock . Перед началом процесса синхронизации происходит выбор Grandmaster Clock посредством алгоритма BMC (Best Master Clock ). Выбор происходит на основании следующих критериев:

1. Приоритет 1

2. Класс

3. Точность

4. Дисперсия

5. Приоритет 2

6. Уникальный идентификатор (tie breaker)

Класс, точность и дисперсия определяют качество системных часов. Класс определяет стабильность работы таймера Grandmaster Clock . Значение и допустимые величины показателя класс определяются в соответствии с таблицей, приведённой в стандарте. Source of Time (источник времени) имеет важное значение для определения значения Класс. Это может быть GPS или NTP. Показатель Точность определяет точность часов Grandmaster Clock. Значение определяется в соответствие стаблицей, приведенной в стандарте. Дисперсия является достаточно сложным параметром и основывается на теории Дисперсия Аллана (измерение стабильности показаний различных устройств, в особенностичасовигенераторов).

Приоритет 1 и Приоритет 2 используются для принудительной установки Grandmaster Clock . Уникальный идентификатор подсчитывается на основании MAC-Adresse и используется, когда предыдущие значения одинаковы для устройств системы. Announce- сообщения содержат все эти значения. Grandmaster Clock периодически рассылает Announce- сообщения. Новое устройство, добавляемое в синхронизационный домен, находится первоначально в слушающем режиме (Listening Mode ). Новое устройство ожидает поступления Announce -сообщения от GrandmasterClock . После появления Announce -сообщения новое устройство выполняет алгоритм BMC и определяет, свою роль (Master или Slave ) в синхронизационном домене.

4.3 Алгоритм Request - response

После выбора Grandmaster Clock начинается непосредственно процесс синхронизации. Обмен Synch -сообщениями определяет разницу во времени между Grandmaster Clock Slave Clock. Разница во времени должна быть откорректирована на величину задержки прохождения сигнала в канале передачи данных. Полученная величина разницы во времени в дальнейшем используется для формирования корректирующего значения, ускоряющего или замедляющего частоту таймера. Процесс обмена сообщениями между Grandmaster Clock и Slave Clock в рамках алгоритма Request - response изображён на Рисунке 2.

Сообщения Follow_Up используются в том случае, если получение точного временного пункта возможно только после отправки сообщения. В результате обмена указанными сообщениями устройство Slave имеет четыре временных точки: t1 – t4. По данным значениям определяется временное отклонение от устройства Master по формуле (1).

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

4.4 Алгоритм Peer - delay

Второй механизм, описанный в стандарте, и использующийся для определения временного отклонения между Master и Slave , называется Peer - delay . Процесс обмена сообщениями в рамках данного механизма изображён на Рисунке 3. Используется Peer-to-Peer Transparent Clock.

Данный механизм используется при условии наличия в синхронизационном домене устройств Peer-to-Peer TransparentClock .

5 Исследования точности временной синхронизации, достижимой посредством применения PTP

5.1 Постановка задачи исследований

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

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

Основной задачей экспериментов, описанных в этих статьях было установление максимально возможного значения достижимой точности временной синхронизации. Эксперименты проводились с использованием специализированного оборудования, в идеальных условиях (с минимальной загрузкой CPU устройств и каналов передачи данных).

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

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

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

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

Однако стандарт IEEE 1588 не привязан к конкретной технологии передачи данных, а в областях применения РВС, требующих высокого уровня временной синхронизации всё чаще применяются такие коммутационные стандарты как IEEE1394 FireWire, а также, различные беспроводные технологии передачи данных.

Поэтому, третьим направлением исследовательской деятельности стало проведение замеров с применением различных технологий передачи данных. На данный момент, получен результаты измерения для среды FireWire .

Цели проводимых в рамках научной работы исследований :

· Определение значения достижимой посредством применения PTP точности временной синхронизации на системах с максимально ограниченными вычислительными ресурсами с применением технологии Ethernet для передачи данных;

· Определение зависимости достижимой точности синхронизации от периода синхронизации;

· Определение зависимости точности синхронизации от уровня загрузки каналов передачи данных;

· Определение зависимости точности синхронизации от уровня загрузки CPU устройств;

· Определение значения достижимой точности временной синхронизации на высокопроизводительных системах;

· Определение значения достижимой точности временной синхронизации при использовании технологии передачи данных FireWire .

5.2 Методология проводимых экспериментов

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

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

5.3 Описание используемого оборудования

Для исследований были использованы платформы BeagleBoard. Эти платформы в полной мере отвечают требованию ограниченности вычислительных ресурсов. Основные параметры платформы:

· OMAP Процессор 720MHz;

· RAM 256MB;

· Возможность вставки SD/MMC Карты памяти для увеличения ёмкости памяти устройства;

· Технология Ethernet-over-USB для организации Ethernet соединений;

· Интерфейс RS232;

· 2 сигнальных индикатора.

BeagleBoard является одноплатным компьютером (single - boardcomputer ) . Компьютер основан на процессореOMAP3530 (OMAP - Open Multimedia Application Platform), который относится к типу процессоров System-on-chip (Система на кристалле - электронная схема, выполняющая функции целого устройства (например, компьютера) и размещенная на одной интегральной схеме ). Процессор производится фирмой Texas Instruments. CPU платформы базируется на ядре ARM Cortex-A8. В состав процессора OMAP3530 входит также DSP (Digital Signal Processor ) и графический процессорPowerVR Technologies, поэтому платформа часто используется для решения различных мультимедийных задач. В платформе встроены 256 MB NAND-Flash-Speicher (NAND – Not AND) и 256 MBОЗУ.

В качестве устройств с большей вычислительной мощностью были использованы высокопроизводительные устройства на основе процессора Power PC, разработанные фирмой IMMS GmbH (www . imms . de ). Основные параметры:

· Процессор PowerPC 750FX 1GHz;

· RAM 1GB;

· Ethernet интерфейс;

· FireWire интерфейс;

· RS232 интерфейс.

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

5.4 Результаты проведённых исследований

5.4.1 Результаты измерений для платформ BeagleBoard

Посредством выходных сигналов была определена достижимая точность временной синхронизации. Полученное значение лежит в пределах 20 микросекунд . Была установлена зависимость достижимой точности временной синхронизации от периода синхронизации. Зависимость изображена на Рисунке 5.


Рисунок 5 – Зависимость достижимой точности временной синхронизации от периода синхронизации

Приемлемая точность временной синхронизации достижима при синхронизационном периоде, расположенном в отрезке от 0.007812 до 2 секунд ;

Применение периода синхронизации менее 0,007812 секунд приводит к ухудшению значения достижимой временной синхронизации;

Применение периода синхронизации более 2-х секундтакже приводит к ухудшению значения достижимой временной синхронизации;

Крайняя точка составляет 8 секунд. Для данного периода измереннаяточность синхронизации составляет 51,79 микросекунд;

Дальнейшее увеличение периода синхронизации приводитк ухудшению точности временной синхронизации.

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

По полученным данным были сделаны следующие выводы:

Организация временной синхронизации фактически невозможна при загрузке сети свыше 80% ;

Наилучшее значение точности временной синхронизации для сети, загруженной на 50% находится в районе 150 мкс ;

Загрузка сети передачи данных менее 20% оказывает незначительное влияние на точность временной синхронизации.

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

5 .4.2 Результаты измерений для высокопроизводительных устройств

Достижимая точность временной синхронизации для устройств на базе процессора PowerPC , разработанных фирмой IMMSGmbH (www . imms . de ), с применением технологии Ethernet в качестве среды передачи данных, составила 0,995 микросекунд. Таким образом, применение устройств с высокой вычислительной мощностью в синхронизационном домене позволяет достичь высокого уровня синхронизации.

Для проведения дальнейших исследований было разработано программное обеспечение, реализующее протокол PTP и использующее технологию FireWire (IEEE 1394) в качестве среды передачи данных. Были проведены измерения достижимого значения точности временной синхронизации.

Зависимость достижимой точности временной синхронизации от синхронизационного периода изображена на Рисунке 7.


Рисунок 7 – FireWire в качестве среды передачи данных.

Кроме того, была получена зависимость достижимой точности временной синхронизации от синхронизационного периода при применении технологии FireWire в качестве среды передачи данных при уровне загрузки канала передачи данных в 20%. Последняя зависимость изображена на Рисунке 8.


Рисунок 8 – Зависимость достижимой точности временной синхронизации от синхронизационного периода при применении технологии FireWire в качестве среды передачи данных при загрузке канала передачи данных в 20%.

По полученным данным были сделаны следующие выводы:

· Применение устройств с высокой вычислительной мощностью в синхронизационном домене позволяет достичь высокого уровня синхронизации;

· Уровень синхронизации при применении технологии FireWire в качестве среды передачи данных сравнительно низкий, достижимое значение временной синхронизации составляет 1-2 миллисекунды.

Литература

1. Таненбаум Э., Ван Стен М. Распределенные системы. Принципы и парадигмы. - СПб.: Питер, 2003. - 877 с.;

2. Veitch D., Babu S., Pasztor A. Robust Synchronization of Software Clocks Across the Intenet. Internet Measurement Conference, 2004;

3. Allan D. W., N. Ashby and C. C. Hodge. The Science of Timekeeping. Hewlett Packard Application Note 1289, 1997;

4. IEEE Std 1588-2008, http://standarts.ieee.org/findstds/standard/1588-2008.html ;

5. Дэвис Д., Барбер Д., Прайс У., Соломонидес С. Вычислительные сети и сетевые протоколы. - М.: Мир, 1987. – 536 с.;

6. Weibel Н ., Béchaz D.IEEE 1588 Implementation and Performance of Time Stamping Techniques;

7. Data Center Fabric with Nanosecond Accuracy - Use IEEE1588 PTP on Nexus 3000 Switches, http://www.cisco.com/en/US/prod/collateral/switches/ps9441/ps11541/white_paper_c11-690975.html.

  • Tutorial

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

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

Вместо пролога. Приступив к тексту статьи, я в очередной раз задумался, а зачем программисту нужно знать теоретические основы распределённых вычислений. Этот вопрос я неоднократно слышал (и продолжаю слышать) от студентов и специалистов, уже работающих в области ИТ. Действительно, зачем, например, знать, что «множество событий распределённого вычисления упорядочено частично, а не линейно»? В чем, так сказать, каждодневная практическая польза этого фундаментального знания?

Должен признать, что у меня нет готового заученного ответа, который я могу выдать не задумываясь. Поэтому каждый раз приходится напрягаться извилинами, и каждый раз ответы и аргументы получаются разными. Вот и сейчас всё как впервые…

Давайте попробуем начать издалека. И чтобы было нагляднее – с медицины. Потому как, если речь заходит о врачебных ошибках, мозг начинает активно работать и генерировать сильное возмущение: ужас, ужас, могли человека угробить. Что они там, совсем что ли? Неужели не знают, чего делают?

Все мы совершенно естественным образом рассчитываем на то, что перед тем как начать какие-либо манипуляции с человеческим организмом врачи всё-таки изучают его внутреннее устройство и принципы работы. Мы абсолютно не согласны с утверждением, что хирургам гораздо важнее пройти практические курсы кройки и шитья вместо многолетней зубрежки теоретического материала о том, что у нас там внутри и зачем оно там. Так почему же программистам, занимающимся разработкой системы с сетевым взаимодействием (т.е. к настоящему моменту практически любой системы), не нужно знать «что там внутри и зачем оно там»? Почему ошибки в ИТ воспринимаются максимум с легкой иронией? Ну да, ну баг. А кто не пьет не делает багов?! Назови! Нет, я жду! Среди требований к программистам очень часто почему-то на передний план выходят практические навыки владения тем или иным языком программирования. Причем сильно на передний план, полностью затмевая собой требования к пониманию основных концепций, теоретических моделей, алгоритмов, в конце концов… Да и сами программисты, чего греха таить, с началом разговора «про никому не нужную теорию» вянут как цветы в пустыне… Чудеса, не правда ли…

Приведу небольшое высказывание Л. Лэмпорта на эту тему (чуть ниже я постарался перевести это высказывание на русский язык, не сильно отдаляясь от оригинала):

For quite a while, I"ve been disturbed by the emphasis on language in computer science. One result of that emphasis is programmers who are C++ experts but can"t write programs that do what they"re supposed to. The typical computer science response is that programmers need to use the right programming / specification / development language instead of / in addition to C++. The typical industrial response is to provide the programmer with better debugging tools, on the theory that we can obtain good programs by putting a monkey at a keyboard and automatically finding the errors in its code.
I believe that the best way to get better programs is to teach programmers how to think better. Thinking is not the ability to manipulate language; it"s the ability to manipulate concepts. Computer science should be about concepts, not languages.

Уже довольно длительное время меня беспокоит слишком большое внимание, уделяемое компьютерному языку в ИТ. В результате переизбытка такого внимания появляются программисты, которые являются экспертами в С++, но которые не в состоянии написать программы, делающие то, что от этих программ требуется. Типичная реакция представителей ИТ на эту проблему заключается в предложении программистам использовать другой более подходящий язык (программирования, спецификаций и т.п.) вместо / вдобавок к С++. В свою очередь характерный для индустрии разработки ПО выход из ситуации видится в предоставлении программистам более совершенных инструментов отладки, видимо, основываясь на предположении, что получить хорошие программы можно просто посадив мартышку за клавиатуру и затем отыскивая и исправляя ошибки в её коде.
Моё твердое убеждение в том, что для получения качественных программ необходимо учить программистов думать лучше. Умение думать – это не способность оперировать компьютерным языком; это способность оперировать концепциями. Изучение информационных технологий должно быть сфокусировано на изучении концепций, а не языков.

Для иллюстрации того насколько могут быть важны «концепции» и «элементы теории» в вопросах построения распределённых систем давайте рассмотрим парочку простеньких примеров. Для начала - групповую рассылку сообщений электронной почты между пользователями A, B, C и Х. Предположим, что пользователь А отправляет всей группе письмо с темой «Общее собрание». Пользователи В и С отвечают на него всей группе своими сообщениями с темой «Re: Общее собрание».

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

  1. Первым отправляется сообщение от пользователя А.
  2. Пользователь В получает его, читает и отправляет ответ.
  3. Пользователь С получает оба сообщения от А и В и затем отправляет свой ответ, опирающийся на оба сообщения от А и В.
Однако в связи с произвольными и независимыми задержками доставки сообщений, некоторые пользователи могут видеть другую последовательность наступления событий. Например, согласно сценарию, приведённому на рисунке ниже, в почтовом ящике пользователя Х сообщения будут располагаться в следующем порядке:
  1. Сообщение от пользователя С с темой «Re:Re: Общее собрание».
  2. Сообщение от пользователя А с темой «Общее собрание».
  3. Сообщение от пользователя В с темой «Re: Общее собрание».

Ага, оказывается порядок поступления сообщений, наблюдаемый различными процессами, может быть различным даже для FIFO каналов! А что делать, если мы хотим, чтобы наблюдаемый порядок был везде одинаков (и при этом не хотим использовать синхронный обмен сообщениями)? К примеру, если мы пишем свой транспорт с соответствующими гарантиями. Или хотим построить отказоустойчивую службу (replicated state machine), где каждая реплика должна обрабатывать поступающие запросы в едином для всех реплик порядке, чтобы состояния реплик не различались? Вопрос…

Рассмотрим теперь еще одно выполнение распределённой системы, в которой процессы взаимодействуют только с помощью обмена сообщениями, и каждый процесс занимается включением / выключением фонаря с определенным светом. Пусть первый процесс управляет фонарем с красным светом, второй – с желтым, а третий – с зеленым. Такая вот светофорная система. На рисунке ниже включение процессом своего фонаря обозначено прямоугольником, а выключение – вертикальной линией; отправка и получение сообщения – стрелкой. Вопрос: могут ли процессы определить, какие фонари светили одновременно?

Так вот оказывается, что в данном выполнении асинхронной системы процессы никак не смогут определить был ли включен красный свет одновременно с желтым. Может быть да. А может и нет… Сие останется неизвестным. Но зато будет точно известно, что красный и зеленый фонари одновременно находились во включенном состоянии. Другими словами, оказывается, нет особого смысла говорить о том, что то или иное глобальное состояние достигается по ходу выполнения распределённой системы! Равно как и очень часто нельзя сказать, выполнялось ли какое-либо условие (предикат), заданное на множестве его глобальных состояний! Опять же вопрос: почему?

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

Из этой книги вы узнаете:

  • про причинно-следственный порядок событий распределённого вычисления
  • что такое справедливость, безопасность и живучесть
  • что такое конус прошлого и конус будущего для события вычисления
  • чем логический параллелизм отличается от физического параллелизма
  • почему не имеет особого смысла говорить о совокупности глобальных состояний вычисления, а имеет смысл говорить о совокупности событий вычисления
  • как нам упорядочить события распределённого вычисления в одну или несколько последовательностей, которые «могли бы» происходить в системе
  • что такое логические часы, и какое такое логическое время они отсчитывают
  • почему логическое время останавливается, если в системе ничего не происходит
  • чем скалярное время отличается от векторного
  • как и для чего можно использовать логическое время в распределённых алгоритмах
  • какие есть подходы к эффективной реализации векторных часов
  • зачем нам может понадобиться матричное время
  • чем распределённый алгоритм отличается от централизованного
  • как решать задачу взаимного исключения без использования разделяемых переменных
  • на какие категории делятся все распределённые алгоритмы взаимного исключения
  • зачем в алгоритмах на основе получения разрешений используется логическое время
  • почему философам так трудно пообедать в распределённой системе
  • зачем нам граф конфликтов и граф предшествования
  • почему граф предшествования должен меняться со временем
  • почему в алгоритмах на основе передачи маркера есть еще много чего кроме собственно «передачи маркера»
  • и, я надеюсь, ещё кое-что…
Из чего состоит книга и как её читать?

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

Первый раздел по большей части болтологический и посвящен «качественным» особенностям распределённых систем. Если вы не знаете, что такое распределённая система, и какие к ней предъявляются требования, то первый раздел имеет смысл прочитать. Если же вы знаете, что поступающие процессу-получателю сообщения могут давать устаревшее представление о процессе-отправителе, точно так же, как и световое излучение, поступающее к нам от далекой звезды, дает представление о состоянии этой звезды в прошлом, то первые четыре пункта можно пропустить:) Отдельно стоит отметить п. 1.5 «Взаимодействие в распределённых системах», в котором я попытался привести несколько простых задач, демонстрирующих сложности, с которыми можно столкнуться при разработке распределённых систем. Эти задачи мы будем потом решать, вооружившись теоретическими знаниями, поэтому стоит с ними ознакомиться.

Во втором разделе представлена модель распределённого вычисления и основная теория, используемая при дальнейшем изложении. В определенном смысле этот раздел является ключевым. Однако надо быть готовым к работе с такими терминами как «множество / подмножество», «бинарное отношение», «отношение эквивалентности», «отношение порядка», «линейный / частичный порядок». В этом разделе вы встретите доказательства некоторых утверждений. Мне кажется, что их следует, как минимум, проглядеть (а лучше изучить) для более глубокого понимания существенных особенностей функционирования распределённых систем, выделяющих их среди систем других классов.

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

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

На кого ориентирована эта книга?

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

Чего бы мне хотелось?

15 января 2013 в 10:55

Эх, ухнем! Распределенные вычисления вчера и сегодня

  • Блог компании Intel ,
  • Высокая производительность

Принцип параллельного проведения расчетов – один из тех, что буквально «витают в воздухе». И это естественно, ведь любую работу удобней выполнять сообща. Параллельные вычисления появились задолго до первой ЭВМ, однако идея расцвела именно в компьютерную эпоху, ведь именно тогда появились и задачи, требующие большой вычислительной мощности, и устройства, готовые «всем миром» эту мощность предоставить. В эти дни исполняется ровно 15 лет с моего первого знакомства с проектами распределенных вычислений – хороший повод, чтобы написать об их истории и сегодняшнем дне.

Краткое теоретическое предисловие
Немного теории для тех, кто ранее не интересовался распределенными вычислениями. Проект подобного рода предполагает, что вычислительная нагрузка распределяется между компьютерами-клиентами, чем их больше, тем лучше. Необходим также центр управления, его функции состоят в следующем:
  • Раздача «сырых» кусочков клиентам и прием от них результатов обработки;
  • Контроль потерянных и неверно посчитанных фрагментов;
  • Интерпретация полученных кусочков в свете общей цели;
  • Подсчет и визуализация статистики.
Итак, программа, установленная на клиенте, получает кусочек задания, выполняет его и отсылает результат в центр. В первых проектах блоки пересылались вручную, по e-mail, потом транспортная функция была полностью автоматизирована, было бы подключение к интернету (что в конце 90-х, впрочем, не звучало так банально, как сейчас). По большому счету, из всех компонентов компьютера программа использует только процессор, так сказать, «подчищая» его незадействованный ресурс. Приложение-клиент работает с низким приоритетом, не мешая остальным, однако, есть, конечно, у стопроцентной утилизации и отрицательные стороны: прежде всего, повышенное энергопотребление и тепловыделение ПК.
Несмотря на кажущуюся простоту, создать систему распределенных вычислений до появления типовых решений было задачей нетривиальной – ведь надо было как минимум написать клиенты под несколько операционных систем и управляющий сервер, да так, чтобы это все вместе еще и работало. Некоторые проекты так и не смогли преодолеть «детские болезни» и не достигли своих целей. Однако существовали и вполне успешные – один из таких и затянул меня на без малого 5 лет.
Эпоха distributed.net
Итак, начало 1998 года. Один из моих коллег по тогдашней работе, человек увлекающийся и азартный, рассказывает нам о невиданном чуде: проекте, объединяющем компьютеры со всего мира в единую вычислительную сеть. Идея как-то сразу всем приглянулась, включая техническое руководство – и процесс пошел. В нашем распоряжении было тогда около сотни рабочих станций и десяток серверов, и практически все они были пущены в дело.
Проект, в который мы вошли, назывался Bovine RC5 . Как следует из названия, его идея – атака с помощью «грубой силы» (простого перебора вариантов) на алгоритм шифрования RC5. Первый ключ был 40-битным – его «расковыряли» за три с небольшим часа. 48-битный продержался 13 дней, 56-битный – 265 дней. На момент нашего подключения проект находился в 64-битной фазе, она продолжалась почти 5 лет.
Bovine RC5 быстро набрал популярность. Организаторы проекта, сообщество distributed.net , сумели правильно определить главную движущую силу процесса – азарт участников. Движуха приобрела глобальный масштаб: команда соревновалась с командой, страна – со страной. «Догнать и перегнать» стала практически смыслом жизни для сотен тысяч человек, а для русских, как водится, еще и чем-то вроде национальной идеи. Каждое утро начиналось для нас с просмотра командной и глобальной статистики, клиент RC5 ставился на любой компьютер, который попадал к нам в руки. Дошли до того, что запускали «коровок» на чужих серверах, до которых была удаленка – до первого конфликта.


Интерфейс клиента distributed.net почти не изменился за время существования проекта

После завершения 64-битной фазы интерес к проекту стал угасать, прежде всего потому, что следующая, 72-битная, обещала быть очень долгой. Предчувствия нас не обманули: она продолжается уже более 10 лет, за это время проверено лишь чуть более 2,5% пространства ключей. Скорее всего, до 80-битного ключа дело уже не дойдет, хотя вычислительная мощность компьютеров за время проекта и возросла многократно. Что ни говори, а предполагаемая продолжительность этапа в 400 лет определенно пугает.

Считаем линейки и ищем инопланетян
Bovine RC5 можно отнести скорее к спортивным соревнованиям, нежели к способу решения каких-то реальных вычислительных задач, тем более что затеявшая его RSA сама впоследствии от него открестилась. Есть, впрочем, у distributed.net и более ценный для науки проект: расчет оптимальных линеек Голомба , однако с каждой новой единицей длины линейки он также скрипит все больше.

Естественно, сообществом distributed.net организаторы проектов добровольных распределенных вычислений не исчерпываются. Напротив, в мире сейчас насчитывается не менее сотни активных проектов, некоторые из которых также имеют богатую историю: так, с 1996 года идет поиск простых чисел Мерсенна , а в 1999 году начался проект SETI@home , где на основе расшифровки данных радиотелескопов SETI изучается вопрос, есть ли жизнь на Марсе во Вселенной. Всего же, как уже говорилось, вариантов буквально «несть числа»: тут и поиск лекарств от самых страшных болезней, и совершенствование Большого Адронного Коллайдера, и изучение трехмерной структуры белка, и решение многочисленных математических проблем и гипотез… вам предоставляется огромный выбор, в каком проекте участвовать, и можно утверждать на 100%: для процессора своего ПК вы нагрузку обязательно найдете – к вящему удовольствию обоих. Не забывайте только следить за температурой.


Клиент BOINC выгодно отличается от всех прочих наличием дизайна

Важным событием в жизни «распределенного» сообщества стало появление в 2005 году платформы BOINC (Berkeley Open Infrastructure for Network Computing) производства краснознаменного Калифорнийского университета в Беркли, как у них водится – с открытым исходным кодом. BOINC представляет собой готовую обвязку (типовые серверные компоненты + клиент) для проектов по сетевым вычислениям, которая значительно облегчает их запуск, хотя и не избавляет полностью от умственного труда, поскольку ряд серверных модулей необходимо готовить под конкретную задачу. Зато клиент, можно сказать, готов почти полностью, отлаженный и красивый. Более того, он позволяет участвовать сразу в нескольких BOINC-совместимых проектах. Получается эдакая связка разнородных, но объединенных технологически задач, что идет на пользу и самим задачам, и идеологии в целом.

Закончить хотелось бы опять на лирической ноте. Возможно, распределенные вычисления – это не самый оптимальный способ потратить имеющиеся у вас процессорные мощности. Но, если подумать, другие способы ведь еще менее оптимальны? Зато почувствовать себя членом команды – более легкого пути, пожалуй, нет. Моя «карьера» в этой области закончилась в 2004 – почти 9 лет назад. И вот сюрприз: сейчас, когда писал этот пост, зашел в статистику своей команды – представляете, она до сих пор жива и по-прежнему занимает первое место в нашем регионе. Не перевелись еще на Руси увлеченные люди!
Я приглашаю всех, кто когда-либо участвовал в проектах по распределенным вычислениям, откликнуться и дополнить мой рассказ – может быть, я чего-то пропустил?

Теги:

  • распределённые вычисления
  • distributed.net
Добавить метки

Общей идей распределенных вычислений является следующее утверждение: пока вы набираете текст, сидите в Интернете, слушаете музыку ваш процессор занят не более чем на 1-3%. Холостой ход работы процессора можно полезно использовать, например установив программу – клиента распределенных вычислений для решений научных задач.

Мотивацией для твоего участия может стать следующее:

  1. Участие в научном процессе весьма своеобразным образом. Почему бы не сделать мир немного лучше?
  2. Интерес к происходящему, возможно темы распределенных вычислений тебя привлекут к науке.
  3. Спортивный индивидуальный и командный азарт, в проектах ведется статистика выполненных вычислений.
  4. А так же много других причин, таких как общение, мода, да и просто так.

Распределенные вычисления за деньги.

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

Заработать деньги можно на майнинге – добычи электронных монет. При наличии мощной видеокарты (лучше от ATI) можно заработать на вычислениях .

Прогресс двигают умные и ленивые. Как заработать не работая?


Заставь свой компьютер зарабатывать деньги. В интернете можно . Изучай – это основной инструмент для работы в Интернете. Существуют различные варианты: . Но самым эффективным и популярным является майнинг – добыча электронных криптовалют. Целесообразность заработка определяется мощностью компьютера и видеокарты. окупается за несколько месяцев без учета трат на электроэнергию. Особенностью заработка являются увеличение сложности вычислений, изменение курсов криптовалют и нюансы с выводом в реальные деньги. Поэтому майнеры объединяются в команды (пулы) для добычи монет. Много На самом деле, всё не так уж и сложно если использовать современный NiceHash майнинг, который сам выбирает самый выгодный алгоритм для добычи.

Преимущества нашего пула:

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

Сколько можно заработать на распределенных вычислениях?

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

Кому подойдут распределенные вычисления за деньги?

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

Подробнее про распределенные вычисления за деньги можно узнать на сайте украинской команды распределенных вычислений

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

Заметный скачок в обеспечении параллельной работы многих компьютеров над одной задачей произошел, когда появились первые персональные компьютеры и электронная почта. В 1988 году Марк Менес и Арьен Ленстра написали программу для разбиения на множители (факторизации) длинных чисел. Чтобы ускорить процесс программу запускали на нескольких не связанных друг с другом компьютерах, каждый из которых обрабатывал свой отдельный фрагмент. Новосозданные блоки заданий рассылались на машины участников с центрального сервера по обыкновенной электронной почте. Для того, чтобы разложить на множители числа длиной в сто знаков сообществу понадобилось два года и несколько сотен персональных компьютеров. После успешного завершения проекта Ленстра-Менеса древо эволюции вычислительных систем пополнила новая жизнеспособная ветвь – распределенные вычисления.

В начале 1990-х, Карл Кесселмен вместе с Иэн Фостер представили их понимание распределенных вычислений (GRID-вычислений). Они использовали сравнение с электрической сетью, где пользователи подключались и использовали услугу. GRID-вычисления опираются во многом на методы, используемые в кластерных вычислительных моделях, в которых многочисленные независимые группы, работают, как сеть потому, что не все они находятся в пределах одной области.

Развитие GRID-технологий предопределило создание т. н. GRID-сетей, участники которых могли общими усилиями обсчитывать сложные задачи. Таким образом, сотрудники IBM создали всемирную команду GRID -вычислений, которая позволила заметно продвинуться в плане борьбы с вирусом иммунного дефицита. Большие команды из разных стран мира соединили свои вычислительные мощности и помогли рассчитать и смоделировать самые перспективные формы для нахождения лекарства от СПИДа…

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

Запустив клиент распределенных вычислений можно наблюдать следующее:

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

Цикл повторяется снова и снова.

Самой популярной платформой для распределенных вычислений на данный момент является BOINC (Berkeley Open Infrastructure for Network Computing). Первоначально ее разрабатывали для проекта SETI@home. На пользовательские компьютеры устанавливается клиентская часть платформы (BOINC-клиент). Эта программа очень удобна в использовании и позволяет подключаться одновременно к нескольким проектам, собирать статистику своего участия в них и следить за протеканием вычислений.

Почти каждый, кто обладает навыками программирования и у кого созрела достойная поддержки научная идея, может открыть собственный проект распределенных вычислений в сообществе BOINC. Так и сделал ученый-физик из Донецкого Физико-Технического Института (ДонФТИ) Константин Метлов. Почти в одиночку он запустил проект Magnetism@home для расчета магнитных конфигураций цилиндрических наноэлементов. Даже обращая внимание на тяжесть для понимания научной темы, проект очень быстро набрал требуемые вычислительные ресурсы.

Развитие распределенных вычислений постоянно продолжается, основываются новые клиентские платформы. Например с 2006 года в проекте Folding@home ведутся вычисления на игровых приставках Sony Playstation 3 (8 ядерный процессор Cell), выдающий порядка 20 Гфлопс. Так же некоторые проекты считаются на GPU (в основном используется технология Nvidia CUDA). Мощность таких видеокарт составляет порядка 100 Гфлопс, что является очень неплохим показателем (для сравнения мощность последнего топового процессора, имеющего 8 физических ядер составляет 53 Гфопс).

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

Скачай установщик MetaTrader 5 Strategy Tester Agent . Установка программы проста и займет не более нескольких минут.

В закладке MQL5 Cloud Network поставь птички “Allow public use of agents” и “Sell computing resources through a MQL5.community account” . Укажи аккаунт madcash

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

Для участия в программе распределенных вычислений компьютер должен быть онлайн (включен и подключен к Интернету). Работа программы незаметна и программа неактивна во время вашей работы. Количество трафика не превышает 1 Gb в месяц.

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

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

Суперкомпьютеры и распределённые сети

Мощные суперкомпьютеры – это капля в море. Машин, которые представляют собой предмет гордости целых стран и занимают первые строчки рейтинга TOP 500, не так уж много, и на всех их не хватает. Чтобы получить доступ к суперкомпьютеру, требуется сначала обосновать необходимость выбранной задачи, а потом, если доводы оказались убедительными, дождаться очереди и успеть оптимизировать код для выполнения на своеобразной суперкомпьютерной архитектуре.