Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

BOINC — wyjdź z (czarnej) dziury...

Co jakiś czas na stronach z dziedziny IT powtarza się temat obliczeń rozproszonych wykonywanych za pomocą platformy BOINC. Temat jednak zazwyczaj jest opisywany albo przez pryzmat konkretnego odkrycie (rzadko) lub przez entuzjastę tej platformy i pomijający wiele dość istotnych aspektów technicznych oraz aspektów historycznych, dlatego postanowiłem trochę przybliżyć całą ideę z punktu widzenia administratora takich projektów...

Na początek krótki rys historyczny.

Historia badań rozproszonych

W 1959 roku dwaj fizycy - Giuseppi Cocconi i Philip Morrison opublikowali artykuł o możliwości wykorzystania fal radiowych do skomunikowania się z odległymi cywilizacjami. Informacja ta rozbudziła zainteresowanie wielu astronomów na całym świecie i doprowadziła do projektu SETI.
Szybko stało się jasne, że moc nawet największych superkomputerów nie jest wystarczająca do analizy fal radiowych dostarczanych przez obserwatorium w Arecibo. Dlatego też programiści projektu wpadli na genialny w swojej prostocie pomysł, aby poprosić wolontariuszy z całego świata o pomoc w obliczeniach za pomocą maksymalnie prostej w obsłudze aplikacji - SETI@home (później nazwaną SET@home Classic).

r   e   k   l   a   m   a

17 maja 1999 roku na komputerów internautów, którzy wyrazili chęć wsparcia projektu trafiła aplikacja działająca w formie wygaszacza ekranu, która dokonywała obliczeń w czasie, gdy komputer wolontariusza nie był wykorzystywany do codziennej pracy (procesor komputera był wykorzystywany w nieznacznym stopniu), natomiast gdy użytkownik wykonywał dowolną pracę na komputerze aplikacja była przerywana, aby ponownie rozpocząć pracę w momencie zwolnienia zasobów. Projekt odniósł wielki sukces i spotkał się z bardzo dużym wsparciem wolontariuszy z całego świata.
W przeciągu istnienia klasycznej wersji aplikacji SETI, zakładane zainteresowanie (50’000 – 100’000 wolontariuszy) projektem zostało przekroczone wielokrotnie, sięgając 5,2 milionów zarejestrowanych wolontariuszy, natomiast dnia 26 września 2001 roku SETI@Home ogłosiło przeliczenie 1021 operacji matematycznych uzyskując wpis w Księdze Rekordów Guiness’a jako największe wykonane obliczenia w historii.
23 czerwca 2013 wraz z ponad 145’000 aktywnych komputerów w 233 krajach projekt (już na platformie BOINC) uzyskał moc obliczeniową ponad 668 teraFLOPS.

Sukces projektu SETI@home skłonił jego twórców do podjęcia pracy nad bardziej uniwersalną platformą obliczeń rozproszonych, co doprowadziło do stworzenia pod kierunkiem David’a P. Andersona platformy BOINC uruchomionej 10 kwietnia 2002r.
Obecnie, na dzień 18 sierpnia 2016 roku na platformie BOINC jest aktywnych 59 projektów z tak różnych dziedzin jak:


  • matematyka
  • fizyka
  • chemia
  • astronomia
  • kryptografia
  • biologia
  • grafika i animacja

Platforma BOINC.

Platforma BOINC działa w architekturze klient-serwer, co oznacza w praktyce, że centralną częścią każdego projektu jest jego serwer, z którą kontaktuje się oprogramowanie zainstalowane na komputerach wolontariuszy. Zazwyczaj jest to program BOINC Manager działający jako graficzna nakładka na program kliencki, co jest całkowicie przeźroczyste dla użytkownika (zwykle nie ma ona nawet świadomości działania klienta.).
BOINC Manager (BM) udostępnia różne opcje konfiguracyjne klienta służące do ustawienia wydajności (wybór projektów do liczenia, ile procent czasu procesora w ciągu doby ma być przeznaczone na liczenie projektów, czy i w ogóle liczyć projekty na GPU, godziny pracy, itd).
Po stronie serwera sytuacja jest trochę bardziej skomplikowana. Sam serwer korzysta z serwera WWW (zwykle jest to Apache), bazy danych (MySQL, MariaDB) oraz zbioru demonów służących do wykonywania różnych zadań:


  • scheduler - kontroluje opcje wysyłki zadań do klientów, przekazuje dane co i jak wysyłać do:
  • feedera - który zajmuje się obsługą wychodzących zadań do klientów
  • transitioner - zajmuje się obsługą stanów zadań (tzw. work units) i w razie potrzeby generuje nowe zadania do wysłania
  • assimilator - obsługuje zakończone zadania, zajmuje się ich zapisem do docelowych katalogów jak również umieszcza odpowiednie wpisy w bazie danych
  • validator - jeden z najczęściej zmienianych przez administratorów daemonów, to on decyduje, czy przeliczone zadanie jest poprawne, czy nie
  • file deleter - czyści już niepotrzebne pliki z serwera
  • db_purge - jak wyżej, ale odnośnie bazy danych

