一些有趣的问题。我认为您可能有点误解了使用Raspberry Pis构建的“超级计算机”的工作方式。它们不能用作自动负载分担系统。它们是为称为并行编程的东西而设计的,其中将复杂的任务分解为可以同时执行的部分。集群(头节点)中的主要Pi负责组织总体任务,集群(客户端节点)中的每个Pi都执行其分配的工作并将结果报告回头节点。诸如OpenMPI之类的库对此很关键。
此外,已构建的Raspberry Pi群集尚未构建为高效的计算设备。它们已被构建为开发平台。购买32台Raspberry Pi比购买32台台式机便宜得多。您可以以这种方式便宜得多地开发和测试并行编程软件。如果没有Pi或PC,则唯一的选择是在实际的超级计算机上请求CPU时间。根据相关计算机的大小,这样做可能会花费金钱或在资源可用之前等待很长的时间。因此,为什么人们建立了自己的个人集群。当您知道应用程序可以正常工作时,才可以在实际计算机上运行该应用程序!
因此,请记住这一点,然后继续处理您的特定问题。
在适当的群集中,Pi不能充当单个虚拟计算机。您可以通过任务或资源分配系统(例如Sun Grid Engine)的形式来对每个Pi进行松散控制。任务根据需要分配给节点,当任务完成时,该节点的资源将被释放以用于新任务。
在集群中,由于每个Pi都在运行自己的Linux副本,因此每个Pi都将保留对其GPIO端口的本地控制。我不确定软件将如何在并行计算环境中真正使用它,但是您已经找到了。
群集并不是真正使Pi更快,因为它们不是一台计算机。您所获得的仅仅是一次执行更多操作的能力。您不限于二的倍数。但是,根据运行的任务,群集计算机确实有实际的上限。想象一下,如果您在许多需要200个步骤的Pi上运行并行计算。但是,每个下一步都需要每个Pi在其上一步中计算的信息。因此,每个Pi每次迭代都需要从其他Pi接收数据。根据每次迭代计算所需的时间,与计算相比,最终可能花费更多的时间发送数据。这就是为什么大多数超级计算机都使用InfiniBand的原因网络。它非常快,因此您可以进行更多的计算。解决方案是使用更少的Pi,但让它们在每次迭代中做更多的工作,但这取决于您的算法可能无法实现。因此实际的上限。(在Pis上,这特别糟糕,因为USB以太网非常慢。)
因此,在实际应用中,分布式虚拟主机!您可以在此处利用多个Pi,这不是常规集群。假设您有5个Pis。我们将它们称为GatewayPi,WebPi1,WebPi2,WebPi3和DataPi。GatewayPi面向互联网,运行Nginix来处理Web请求,但不进行任何处理。相反,它所做的是负载平衡。它使用代理,并将传入的请求随机转发到WebPi1,WebPi2或WebPi3。我们刚刚将Web基础架构的功能增加了三倍,因为我们现在可以同时处理更多的请求。那DataPi呢?DataPi附带了一个硬盘驱动器,用于存储我们的所有Web数据,并且正在运行NFS服务器。WebPiX挂载了该NFS共享,因此它可以访问数据进行处理。这样,我们只需要在一个位置运行备份即可节省磁盘空间。
我刚才所描述的实质上是Google和Facebook等大公司使用的模型,但缩小到了Raspberry Pi的大小。唯一的问题是,由于Pis的成本,这样做实际上是在创建与Pis集群用于并行编程相同的开发平台(但用于Web服务)。使用多个Pi时,由于它们的计算能力相对较低,因此在您处理大量数据时会很快降低性能,降低能耗。但是只是为了学习?他们是完美的。