我同意sayimu,你在谈论单一系统映像的概念。除了 OpenMosix 项目之外,还有几个相同想法的商业实现(一个当代的例子是 ScaleMP)。这不是一个新想法。
我只是想详细说明一下SSI的一些技术要点。
基本上,它没有完成的原因是因为性能通常是绝对不可预测或可怕的。计算机系统中有一个概念被称为 [NUMA][3],这基本上意味着访问不同内存块的成本是不统一的。这可能适用于 CPU 可能会将一些内存访问路由到不同芯片的大型系统,或者通过网络远程访问内存的情况(例如在 SSI 中)。通常,操作系统会尝试通过在内存中布置程序和数据以使程序可以尽可能快地运行来弥补这一点。即,代码和数据都将被放置在同一个 NUMA“区域”中,并被安排在最接近的 CPU 上。
但是,如果您正在运行大型应用程序(尝试使用SSI 中的所有内存),操作系统几乎无法减少远程内存获取的影响。MySQL 不知道访问页面 0x1f3c 将花费 8 纳秒,而访问页面 0x7f46 将使其停滞数百微秒,可能是通过网络获取内存时的毫秒。这意味着非 NUMA 感知应用程序将在这种环境中像垃圾一样运行(严重,非常糟糕)。据我所知,大多数现代 SSI 产品都依赖于机器之间尽可能快的互连(例如 Infiniband)来实现甚至可以接受的性能。
这也是为什么向程序员公开访问数据的真实成本的框架(例如 MPI:消息传递接口)比 SSI 或 DSM(分布式共享内存)方法获得了更大的吸引力。事实上,程序员基本上没有办法优化应用程序以在 SSI 环境中运行,这很糟糕。