终极 Linux 午餐盒

作者:Ron Minnich

在本文中,我们描述了终极 Linux 午餐盒的构造,这是一个 16 节点的集群,它由单个 IBM ThinkPad 电源供电,但也可以由 N-charge 或类似的电池供电。这款午餐盒内置了一个以太网交换机,并且只有三个外部连接:一个交流电源插头、一个电池连接器和一个以太网电缆。要将午餐盒与您的笔记本电脑一起使用,您只需将以太网电缆插入笔记本电脑,提供适当的电源——即使是飞机座位上的电源也可以——然后就可以开始运行您的集群,高度可达 39,000 英尺。我们设计的午餐盒旨在用于软件开发,既可以作为私人的办公室集群,也可以作为旅行集群。这款午餐盒是新型集群(称为迷你集群)的一个例子。

迷你集群

迷你集群最初是由 Sandia/Livermore 实验室的 Mitch Williams 于 2000 年创建的。图 1 显示了他的最早的集群 Minicluster I 的图片。该集群由四个 Advanced Digital Logic 板组成,使用了 277MHz 奔腾处理器。这些板具有用于 PC/104+ 总线的连接器,PC/104+ 总线是带有额外 PCI 连接器的 PC/104 总线。

正如您所看到的,此集群中只有四个节点。集群的底部是电源,并且集群需要 120 伏交流电才能运行。我们还在右侧展示了一个单 CPU 卡。每个角上的绿色部件形成了图片中显示的堆叠。与此非常相似的系统现在由 Parvus Corporation 作为产品销售。

The Ultimate Linux Lunchbox

图 1. Minicluster I 使用了四个基于奔腾的单板计算机(由 Sandia National Labs 提供)。

The Ultimate Linux Lunchbox

图 2. Minicluster I 的一个节点(由 Sandia National Labs 提供)

Bento 系列

我们对这个集群很感兴趣,并认为它将是 Clustermatic 的理想平台。在 2001 年夏天,我们将 LinuxBIOS 移植到该卡上,并使所有其余的 Clustermatic 软件在其上运行。完成后,我们得到了一张可以在几秒钟内启动到 Linux 的卡,并且可以在不到 20 秒的时间内启动到完整的集群模式。电源和复位周期不再是问题。

我们将 LinuxBIOS 和其他软件提供给了 Mitch,他修改了 Minicluster I 以使用它。Mitch 能够移除三个磁盘,从而降低了功耗并提高了可靠性。一个节点充当集群主节点,另外三个节点充当从节点。

受 Mitch 工作的启发,我们在 2002 年构建了我们的第一个 Bento 集群。事实上,用于该系统的午餐盒就是我们用于终极 Linux 午餐盒的午餐盒。该系统有七个 CPU 卡。它需要两个由 Parvus 制造的电源,这些电源产生 CPU 卡所需的 5V 电压,并且可以接受 9–45 VDC 输入。它有一个内置的以太网集线器,我们通过拆卸一个 3Com TP1200 集线器并将主卡放入盖子中而创建了该集线器。该集群使用了三个 IBM ThinkPad 电源。两个电源在盖子中可见,位于以太网集线器的两侧。第三个在机箱背面可见。一个电源驱动集线器,另外两个电源分别驱动两个电源。每个电源的电源和风扇板可以在盒子的最右侧和最左侧看到;七个 CPU 板位于中间。

The Ultimate Linux Lunchbox

图 3. 第一个午餐盒集群,Bento

Bento 很棒。我们可以在旅途中、漫长而无聊的会议中进行开发,并在七节点集群上进行测试。由于节点的重启时间最多只有 15 秒左右,因此测试模块非常轻松。事实上,在这个系统上,编译和测试新的内核模块与编译和测试新程序一样容易。无盘系统重启速度非常快,这永远改变了您对内核调试的难度和痛苦的看法。

在加利福尼亚州的一次特别艰难的会议中,我们能够完全改造和重写 Supermon 监控系统,并使用它来测量一些测试程序(Sweep3d 和 Sage)在运行时对 CPU 温度的影响。有趣的是,计算密集型的 Fortran 程序可以在几秒钟内将 CPU 温度升高几摄氏度。这些系统的优点在于,如果有人怀疑您在完成真正的工作,而不是注意会议,您始终可以将午餐盒藏在椅子下并继续黑客行为。

