Что такое распределённые вычисления?
Большую часть времени своего нахождения во включенном состоянии, среднестатический современный компьютер занимается тем, что простаивает, ожидая ввода данных от пользователя. Для многогигагерцовых процессоров, время между нажатиями клавиш при печати, время пока пользователь читает с экрана какой-нибудь текст, или ненадолго отошёл от компьютера — целая вечность.
Но к счастью, такая громадная вычислительная мощь — миллиарды операций в секунду, помноженные на сотни миллионов компьютеров — оставалась невостребованной недолго. В наши дни, каждый желающий занять свободное время своего компьютера чем-нибудь полезным, вполне может сделать это, присоединившись к одному из проектов распределённых вычислений. Сами распределённые вычисления (РВ) — это способ выполнения каких-либо расчётов путём их разделения между множеством компьютеров.
В этой статье речь пойдёт о проектах РВ работающих через Интернет, и задействующих компьютеры обычных его пользователей (с их ведома, разумеется) для выполнения разного рода сложных научных расчётов. Участвуя в подобных проектах можно помочь исследовать строение белков и генетических структур, найти лекарство от рака и СПИДа, или даже обнаружить сигналы от внеземных цивилизаций. Обычной работе (или игре) на компьютере это абсолютно не мешает — используются только моменты бездействия.
И, конечно же, говорить мы будем только о тех проектах, участие в которых доступно для пользователей Linux.
С чего всё началось
Можно сказать, что история массовых распределённых вычислений через Интернет началась с проекта distributed.net. Самый популярный из его подпроектов, RC5, занимается взломом зашифрованных одноимённым криптоалгоритмом сообщений. Этот подпроект обязан своим существованием компании RSA Data Security, которая время от времени, с целью продемонстрировать надёжность разрабатываемых ею алгоритмов шифрования, устраивает публичные конкурсы по взлому зашифрованных ими сообщений, с призами в несколько тысяч долларов каждый. Участники проекта distributed.net уже выиграли несколько таких конкурсов, успешно подобрав ключ к зашифрованным алгоритмами RC5-56 и RC5-64 сообщениям. В данное время идёт соревнование по взлому RC5-72, однако по некоторым оценкам, из-за возросшей по сравнению с прежними проектами длины ключа, получения результата, даже с учётом постоянного роста доступных проекту вычислительных мощностей, придётся ждать несколько тысяч лет.
Хотя distributed.net существует очень давно, пределом его мечтаний до сих пор является внимание энтузиастов либо распределённых вычислений как таковых, либо интересующихся криптографией и математикой. А первым проектом, получившим по-настоящему широкую известность и популярность среди "обычных" пользователей, стал, несомненно, SETI@home. Руководители этого проекта предложили всем желающим принять участие в поиске сигналов от внеземной цивилизации. Принцип работы проекта прост: радиотелескоп обсерватории в Аресибо постоянно записывает космический шум, ленты с ним пересылаются в "штаб-квартиру" SETI@home в Беркли, там специальные серверы ("сплиттеры") нарезают данные на мелкие кусочки и рассылают компьютерам участников для обработки.
В поисках подобных аномалий на графике, фанаты проекта просиживали за мониторами долгие часы. | В данном случае, тревога оказалась ложной — мы засекли всего лишь понижение чувствительности приёмника на опорной частоте в 1420 мгц. | А здесь — интерференцию с наземными источниками, или спутниками. Хотя, кто знает... |
Однако, высокая популярность – в проекте зарегистрировано более 4 миллионов участников – обернулась для SETI@home и головной болью. Дело в том, что рост доступных проекту вычислительных мощностей шёл гораздо быстрее, чем рост количества поступающих с телескопа данных для анализа и способностей "сплиттеров" по их переработке. Поэтому, чтобы не отказывать в регистрации или блоках данных новым участникам, проекту пришлось начать рассылать одни и те же, уже обработанные данные по многу раз. По данным независимого сайта статистики, избыточность "классической" версии SETI@home достигала фантастических величин в 50-100 крат.
Помимо рассылки одних и тех же данных, для борьбы с «избытком» вычислительной мощности существует и другой способ. Руководители проекта SETI@home внесли в третью версию клиентского ПО новые, гораздо более тщательные и медленные алгоритмы анализа блоков данных. Но, по мнению некоторых, с точки зрения возможности ими что-то обнаружить, эти алгоритмы являлись довольно-таки бесполезными. При этом рост вычислительной мощности продолжался, и вскоре проект достиг показателей избыточности, немногим уступающих тем, что были до выхода "замедленной" версии.
Куда идём?
Способ использования "лишних" вычислительных мощностей, заключающийся в повторном обсчёте уже обсчитанного, либо в искусственном и не приносящем особой пользы усложнении обработки одних и тех же данных, не понравился никому, включая самих авторов SETI@home. Гораздо логичнее было бы, если бы проект, у которого на момент обращения компьютера участника за новой порцией данных обсчитывать было бы особо нечего, смог, вместо повторной отправки "старой", уже обработанной порции, честно заявить – "работы сейчас нет, зайдите позже". А клиентская программа участника смогла бы этот ответ понять, и переключиться на помощь какому-нибудь другому проекту – тому, которому дополнительные ресурсы в этот конкретный момент времени действительно нужны и полезны. Данный подход и был реализован авторами SETI@home в их новой платформе для распределённых вычислений, получившей название "BOINC".