Ze względu na specyfikę serwera BOINC umożliwia on wykonanie potężnej ilości obliczeń wykorzystując do tego stosunkowo słaby serwer, jednak w przypadku dużej liczby wolontariuszy i krótkich (w sensie czasu wykonywania po stronie klientów) zadań zadania serwera można rozdzielić na wiele serwerów i największe projekty korzystają intensywnie z tej możliwości, jednak większość projektów swobodnie może pracować nawet na niezbyt mocnym serwerze pod warunkiem, że baza danych projektu będzie pracować na dyskach SSD. Jako dwa przykłady mogę podać projekt Enigma@Home, który przy bardzo dużej ilości aktywnych komputerów jest obsługiwany na jednym, dobrze zoptymalizowanym serwerze wyposażonym w dyski SSD. Kolejnym przykładem może być Universe@Home (którego jestem administratorem), którego baza danych korzysta nadal z dysków HDD i umożliwia obsługę około 200tyś zadań "w trakcie" przy średnim czasie wykonywania jednego zadania ok. 2h na w miarę nowoczesnym procesorze (Xeon E3-1230v2)

Bezpieczeństwo

Wielokrotnie spotkałem się na forach poświęconych IT tematami i uwagami związanymi z bezpieczeństwem projektów oraz samą ideą BOINC i muszę tutaj obalić kilka mitów:

1. "Nie wiem co się liczy na moim komputerze!"

Zacznijmy od tego, że wiele projektów działa na aplikacjach Open Source i można spokojnie sprawdzić źródła aplikacji liczących. Co więcej - te źródła są systematycznie przeglądane przez programistów choć ich głównym celem jest... optymalizacja obliczeń! Tak właśnie powstają "stuningowane" - czyli wykonujące się znacznie szybciej od "fabrycznych" wersje aplikacji - tak jest np. w przypadku takich projektów jak Enigma@Home czy Seti@Home. Wierzcie mi, szum jaki by się podniósł po umieszczeniu jakiegoś backdoora w kodzie aplikacji projektu błyskawicznie by go zabił. Poza tym nikt nie zmusza nikogo do liczenia projektu z zamkniętymi źródłami...
Niemniej, nie zapomnijmy że za większością projektów stoją renomowane ośrodki naukowe które swoim autorytetem gwarantują, że nic "szpiegowskiego" nie liczy się na naszych komputerach.

2. "Niby dlaczego mam marnować swój prąd? Przecież nikt mi za to nie zapłaci..."

Zgadza się, nikt nie zapłaci, ale... po co dajesz pieniądze na WOŚP? Dlaczego tylu ludzi pomaga innym za darmo? Ideą stojącą za BOINC jest wolontariat - mamy szansę wesprzeć naukowców w badaniach na które innymi metodami nie ma pieniędzy, bo są za mało medialne, bądź są tworzone przez ludzi/ośrodki których nie stać na superkomputery...
Najlepszym przykładem niech znowu będzie Universe@Home, projekt ten ma już za sobą publikację w czasopiśmie Nature (i nie tylko), powstał kosztem zakupu dwóch komputerów, za stosunkowo niewielkie pieniądze, a z wyliczeń jego ekipy naukowej wynika, że aby odtworzyć wyniki działania za pierwszy rok projektu trzeba by było wydać 2,2mln złotych na odpowiednio mocną maszynę... Tak, dwa miliony dwieście tysięcy złotych...

3. "Ktoś może wstrzyknąć złośliwy kod"

Tak, istnieje taka możliwość... Jest ona w zasadzie taka sama jak przy korzystaniu z automatycznych aktualizacji każdego softu (w BOINC aplikacje liczące muszą być podpisywane cyfrowo podczas dodawania ich do serwera i podpis ten jest stale weryfikowany).

4. "Nie chcę, aby ktoś zarabiał pieniądze na moim komputerze"
W zasadzie to nie istnieje projekt czysto komercyjny w tej chwili. Chociaż wiele kontrowersji wzbudza projekt służący do kopania kryptowalut, który podobno przekazuje większość "urobku" do wspomaganych innych projektów to jest to jednak wyjątkowy "rodzynek" w cieście przetwarzania rozproszonego (także z innych powodów, jednak to nie jest miejsce na opisywanie tych kontrowersji). W zdecydowanej większości projekty działają czysto naukowo i nie mają żadnego związku z komercjalizacją nauki. Bardzo dobrym przykładem jest tutaj World Community Grid, który chociaż prowadzony jest przez komercyjną firmę (i to nie małą), to jednak wyniki swoich badań udostępnia bezpłatnie wszystkim zainteresowanym.

Mam nadzięję, że nie przynudziłem za bardzo i chętnie odpowiem na bardziej szczegółowe pytania odnośnie serwera i platformy BOINC jeżeli takowe się pojawią. Mam także nadzieję, że tekst ten rozwieje przynajmniej część obaw związanych z liczeniem społecznościowym no i oczywiście zapraszam do liczenia Universe@Home oraz Enigma@Home jak również innych projektów, które trafią w Wasze zainteresowania :) 

linux serwery hobby

Komentarze