Bento 使用的是集线器,而不是交换机,Erik Hendriks 想要改进设计。下一个系统称为 DQ。DQ 被构建在一个有吸引力的金属 CD 盒中,适合在任何场合携带,尤其适合漫长而无聊的会议。正如我们的网页所说,我们将让您弄清楚名称的含义。提示:查看图片中漂亮的粉红色蟒蛇皮携带带。

DQ 集群
The Ultimate Linux Lunchbox

图 4. DQ 集群具有以太网交换机和彩色携带带。

在拉斯维加斯的一次会议上,我们能够在 DQ 上完成大量开发工作。交换机提高了系统的吞吐量,并且该软件包是防炸弹的(尽管我们避免在机场安检队伍中使用这个特定的短语)。硬件基本上是相同的,尽管我们丢失的一件事是集成的 ThinkPad 电源——DQ 上没有盖子可以隐藏它们。尽管如此,这还是一台非常好的机器。

Sandia 当时并没有睡着。Mitch 构建了 Minicluster II,它使用了功能更强大的 PIII 处理器。包装与 Minicluster I 非常相似。我们再次将 LinuxBIOS 移植到这个较新的节点,并且该集群被构建为有一个带一个磁盘的主节点和三个从节点。从节点在该系统上在 12 秒内启动。经过马拉松式的努力,我们在 SC 2002 上启动了这个系统,大约在灯开始熄灭的同时。尽管如此,它还是工作了。

我们使用 PIII 节点注意到的一种趋势是功耗增加。节点速度更快,技术更新,所需的功率仍然更高。更新芯片的改进的制造技术并没有带来功耗的相应降低——恰恰相反。

使用 PIII 节点构建 DQ 已不再可能——它们太耗电了。我们在一段时间内走了一条不同的道路,使用了如图 5 所示的 Advantech PCM-5823 板。有四个 CPU 板,顶部的板是来自 Parvus 的 100Mbit 交换机。这款交换机很方便——它有五个端口,因此您可以将其直接连接到您的笔记本电脑。我们需要一个全尺寸的 PC 电源来运行这个集群,但在很多方面它都非常好。我们像在早期系统中一样,通过 LinuxBIOS 和 bproc 保留了即时启动。

The Ultimate Linux Lunchbox

图 5. Geode 迷你集群需要一个全尺寸电源来应对基于奔腾 III 的节点的需求。

截至 2004 年,再次与 Sandia 的 Mitch Williams 合作,我们决定尝试再进行一次奔腾迭代的迷你集群,并将我们渴望的目光投向了 Advanced Digital Logic 的新型 ADL855PC。这一次,事情并没有像预期的那样顺利。

首先,英特尔决定限制对将 LinuxBIOS 移植到英特尔芯片组所需信息的访问,这使得 LinuxBIOS 的工作或多或少变得不可能。我们的 LinuxBIOS 启动到某个点并打印出消息,但我们始终无法正确编程内存控制器。如果您阅读我们之前关于 LinuxBIOS 的文章(请参阅在线资源),您可以猜到 romcc 代码工作正常,因为它不需要内存,但 gcc 代码永远无法工作。现有文档中模糊的提示表明我们需要更多信息,但我们无法获得它。

其次,奔腾 M 的功耗令人震惊。我们曾期望这些是低功耗 CPU,并且在适当的情况下它们可以是低功耗的,但当它们被大量使用时就不是了。当我们第一次使用随附的连接器(连接到硬盘驱动器电源)连接 ADL855PC 时,它根本无法启动。事实证明,我们必须制造一个连接器并将其直接连接到主板电源线,而不是磁盘电源线,并且我们必须保持电线非常短。该板的涌入电流足够大,以至于更长的电源线,加上高涌入电流,使得该板无法启动。如果我们没有亲眼所见,我们不会相信它。

我们原本预计奔腾 M 需要大约 2A 的电流,但实际需要的电流峰值约为 20A。一个四 CPU 迷你集群将需要 80A 峰值,电压为 5 VDC。这种系统的电源将使 CPU 相形见绌;重量将是不可能的。我们已经越过了一个奇怪的边界,进入了一个电源支配迷你集群尺寸和重量的世界。CPU 很小且很轻;电源的质量相当于一辆自行车。

