Quelques questions intéressantes. Je pense que vous ne comprenez peut-être pas très bien comment fonctionnent les "superordinateurs" construits avec Raspberry Pis. Ils ne fonctionnent pas comme un système de partage de charge automatique. Ils sont conçus pour ce qu'on appelle la programmation parallèle , où une tâche complexe est décomposée en plusieurs éléments pouvant être exécutés simultanément. Le Pi principal du cluster (nœud principal) est chargé de l’organisation de la tâche globale, et chaque Pi du cluster (nœuds clients) exécute le travail qui lui est attribué et rend compte des résultats au nœud principal. Des bibliothèques telles que OpenMPI sont la clé pour cela.
De plus, les clusters Raspberry Pi qui ont été construits ne sont pas conçus pour être des dispositifs informatiques efficaces. Ils ont été construits en tant que plateformes de développement . Il est nettement meilleur marché d’acheter 32 Raspberry Pis que 32 ordinateurs de bureau. Vous pouvez ainsi développer et tester votre logiciel de programmation parallèle beaucoup moins cher. La seule alternative si vous n'avez ni Pis ni PC est de demander du temps CPU sur un super-ordinateur. En fonction de la taille de l'ordinateur en question, cela peut coûter cher ou prendre beaucoup de temps avant que les ressources ne soient disponibles. D'où la raison pour laquelle les gens ont construit leurs propres grappes personnelles. Il est logique d'exécuter votre application sur le vrai ordinateur quand vous saurez que cela fonctionne!
Alors, gardez cela à l’esprit et passez à vos questions spécifiques.
Dans un cluster approprié, les PIS n'agissent pas comme un seul ordinateur virtuel. Vous avez le contrôle sur chaque Pi sous la forme d'une tâche ou d'un système d'allocation de ressources tel que Sun Grid Engine . Les tâches sont attribuées aux nœuds en fonction des besoins et, une fois les tâches terminées, les ressources de ce nœud sont libérées pour de nouvelles tâches.
Dans un cluster, étant donné que chaque Pi utilise sa propre copie de Linux, chaque Pi conservera le contrôle local de ses ports GPIO. Je ne sais pas comment un logiciel utiliserait vraiment cela dans un environnement informatique parallèle, mais voilà.
Un cluster ne rend pas vraiment un Pi plus rapide, car ce n'est pas un seul ordinateur. Ce que vous gagnez est simplement la capacité de faire plus à la fois. Vous n'êtes pas limité à des multiples de deux. Il existe toutefois une limite supérieure pratique pour les ordinateurs en cluster en fonction des tâches que vous exécutez. Imaginez si vous exécutez un calcul parallèle sur de nombreux Pis qui nécessite 200 étapes. Cependant, chaque étape suivante nécessite les informations que chaque Pi a calculées lors de l'étape précédente. Ainsi, chaque Pi doit recevoir des données de chaque autre Pi à chaque itération. En fonction du temps que chaque itération prend pour calculer, vous pouvez passer plus de temps à envoyer des données qu'à calculer. C’est pourquoi la plupart des super-ordinateurs utilisent InfiniBandréseau. C'est très rapide, vous pouvez donc faire plus de calculs. La solution à ce problème consiste à utiliser moins de Pis tout en leur demandant de travailler davantage à chaque itération, mais cela peut ne pas être possible en fonction de votre algorithme. D'où la limite supérieure pratique. (Sur Pis, cela serait particulièrement grave, car l’Ethernet USB est assez lent.)
Alors, passons à une application pratique, l'hébergement Web distribué! Vous pouvez profiter de plusieurs PIS ici, ce n'est tout simplement pas un cluster. Disons que vous avez 5 Pis. Nous les appellerons GatewayPi, WebPi1, WebPi2, WebPi3 et DataPi. GatewayPi est confronté à Internet et exécute Nginix pour traiter les demandes Web, mais n’effectue aucun traitement. Au lieu de cela ce qu'il fait est l'équilibrage de charge. Il utilise la transmission par proxy et transmet de manière aléatoire la demande entrante à WebPi1, WebPi2 ou WebPi3. Nous venons de tripler la puissance de notre infrastructure Web, car nous pouvons désormais traiter plus de demandes simultanément. Qu'en est-il de DataPi? DataPi a connecté un disque dur stockant toutes nos données Web et exécute un serveur NFS. WebPiX monte ce partage NFS afin qu'il ait accès aux données pour le traitement. De cette façon, nous ne devons exécuter que des sauvegardes à un seul emplacement et économiser de l’espace disque.
Ce que je viens de décrire est essentiellement le modèle utilisé par de grandes entreprises comme Google et Facebook, mais réduit à la taille de Raspberry Pi. Le seul inconvénient est, en raison des coûts de l’utilisation de PIS, que cela crée essentiellement la même plate-forme de développement (mais pour le webserving) qu’un cluster de Pis pour la programmation parallèle. L'utilisation de plusieurs PIS, en raison de leur capacité de calcul relativement faible, perd rapidement de la performance au profit de la consommation d'énergie, alors que vous vous dirigez vers de grandes quantités de données. Mais juste pour apprendre? Ils sont parfaits.