Kilka interesujących pytań. Myślę, że możesz być nieco nieporozumiony, jak działają „superkomputery” zbudowane z Raspberry Pis. Nie działają one jako automatyczny system podziału obciążenia. Są przeznaczone do czegoś, co nazywa się programowaniem równoległym , w którym złożone zadanie dzieli się na części, które można wykonywać jednocześnie. Główne Pi w klastrze (główny węzeł) odpowiada za organizację ogólnego zadania, a każde Pi w klastrze (węzły klienta) wykonuje przydzieloną pracę i zgłasza wyniki z powrotem do głównego węzła. Kluczowe są do tego biblioteki takie jak OpenMPI .
Ponadto klastry Raspberry Pi, które zostały zbudowane, nie zostały zbudowane jako wydajne urządzenia komputerowe. Zostały one zbudowane jako platformy programistyczne . Znacznie taniej jest kupić 32 Raspberry Pis niż 32 komputery stacjonarne. W ten sposób możesz opracować i przetestować oprogramowanie do programowania równoległego znacznie taniej. Jedyną alternatywą, jeśli nie masz komputera Pis lub PC, jest żądanie czasu procesora na rzeczywistym superkomputerze. W zależności od wielkości danego komputera może to kosztować pieniądze lub wydłużyć czas oczekiwania na dostępność zasobów. Dlatego ludzie zbudowali własne klastry. Uruchamianie aplikacji na prawdziwym komputerze ma sens tylko wtedy, gdy będziesz wiedział, że działa!
Mając to na uwadze i przechodząc do konkretnych pytań.
W odpowiednim klastrze Pis nie działają jak pojedynczy komputer wirtualny. Masz luźną kontrolę nad każdym Pi w postaci systemu alokacji zadań lub zasobów, takiego jak Sun Grid Engine . W razie potrzeby zadania są przydzielane do węzłów, a po zakończeniu zadań zasoby tego węzła są zwalniane na nowe zadania.
W klastrze, ponieważ każde Pi ma własną kopię systemu Linux, każde Pi zachowałoby lokalną kontrolę nad swoimi portami GPIO. Nie jestem pewien, w jaki sposób oprogramowanie rzeczywiście wykorzystałoby to w środowisku przetwarzania równoległego, ale proszę bardzo.
Klaster tak naprawdę nie przyspiesza Pi, ponieważ nie jest to pojedynczy komputer. To, co zyskujesz, to po prostu umiejętność robienia więcej naraz. Nie jesteś ograniczony do wielokrotności dwóch. Istnieje jednak praktyczna górna granica dla komputerów klastrowych w zależności od wykonywanych zadań. Wyobraź sobie, że przeprowadzasz równoległe obliczenia na wielu pisach, które wymagają 200 kroków. Jednak każdy następny krok wymaga informacji, które każde Pi obliczało na poprzednim etapie. Tak więc każde Pi musi otrzymywać dane z każdego innego Pi podczas każdej iteracji. W zależności od czasu potrzebnego na obliczenie każdej iteracji możesz poświęcić więcej czasu na wysyłanie danych niż na obliczanie. Dlatego większość superkomputerów korzysta z InfiniBandsieć. Jest bardzo szybki, więc możesz wykonać więcej obliczeń. Rozwiązaniem tego problemu jest użycie mniejszej liczby Pis, ale wymagają one większej pracy przy każdej iteracji, ale może to nie być możliwe w zależności od algorytmu. Stąd praktyczna górna granica. (W przypadku Pis byłoby to szczególnie złe, ponieważ Ethernet USB jest dość wolny).
Przejdźmy do praktycznej aplikacji, rozproszonego hostingu! Możesz skorzystać z wielu Pis tutaj, to po prostu nie jest zwykły klaster. Powiedz, że masz 5 Pis. Nazwiemy je GatewayPi, WebPi1, WebPi2, WebPi3 i DataPi. GatewayPi jest skierowany do Internetu, uruchamiając Nginix do obsługi żądań internetowych, ale nie wykonuje żadnego przetwarzania. Zamiast tego równoważenie obciążenia. Wykorzystuje proxy i losowo przekazuje przychodzące żądanie do WebPi1, WebPi2 lub WebPi3. Właśnie potroiliśmy moc naszej infrastruktury internetowej, ponieważ możemy teraz obsłużyć więcej żądań jednocześnie. Co z DataPi? DataPi dołączyło dysk twardy, na którym przechowywane są wszystkie nasze dane internetowe i działa serwer NFS. WebPiX montuje udział NFS, dzięki czemu ma dostęp do danych do przetwarzania. W ten sposób musimy uruchamiać kopie zapasowe tylko w jednym miejscu i oszczędzać miejsce na dysku.
To, co właśnie opisałem, jest zasadniczo modelem używanym przez duże firmy, takie jak Google i Facebook, ale zmniejszonym do rozmiaru Raspberry Pi. Jedyny haczyk polega na tym, że ze względu na koszty Pisa, tworzenie tego polega zasadniczo na utworzeniu tej samej platformy programistycznej (ale do webservingu), jak klaster Pisa do programowania równoległego. Używanie wielu pisów ze względu na ich stosunkowo niską zdolność obliczeniową wkrótce traci wydajność w stosunku do zużycia energii, gdy zmierzasz w kierunku obsługi dużych ilości danych. Ale tylko do nauki? Są idealne.