只要我们有足够大的轮胎,奔腾 M 对于交流供电的迷你集群来说是可以接受的。但对于我们的下一个迷你集群来说,它不可接受。我们在 LANL 真正渴望在午餐盒中构建 16 个节点,并全部在一个 ThinkPad 电源上运行。就空间而言,PC/104 是允许的。问题是散热和功耗。

ThinkPad 电源可提供的功率是多少?对于我们从最近的 ThinkPad 获得的电源,我们可以获得大约 4.5A,电压为 16 VDC,即 72 瓦。我们使用的交换机需要 18 瓦,因此节点之间还剩下大约 54 瓦。每个节点只有 3 瓦,为电源效率低下留出了一点余量。如果节点是 5V 节点(在 PC/104 上很常见),那么我们希望每个节点的电流为 0.5A 或更小。

这个功率预算几乎排除了大多数奔腾兼容处理器。即使是低功耗 SC520 CPU 也需要 1.5A(5V 电压),即 7.5 瓦——是我们预算的两倍。我们不得不进一步寻找我们的板。

我们为这个项目选择了 Technologic TS7200 板。正如我们将要看到的,选择非奔腾架构对我们的软件堆栈有许多影响。

TS7200

TS7200 由 Technologic Systems 提供,是一款基于 StrongARM 的单板计算机。用一句俗语来说,它像砖砌的厕所一样坚固。所有组件都焊接在上面。没有散热器——您可以在没有通风的封闭盒子中运行该板。它具有内置的串行端口和以太网端口,无需外部硬件锁或模块即可进行这些连接。它在 5 VDC 电压下运行,仅需要 0.375A 或大约 2W 的功率即可运行。简而言之,该板满足我们所有的要求。图 6 是该板的图片。图 6 中还显示了一个插入板上的 CompactFlash,尽管我们在午餐盒节点上不使用它。

The Ultimate Linux Lunchbox

图 6. 来自 Technologic Systems 的 TS7200 基于 StrongARM,不需要散热器,并且仅消耗约 2 瓦的功率(由 Technologic Systems 提供)。

我们现在必须延迟的一项工作是在该板上安装 LinuxBIOS。焊接在板上的闪存芯片使得 LinuxBIOS 的开发变得困难,并且我们更关心首先使集群工作。该板确实具有带有 eCos 操作系统的自定义 BIOS,虽然不是很快速,但也没有标准 PC BIOS 那么慢。

构建午餐盒

有几个因素决定了迷你集群的形状:盒子、板的尺寸和形状以及板间距或板之间的距离。间距往往支配所有其他因素,并且由于 PC/104 的设计并非考虑到多处理器而变得复杂。PC/104 中的所有 I/O 板堆叠得都很好,只要只有一个 CPU 板即可;当我们堆叠 CPU 板时,我们就违反了规则,并且每次都会给我们带来麻烦。在所有显示的迷你集群上,板之间至少有一个空板空间。尽管如此,设计过程还是从盒子开始,然后是板的形状,然后是板间距。

首先,盒子:它与我们之前使用的盒子相同。此外,我们将使用多年来一直使用的相同的 Parvus SnapStiks 来堆叠板。我们购买了专业套装,零件号为 PRV-0912-71。SnapStik 在午餐盒形式中效果良好。一个警告:只需购买 1/4 英寸的螺纹杆即可将堆叠捆绑在一起。不要使用 SnapStik 套件随附的螺纹塑料杆。塑料杆往往会在负载下“折断”,看着您的迷你集群的碎片掉落下来,这令人感到沮丧。

其次,TS7200 节点的尺寸和形状:这里有一个小问题。这些板不是完全符合 PC/104 标准的:它们有点大。一种判断方法是 TS7200 中的两个孔不在角上。在图 7 中,孔的位置正确,但板延伸到孔的外面,使得孔离边缘太远。该板稍大一些,以便容纳右侧显示的连接器。这些连接器导致了两个问题,我们将在下面展示。

第三,堆叠:紧密的间距将使堆叠比以前的迷你集群更具挑战性。我们将不得不找到一种方法,使 SnapStiks 能够与非标准板外形尺寸和紧密间距一起工作。

为了解决 SnapStik 问题,我们花了一些时间查看支撑件如何适合板。我们能找到的最好配置是三个 SnapStiks 适合板上三个孔的配置,如图 7 所示。请注意螺纹金属杆,可在任何五金店购买到。

