如何使用多台计算机并使其作为一台计算机,使其所有处理器和内存现在可以组合在一起,并且正在运行任何应用程序,以便在一台非常快的计算机上运行它们。 这样它可以用来运行虚拟机(在像vmware这样的软件上)。
什么操作系统可以完成? 或者需要什么软件?
作为具有大量内存,多个CPU并且可以运行通常在该操作系统的非群集版本上运行的任何操作系统的单个操作系统的群集的types被称为单个系统映像 。 这需要多个群集节点,并按照您所说的将其合并到一个OS实例中。
这种做法并不常见,因为这样的系统非常难以正确工程化,而且在应用程序级而不是操作系统级进行集群化的系统设置起来要容易得多,而且性能往往要好得多。
performance差异的原因与假设有关。 在OS上运行的进程假定所有可用资源都是本地的。 准备好集群的进程(例如渲染场)假定有些资源是本地的,有些是远程的。 由于假设的不同,资源如何分配是非常不同的。
把一个像Linux这样的通用单节点操作系统转换成一个SSI风格的集群需要对内核进行大量的改造。 诸如内存局部性(又见numa )这样的概念在这样一个系统中是非常重要的,而将一个进程切换到另一个CPU的成本可能要高得多。 其次,一个Linux中不存在的概念,即CPU所在的地方,也是非常重要的。 如果你有一个multithreading的进程,在一个节点上运行两个进程,而在另一个节点上运行两个进程比在同一节点上运行的所有四个进程慢得多。 由操作系统决定本地或远程的select对于那些可能对此类区别不敏感的进程。
但是,如果您有一个集群就绪的应用程序(如Chopper列出的应用程序),应用程序本身将作出本地/远程的决定。 应用程序充分意识到操作的本地或远程影响,并将采取相应的行动。
注意:我不是这个话题的专家。
我了解您的方式,您对高性能计算机群集的兴趣(与其他群集方法(如高可用性或负载平衡 )相反)。 你可能想要的是超级 , 网格或分布式计算。
如何使用多台计算机并使其作为一台计算机,使其所有处理器和内存现在可以组合在一起,并且正在运行任何应用程序,以便在一台非常快的计算机上运行它们。
如果没有专门的硬件(例如参见Torus互联或InfiniBand ),则仅限于使用以太网连接计算机(意味着您可以执行分布式或网格计算)。 但是,您不应该忘记或低估本地高速计算机总线(而不是以太网)的速度差异!
现在,网格计算或分布式计算是您应该努力实现的问题,高度依赖于您要完成的任务。 像以太网这样的瓶颈,网格或者分布式计算只会使节点/应用程序变得不灵敏,而且需要做非常计算密集的任务。 (从广义上讲,它不适用于任何不科学的应用程序,应用程序也可能被编程为可以充分利用其主机的分布式特性。
如果您仍然感兴趣,下面是兼容操作系统的列表: 单个系统映像
没有一种超级常见的“集群”方式,这是一个用于使多个服务器执行一个function的术语,但是您可能需要执行数千种不同的function。
例如,有些数据库集群(比如说Oracle RAC或MSSQL集群)可以将数据库负载configuration为一个 – 通常用于性能和/或弹性目的。
其他types的集群也是如此,例如CGI渲染农场,他们一起为下一个皮克斯大片或其他任何东西渲染帧。 用于科学计算的簇(基因研究,粒子物理,甚至核衰变)也是如此。
所以当我们谈论一个“集群”的时候,我们真正的意思就是“一个集群在做xxxxx”。
所以,如果你有一个function,你想分散在一堆服务器让我们知道,我们会尝试build议一些select,用例确定。