Einige interessante Fragen. Ich denke, Sie können leicht missverstehen, wie die mit Raspberry Pis gebauten "Supercomputer" funktionieren. Sie funktionieren nicht als automatisches Lastverteilungssystem. Sie sind für die sogenannte parallele Programmierung konzipiert , bei der eine komplexe Aufgabe in Teile zerlegt wird, die gleichzeitig ausgeführt werden können. Der Haupt-Pi im Cluster (Hauptknoten) ist für die Organisation der Gesamtaufgabe verantwortlich, und jeder Pi im Cluster (Clientknoten) führt seine zugewiesene Arbeit aus und meldet die Ergebnisse an den Hauptknoten zurück. Bibliotheken wie OpenMPI sind hierfür der Schlüssel.
Darüber hinaus wurden die Raspberry Pi-Cluster, die erstellt wurden, nicht als effiziente Computergeräte erstellt. Sie wurden als Entwicklungsplattformen gebaut . 32 Raspberry Pis sind deutlich günstiger als 32 Desktop-PCs. Auf diese Weise können Sie Ihre parallele Programmiersoftware viel günstiger entwickeln und testen. Die einzige Alternative, wenn Sie kein Pis oder keine PCs haben, besteht darin, die CPU-Zeit auf einem tatsächlichen Supercomputer anzufordern. Je nach Größe des betreffenden Computers kann dies Geld kosten oder lange Wartezeiten verursachen, bis die Ressourcen verfügbar sind. Daher haben die Menschen ihre eigenen persönlichen Cluster aufgebaut. Es ist nur dann sinnvoll, Ihre Anwendung auf dem realen Computer auszuführen, wenn Sie wissen, dass sie funktioniert!
Denken Sie also daran und fahren Sie mit Ihren spezifischen Fragen fort.
In einem richtigen Cluster fungieren Pis nicht als ein einzelner virtueller Computer. Sie haben die Kontrolle über jeden Pi in Form eines Task- oder Ressourcenzuweisungssystems wie der Sun Grid Engine . Aufgaben werden den Knoten nach Bedarf zugewiesen, und wenn die Aufgaben abgeschlossen sind, werden die Ressourcen dieses Knotens für neue Aufgaben freigegeben.
Da in einem Cluster auf jedem Pi eine eigene Linux-Kopie ausgeführt wird, behält jeder Pi die lokale Kontrolle über seine GPIO-Ports. Ich bin mir nicht sicher, wie Software das in einer Parallel-Computing-Umgebung wirklich nutzen würde, aber da sind Sie.
Ein Cluster macht einen Pi nicht wirklich schneller, da es sich nicht um einen einzelnen Computer handelt. Was Sie gewinnen, ist einfach die Fähigkeit, mehr auf einmal zu tun. Sie sind nicht auf ein Vielfaches von zwei beschränkt. Es gibt jedoch eine echte praktische Obergrenze für Clustercomputer, abhängig von den Aufgaben, die Sie ausführen. Stellen Sie sich vor, Sie führen für viele Pis eine parallele Berechnung durch, für die 200 Schritte erforderlich sind. Für jeden nächsten Schritt sind jedoch die Informationen erforderlich, die jeder Pi in seinem vorherigen Schritt berechnet hat. Daher muss jeder Pi bei jeder Iteration Daten von jedem anderen Pi empfangen. Abhängig von der Zeit, die die einzelnen Iterationen für die Berechnung benötigen, verbringen Sie möglicherweise mehr Zeit mit dem Senden von Daten als mit dem Berechnen. Aus diesem Grund verwenden die meisten Supercomputer InfiniBandNetzwerk. Es ist sehr schnell, so dass Sie mehr rechnen können. Die Lösung hierfür besteht darin, weniger Pis zu verwenden, diese jedoch bei jeder Iteration mehr Arbeit leisten zu lassen. Dies ist jedoch je nach Algorithmus möglicherweise nicht möglich. Daher die praktische Obergrenze. (Auf Pis wäre dies besonders schlimm, da das USB-Ethernet ziemlich langsam ist.)
Also weiter zu einer praktischen Anwendung, verteiltem Webhosting! Sie können hier mehrere Pis nutzen, es ist einfach kein regulärer Cluster. Angenommen, Sie haben 5 Pis. Wir nennen sie GatewayPi, WebPi1, WebPi2, WebPi3 und DataPi. GatewayPi ist mit dem Internet verbunden und führt Nginix aus, um Webanforderungen zu verarbeiten, führt jedoch keine Verarbeitung durch. Stattdessen wird der Lastenausgleich durchgeführt. Es verwendet Proxys und leitet die eingehende Anforderung zufällig an WebPi1, WebPi2 oder WebPi3 weiter. Wir haben gerade die Leistung unserer Webinfrastruktur verdreifacht, weil wir jetzt mehr Anfragen gleichzeitig bearbeiten können. Was ist mit DataPi? DataPi hat eine Festplatte angeschlossen, auf der alle unsere Webdaten gespeichert sind, und betreibt einen NFS-Server. WebPiX stellt diese NFS-Freigabe bereit, damit sie zur Verarbeitung auf die Daten zugreifen kann. Auf diese Weise müssen wir nur Backups an einem Ort ausführen und können Speicherplatz sparen.
Was ich soeben beschrieben habe, ist im Wesentlichen das Modell, das große Unternehmen wie Google und Facebook verwenden, jedoch auf die Raspberry Pi-Größe verkleinert. Der einzige Haken ist, dass aufgrund der Kosten von Pis im Wesentlichen die gleiche Entwicklungsplattform (aber für Webserving) wie ein Cluster von Pis für die parallele Programmierung geschaffen wird. Wenn Sie mehrere Pis verwenden, verliert die Leistung aufgrund ihrer relativ geringen Rechenleistung schnell an Energie, wenn Sie große Datenmengen verarbeiten. Aber nur zum Lernen? Sie sind perfekt.