openMosixLinux 的群集技术
OpenMosix 将群集能力添加到 Linux 内核,从而允许任何标准 Linux 进程利用群集的资源。通过使用自适应负载均衡技术,运行在群集的一个节点上的进程可以透明地“迁移”到另一个节点(在该节点上,它们可以更快地执行)上。 因为 openMosix 对于所有运行中的程序都是完全透明的,所以被迁移的进程甚至不知道(或不需要知道)它正在远程系统上运行。就远程进程和运行在最初节点(称为“宿主节 点”)上的其它进程而言,该进程是在本地运行的。
openMosix 的这种透明性意味着不需要专门的编程,即可利用 openMosix 的负载均衡技术。实际上,缺省 openMosix 安装会自动地将进程迁移到“最佳”节点上。这使得 openMosix 成为了能够立即为大量应用程序带来好处的群集解决方案。
openMosix 真正的奇妙之处在于它可以将许多 Linux 机器转换成一个类似于大型虚拟 SMP(对称多处理器)系统的东西。但是,两者之间有一些差异。首先,在“真正的”SMP 系统上,两个或更多 CPU 之间可以很快地交换数据;但使用 openMosix 时,节点之间彼此通信的速度是由 LAN 的速度决定的。使用千兆位以太网或其它高带宽联网技术能够提高 openMosix 群集的效率。
当 然,openMosix 提供了许多传统的多处理器系统不能提供的好处。使用 openMosix 时,您可以使用便宜的 PC 硬件,创建由数十个甚至数百个节点组成的群集。与此相反,相对于您的预算而言,包含大量处理器的 SMP 系统价格可能会昂贵得惊人。对于许多应用程序,使用 openMosix 比使用传统超级计算机或大型机更“划算”。当然,您完全可以在许多高端多处理器系统上运行 OpenMosix。正如先前提到的,将 openMosix 与性能增强技术组合起来也是有益的,譬如将它与 Intel 超线程技术合并使用,后者可用于使用 Intel Xeon 处理器的 xSeries 服务器,目前 Linux 已支持该技术。超线程技术通过使单个 Xeon 处理器能够在操作系统上表现为两个虚拟处理器,以改进线程应用程序的性能。通过同时利用 SMP 和超线程,您可以从拥有多个物理和/或虚拟处理器中受益,并可享受 openMosix 本身的优点。甚至有可能(并且很轻松!)与现有的 MPI 或 PVM 程序一起使用 openMosix,以便进一步优化支持群集的应用程序的性能。
OpenMosix(象 SMP 系统一样)不能在多个物理 CPU 上同时执行单个进程。这意味着 openMosix 不能加速象 Mozilla 这样的单进程程序,而只能将它迁移到执行效率最高的节点上。此外,openMosix 目前不支持多个协作线程彼此隔离。
与 此相反,超线程技术允许多个线程同时在不同的逻辑处理器上执行。因此,关注性能的用户可能希望以创造性的方法组合超线程技术和 openMosix,因为这两种技术可以互补。通过将使用 Xeon 处理器的节点组装成群集节点,就能够使用超线程技术来提高每个节点处理多个协作线程的能力,这些协作线程是不能在 openMosix 节点之间分隔和分布的;根据您规划使用群集的方式,利用这些技术将导致显著的性能提升。
当然,openMosix 会考虑使并行执行在进程级别上的伸缩性非常好。OpenMosix 可以毫无问题地在节点之间迁移大多数标准 Linux 进程。如果一个应用程序派生出许多子进程,每个子进程都执行工作,那么 openMosix 能够将这些进程中的每一个都迁移到群集中的一个适当的节点上。即使特定应用程序并没有设计成使用多个可以独立迁移的子进程,您也可以利用这种能力。例如, 如果您想使用群集压缩 12 个数字音轨,则可以简单地同时启动所有 12 个音频编码进程。数秒之后,openMosix 会将每个进程都迁移到群集中的一个合适节点上。如果您的群集恰好有 12 个节点,那么完成音频编码作业的速度几乎比使用一台机器时快 12 倍。如果计划同时运行的进程数比群集中的节点数多,那么多进程和超线程将向您提供额外的性能优势。
OpenMosix 是最初 Mosix 项目的一个相当新的分支,Mosix 也为 Linux 提供了透明的群集解决方案。那么,为什么要使用 openMosix 呢?这里是一些很好的理由。在 2001 年末,Mosix 项目的领导决定在非 GPL 许可证下发布 Mosix 的所有新版本(它们原本是 GPL 代码)。实际上,除了版权和一句“All rights reserved”之外,现在新的 Mosix 代码根本不包含任何许可证。因为这个突如其来和意外的变化,所以不能将 Mosix 的新发行版看作是免费软件,并且,关于用户对新的 Mosix 代码拥有什么权利还不清楚。实际上,在今后的日子里,没有什么可以阻止 Mosix 的作者向 Mosix 用户收取版权费。
显然,这个突如其来的许可变化引起了许多 Mosix 当前用户的关注,由于 Mosix 网站未经说明就删除了代码和 Mosix 邮件列表档案本身这一事实,因而引起了更多的关注。令人欣慰的是,并不是只有这些用户才关注这一突然变化。Mosix 项目联合经理 Moshe Bar 不赞成放弃 GPL 许可。作为对这一变化的响应,Moshe 启动了 openMosix 项目,目的是确保广大用户可以继续使用 Mosix 的免费版本。
自从 openMosix 项目开始以来,原来安装了 Mosix 的大量用户都转而安装 openMosix — 据最保守估计有 350 例以上。此外,Moshe 更开放的新开发风格使 openMosix 的开发速度迅速加快。目前有 14 个人积极地从事 openMosix 开发工作,但只有 4 个人为 Mosix 工作。接下来,他们在 openMosix 代码中修正了许多错误并添加了性能增强,并正在开发许许多多与新的便利性、功能和性能相关的特性。既然“灰尘已经掸去”,看起来 openMosix/Mosix 的分家使得一个新的 Linux 群集解决方案得以诞生,它比原有的其它解决方案更好、更健壮并且开发得更迅速。
要设置 openMosix 群集,您需要两个或更多连接在 LAN 中的 Linux 系统。要运行 openMosix,这些系统应该能编译和运行 2.4 系列的内核。
以上是必需的。为了获取最大的群集性能,您可能会希望考虑使用下列推荐组件。
强 烈建议使用至少 100 兆位(快速)以太网。标准(10 兆位)以太网不会向您提供良好的群集性能,但如果您只是想玩玩 openMosix,这应该也不错。千兆位以太网是可选的,但却是有益的。千兆位以太网网卡还在不断降价;130 美元就可以买到可靠的千兆位以太网网卡。但是,请别误以为非要千兆位以太网不可;只要用快速以太网,openMosix 就可以出色地完成许多任务了。
将 机器的以太网卡连接到专用的高速交换机上也是很有益的。这样做,各个系统都能够以“全双工”方式通过以太网进行通信,从而有效地使带宽加倍。如果机器的数 量有限,则您可能考虑使用专门绕制的(specially-wired)以太网电缆将系统之间彼此直接地连接起来。这样做,能够以相当低的价格获得“类交 换机(switch-like)”的全双工性能。使用具有 2 个或 3 个节点的群集时,这个技巧很有用,因为这些配置只需要每台机器分别有一块或两块网卡(NIC)即可。
推荐使用大量交换空间。这将允许从群集中动态地除去节点而不至于使现有节点耗尽虚拟内存。再提一下,这是推荐作法,只有在您让群集超负荷运行的极端情况下,它才会显现出差异。
再 说一遍,这些建议全部都是可选的,完全有可能使用两台运行 Pentium 系列处理器的机器在标准以太网上建立群集。网络越快,openMosix 在群集中的节点之间就能够更有效地迁移进程。用快速网络玩 openMosix 更有乐趣。说到玩 openMosix,请关注我的下一篇文章,那时我将向您演示如何设置真正属于您自己的 openMosix 群集。在本系列文章的第三部分中,我们要准备好享受很多乐趣,因为那时我们将看到 openMosix 运行起来。