The Ultimate Linux Lunchbox

图 7. 显示四个 SnapStiks 中三个已连接的堆叠

对于第四个孔,我们设置了一个垫片,如图 8 所示。

The Ultimate Linux Lunchbox

图 8. 第四个孔中的垫片

垫片是我们当地五金店的简单尼龙垫片。螺栓和螺母使我们能够在板之间创建精确的间距。我们需要精确的间距来解决我们遇到的下一个问题。

这些板不能以精确的每槽一个板的间距堆叠。有一个以太网连接器需要比这多一点的空间——如果板堆叠得太近,则下部板上的以太网连接器会使上部板上的以太网连接器引脚短路。可以使用上面显示的螺母和螺栓组件轻松调整间距,但是我们如何间隔 SnapStiks 呢?

如果您查看图 8 中显示的 Geode 集群,您可以看到绿色 SnapStiks 之间的一些白色尼龙垫片。这是一种方法。但是,该间距对于将 16 个节点安装到午餐盒中来说太大了。我们只需要大约 1/32 英寸的额外间距。

建造此版本午餐盒的 Josiah England 有一个好主意:小线圈,他说他是在制作锁子甲时学会如何制作的。制造过程如图 9-11 所示。线圈增加了足够的空间,以在板之间创建足够的间隙,同时仍然允许我们将 16 个板放入午餐盒中。

The Ultimate Linux Lunchbox

图 9-11. 中世纪解决方案解决 21 世纪的硬件问题:链甲式线圈垫片(由 Josiah England 提供)。

The Ultimate Linux Lunchbox
The Ultimate Linux Lunchbox

通过此修复,我们现在有了一个间距正确的堆叠。上面显示的堆叠用 Parvus OnPower-90 电源和 Parvus 风扇板完成,您可以在顶部看到它们。该电源可以在 5V 电压下提供 18A 电流,足以满足我们的需求,以及交换机所需的 12V 电压。

我们的下一步是以太网交换机。起初,我们尝试在盖子中使用几个廉价的八端口交换机,如图 12 所示。顺便说一句,这些迷你集群始终包含一些即兴创作。所示的交换机用螺栓固定在我们部门邮箱的架子上。该架子是漂亮的灰色塑料,非常适合(一旦我们用钢锯修剪过)我们的用途。请注意漂亮的手指孔,可用于在盖子下布线。我们想认为我们使用了 Erik Hendriks 邮箱架,因为 Erik 的 bproc 工作对我们的迷你集群开发非常重要。Erik 现在在 Google 工作。

The Ultimate Linux Lunchbox

图 12. 首次尝试使用交换机:灰色面板是邮箱架。

级联交换机的工作效果非常差。节点无法可靠地连接到网络。一切看起来都很棒,有 48 个 LED,但它根本不起作用。DHCP 请求被丢弃,节点需要很长时间才能启动。

第二次尝试是获得一个 Netgear 16 端口交换机,从机箱中取出交换机并将其放入盖子中。这需要我们牺牲另一个邮箱架,但我们有很多。这种更改效果很好。现在节点启动速度非常快,因为数据包没有丢失。

您可以在图 13 中看到最终配置。请注意两个开关:一个开关控制以太网交换机和节点的电源,另一个开关控制风扇的电源。我们还不确定是否需要风扇,但我们很小心。

The Ultimate Linux Lunchbox

图 13. 最终设计:灰色金属面板上的开关之一(位于以太网插头的左侧)控制节点和以太网交换机的电源,另一个开关控制风扇。

关于以太网电缆:始终标记它们,并始终使其易于弄清楚哪根电缆连接到哪个网络交换机连接器。按某种顺序(从左到右或从右到左)将它们插入交换机。只需确保您一眼就能看出交换机上的哪个 LED 与哪个板相对应。您会很高兴您这样做了。

午餐盒软件

好的,我们已经构建了硬件。现在,软件是什么呢?

在过去几年中,它本应该是 bproc,如 Clustermatic 站点上找到的那样(参见资源)。然而,bproc 有一个问题;它无法支持异构系统。bproc 的本质(要求进程迁移工作)使得在单个系统中使用不同的架构成为不可能。我们将不得不使用其他东西。我们希望继续使用我们的 ThinkPad 笔记本电脑作为前端;据我们所知,没有 StrongARM 笔记本电脑。很明显,我们的迷你集群将需要新的软件。

