Допомога вченим, майнінг криптовалют, пошук далеких галактик як використовувати ресурси «сплячого»
Оглядач vc.ru з'ясував, як використовувати ресурси "сплячого" комп'ютера - апаратні та мережеві, - щоб вони не простоювали без діла.
Навіщо це робити
Незадіяні обчислювальні потужності можуть бути потрібні комусь ще — сусідові по локальній мережі, який займається тривимірним моделюванням; вченим у невеликих наукових центрах, які не мають своїх суперкомп'ютерів, а доступні лише ресурси добровольців; ентузіастам, які займаються пошуками позаземного життя. А ще вони дуже потрібні хакерам, які створюють «зомбі-мережі» для організації DDoS-атаки, але про це окремо.
Ідейні основи розподілених обчислень було закладено вже давно. Перший досвід звернення до ресурсів пристроїв, що «простують», належить ще до 1973 року, коли двоє співробітників дослідницького центру Xerox PARC – Джон Хапп і Джон Шох – написали програму, яка ночами проводила розрахунки на комп'ютерах, підключених до локальної мережі центру.
Через двадцять років, у 1993 році Ерік Шмідт, який працював тоді в Sun Microsystems, заявив: «Коли мережа стане такою швидкодією, як процесор, комп'ютер як такий перестане існувати, він пошириться по мережі». Ця думка лягла в основу концепцій хмарних сервісів та гридів, при взаємодії з якими користувачеві вже не важливо, наскільки швидко працює його пристрій, а має значення лише пропускна здатність каналу.
Але cloud computing - це централізація та зосередження обчислень на стороні компаній-власників серверів. Є й інший шлях, що дозволяє окремим користувачам об'єднуватися для вирішення глобальних завдань, не включаючи ці процеси великі корпорації.
Вже через рік після виступу Шмідта було запропоновано ідею проекту добровільних розподілених обчислень, що став у результаті самимвідомим із них — SETI@Home, який займається пошуком сигналів від позаземних цивілізацій.
Ідея відмовитися від зосередження обчислювальних потужностей в одному місці має і важливу перевагу перед суперкомп'ютерами — розподілені системи мають потенціал необмеженого нарощування своєї продуктивності за рахунок вільного масштабування.
Так само важливі розуміння значення добровільних обчислень і метакомпьютинга ідеї краудсорсинга і utility computing. В основі UC - думка про те, що можливість звертатися до віддалених ресурсів, якими користувачі готові ділитися один з одним, здатна суттєво підвищити загальну продуктивність комп'ютерів у світі.
Наприклад, Девід Андерсон – глава SETI@home – бачить у розвитку розподілених обчислень можливість створення того, що він називає «базується на Інтернеті всесвітньої операційної системи» – Internet-scale Operating System (ISOS), в якій користувачі зможуть не тільки ділитися своїми ресурсами, а й заробляти у цьому.
У той самий час розподілені обчислення — не горизонтальна структура, на відміну, наприклад, P2P. Тут існує певна ієрархічність і підпорядкованість загальним великим завданням, вирішення яких користувачі направляють свої ресурси.
Чим зайняти «сплячий» комп'ютер
Участь у добровільних обчисленнях — це не єдина можливість «на повну» використовувати свої обчислювальні потужності.
Будь-які ресурси, що вільно простоюють, цікавлять хакерів, що створюють «зомбі-мережі». З іншого боку, існує й низка проектів, які використовують DDoS-атаки як форму актів громадянської непокори, коли користувачі з власної ініціативи надавали свої ресурси для створення штучних навантажень на певні сайти.
Проекти добровільнихобчислень
Їх чимало. Частина організована на цілком добровільних засадах, частина пропонує учасникам фінансове заохочення у тій чи іншій формі, якісь створили навколо себе потужне ком'юніті, які змагаються «хто більше обрахує», а інші орієнтуються на те, що завдання, які вони вирішують, привабливі завдяки своєму значенню для людства. .
Сьогодні більшість проектів добровільних обчислень зосереджена на BOINC — програмному комплексі, що дозволяє дослідникам з усього світу звертатися до ресурсів, які надають добровольці.
BOINC кросплатформенний, відносно простий у налаштуванні, і вимагає мінімальної уваги з боку користувача. Його клієнт запускається "під скрінсейвером" і не чіпає ресурси, які потрібні самому власнику, звертаючись тільки до вільних (або, якщо налаштувати його інакше - до тих, що його виділили).
За шість років інтегральна продуктивність проектів на BOINC зросла з 5,2 петафлопс до 28,7, залишивши далеко позаду показники пікової продуктивності найпотужніших світових суперкомп'ютерів (наприклад, японський K computer обробляє 8,16 петафлопс даних).
Головні BOINC-проекти
SETI@home — проект Каліфорнійського університету в Берклі — займається пошуком інопланетних цивілізацій і з 1999 року обробляє радіосигнали, що фіксуються телескопом обсерваторії Аресібо. За цей час були досліджені сигнали, що надходять з 98% небесного склепіння, що спостерігається (щоправда, у досить вузькому діапазоні). У проекті встигло взяти участь понад чотири мільйони користувачів.
Einstein@Home шукає в космічному просторі пульсари - джерела особливого роду електромагнітного випромінювання. Головним завданням проекту довгий час вважалося підтвердження теорії Ейнштейна про гравітаційні хвилі, але врезультаті сигнал, що доказав їх існування, виявився занадто коротким, щоб потрапити в область даних, що обробляється проектом. Незважаючи на це, Einstein@Home продовжує діяти, виявляючи нові джерела гравітаційного випромінювання.
MilkyWay@Home - ще один проект про далекий космос. У межах розподілені обчислювальні потужності використовуються для тривимірного моделювання процесів формування галактик.
Ближчі до Землі проекти — Asteroids@home, що вивчає малі космічні тіла, і Climate Prediction, що займається моделюванням погодних умов — на Землі ще багато місць, де метеорологи не мають своїх обчислювальних потужностей для розрахунків прогнозів погоди.
Є на BOINC та проекти, що працюють над завданнями мікросвіту. Так, LHC@Home покликаний допомогти з розрахунками фізикам, які працюють з Великим адронним колайдером CERN. Ресурсів власної розподіленої мережі, хоч вона і найпотужніша у світі, їм часом не вистачає.
Rosetta@home моделює структури білків, що допомагає у пошуку засобів лікування ВІЛ, раку, хвороби Альцгеймера та малярії. Існують і окремі проекти, потужності яких спрямовані на боротьбу із конкретними захворюваннями.
Математичними обчисленнями займаються, наприклад, PrimeGrid та Yoyo@home.
Окрема гілка проектів - WorldCommunityGrid корпорації IBM. В рамках WCG ведуться розрахунки, пов'язані з відновлюваними джерелами енергії, пошуком ліків (наприклад, від вірусу Ебола) та розшифровкою геному.
Існують і проекти, інфраструктура яких не побудована на BOINC. Серед них TeraGrid, що шукає у Всесвіті скупчення «темної речовини», MoneyBee, що розраховує можливі коливання ринків акцій або NEESgrid, що дозволяє геологам та архітекторам моделювати сейсмічні активності.
«Лотерейні» та комерційні проекти
Проекти, які так чи інакше пропонують прямий дохід, виглядають надто шарлатанськими, але є й ті, що діють за лотерейним принципом — тут заздалегідь обумовлена премія виплачується учаснику, на якому були досягнуті якісь проміжні або кінцеві умови проекту.
GIMPS, що перебирає спеціального виду прості числа, спонсорується Electronic Frontier Foundation, що пропонує $100 тисяч за знаходження простого числа Мерсенна з кількістю цифр 10 млн. Перший приз був отриманий Наяном Хаджратвалою, який розрахував число довжиною в мільйон знаків у 2000 році. З того часу було отримано ще три числа.
Такі проекти, як ProcessTree Network та Parabon Computation, пропонують користувачам надавати свої ресурси комерційним замовникам.
Як це працює
Для участі в розподілених обчисленнях на рівні звичайного добровольця майже нічого не потрібно — досить просто встановити клієнт (наприклад, ПЗ для BOINC), вибрати відповідний проект (наприклад, на сайті українськомовної спільноти), налаштувати конфігурацію, вказавши максимальне допустиме навантаження та час з'єднання — і готово: оболонка підвантажує завдання, пристрій обробляє їх, коли він має таку можливість, та був клієнт сам відсилає отримані результати назад на батьківський сервер.
Просунутий рівень
При зацікавленості та наявності навичок для розподілених обчислень можна використовувати компоненти «інтернету речей» або ігрові приставки — у PlayStation 3, наприклад, програма для обчислень у рамках Folding@Home була встановлена розробниками.