幸运的是,这次迁移的时机很好。截至 2.6.13,标准 Linux 内核现在支持 Plan 9 协议。该模块称为 9p(以前称为 v9fs),支持 Plan 9 资源共享协议 9p2000。在将此代码移植到 Linux 内核的同时,贝尔实验室的 Vic Zandy 正在与我们合作开发 xcpu,这是一个 Plan 9 版本的 bproc。xcpu 的主要设计目标之一是支持异构系统。Linux 内核中的 9p 和移植到 Linux 的 xcpu 服务器的结合,使我们能够构建一个替代 bproc 的系统,该系统支持架构和操作系统的异构性。最后,2.6.13 中引入的新功能将使我们能够删除一些自定义的 Clustermatic 组件并改进其他组件。一个关键的新功能是 Eric Biederman 的 kexec 系统调用,它取代了我们的 kmonte 系统调用。

图 14 显示了标准 bproc 启动序列的快速概述,因为它在我们的迷你集群和具有数千个节点的集群中工作。

The Ultimate Linux Lunchbox

图 14. SA 组件视图

如图所示,启动序列包括 LinuxBIOS、Linux、Linux 网络设置、Linux 通过网络加载另一个内核以及 Linux 使用 kmonte 系统调用(Clustermatic 的一部分)将第二个内核启动为工作内核。为什么有两个内核?在 Clustermatic 系统中,我们将用于启动系统的操作系统与我们在正常运行期间运行的操作系统区分开来。这种区分使我们能够在保持闪存中启动内核的同时,向前移动工作内核。

新的启动序列如图 15 所示。如果它看起来更简单,那确实如此。我们不再有“启动内核”和“工作内核”。在大多数情况下,我们启动的第一个内核就足够了。经验表明,我们每 3-6 个月左右才更改一次集群上的内核。没有必要每次都启动新内核。由于 9p 协议和 xcpu 服务不会更改,并且主节点内核版本没有紧密地联系在一起,因此我们可以分离主节点和工作节点的版本要求。我们无法使用 bproc 进行这种分离。

The Ultimate Linux Lunchbox

图 15. 新的启动序列

结果是,我们可以将 StrongARM 板和奔腾前端(主节点)焊接到一个紧密耦合的集群中。事实上,我们可以轻松地将 32 位和 64 位系统与 xcpu 混合使用。我们可以获得 bproc 集群的效果,并具有更现代的内核技术。图 16 显示了我们如何为这项新技术更改 Clustermatic 组件。

The Ultimate Linux Lunchbox

图 16. Clustermatic 组件更改

结论

在本文中,我们展示了如何在小型工具箱中构建终极 Linux 午餐盒,这是一个带有集成以太网交换机的 16 节点集群。该集群由坚固的 PC/104 节点构建而成,可以轻松地在跌落测试中幸存下来,甚至可能通过机场检查。该系统只有三个连接器:一个以太网、一个交流电源插头和一个电池连接。

我们还介绍了新的 Clustermatic 软件,该软件基于受 Plan 9 启发的 9p 文件系统,现在在 2.6.13 中可用。新软件降低了 Clustermatic 的复杂性,内核修改的数量减少为零。

尽管本文没有足够的空间来描述这款新软件,但您可以关注它在 clustermatic.org 上的出现;或者,您也可以在 11 月来 SC 2005 看看我们,届时我们将运行一个混合 G5/PowerPC/StrongARM/奔腾集群,演示新软件和终极 Linux 午餐盒。

这项研究部分由美国能源部科学办公室的数学信息和计算机科学 (MICS) 计划以及洛斯阿拉莫斯计算机科学研究所 (ASCI Institutes) 资助。洛斯阿拉莫斯国家实验室由加利福尼亚大学为美国能源部国家核安全管理局运营,合同号为 W-7405-ENG-36。Los Alamos, NM 87545 LANL LA-UR-05-6053。

本文资源: /article/8533

Ron Minnich 是洛斯阿拉莫斯国家实验室集群研究团队的负责人。他从事集群计算工作的时间比他愿意想的还要长。

加载 Disqus 评论