/var/opinion - 并行正在兴起

作者:Nicholas Petreley

我从 20 世纪 80 年代开始撰写关于计算机的文章。我不想说具体是哪一年,也不想计算我从事这项工作多久了。这让我感觉自己老了。

从那时起,我做了很多预测。有些预测让我面红耳赤,感到尴尬。有些预测非常准确。有些预测尚未实现,但我仍然认为我的预测是正确的。

我最早的预测之一相当容易,但在 20 世纪 80 年代被认为是颇具争议的。我说,我们迟早会触及摩尔定律的极限,而唯一可行的答案将是并行处理。瞧,双核处理器现在很常见,而且很快我们就会看到四核处理器,而 PlayStation 3 中的多核 Cell 处理器也即将问世。

自然而然地,下一个合乎逻辑的步骤是集群或其他分布式处理方式。在这里我开始感到紧张。当“网格计算”成为流行语时,我的本能反应是“不,谢谢”。我不再在公司办公室工作了,但如果我还在那里工作,除非我确信一切都在完全隔离的沙箱中运行,否则我不会希望公司将处理任务卸载到我的桌面工作站。例如,将网格进程放在 Linux 上的 chroot 环境中。即便如此,我也不确定我会对这个想法感到满意。如果我想做一些计算密集型的事情,而网格进程决定它比我更需要我的 CPU 周期怎么办?这不应该发生,但既然一切都掌握在某个有自己议程的管理员手中,我为什么要相信它不会发生呢?

缺乏控制和对安全漏洞的恐惧让我感到紧张。我家中有四台计算机从不关机,还有两台用于特殊用途的计算机,我根据需要打开。除非我的女儿在浏览网页,或者我的儿子在玩 魔兽世界,否则我的孩子们使用的两台旧电脑大部分时间都处于闲置状态。我使用一台服务器作为打印机、文件和电子邮件等资源的集中提供者。这是一台非常旧的机器,但考虑到它的用途,它从不费力。所有这些都代表着巨大的处理能力浪费。我很想利用家里那些未使用的电力。这是一个安全的环境,因为我不是在谈论将我的处理能力暴露给互联网上的所有人。我谈论的是在本地机器上分配工作负载。

然而,原则上,Sun 公司一直是对的,当它说“网络就是计算机”时。其他公司,如 IBM,在 Sun 公司之前就沿着同样的思路工作,但我不知道有哪家公司比 Sun 公司说得更好。“网络就是计算机”是一个强有力的短语。只要在分布式处理的各个方面都内置了足够的安全性,那么将通用服务作为远程过程调用提供,并将所有可以想象到的工作负载分配到您想要提供给系统的尽可能多的计算机上,就完全有道理了。如果有人能让我对安全性和控制感到放心,我就会大规模地接受分布式处理。

以下是我看到的挑战。首先,存在异构平台的问题。如何在具有不同处理器和不同操作系统的机器之间分配工作负载?ProActive 是几个优秀的平台无关分布式计算平台之一(参见 www-sop.inria.fr/oasis/ProActive)。它是 100% 纯 Java 编写的,因此它可以运行在任何支持 Java 的平台上。它有一个很棒的图形界面,让您可以管理分配作业负载的方式。您可以真正地将一个进程从一台计算机拖放到另一台计算机上。

问题是像 ProActive 这样的工具不适合我想要分配计算的方式。我希望它像将双核处理器插入我的机器一样透明。不幸的是,即使您在所有机器上都运行 Linux,您也无法获得这种透明度。我能想到的最接近它的东西是 distcc,它可以让您在编译程序时分配工作负载。即使这样,也需要您在所有机器上安装相同版本的编译器(以及可能还有其他工具)。如果您希望它成为一件轻而易举的事情,您几乎必须在所有机器上安装相同版本的 Linux 发行版。

这里的底线是,我闻到了 Linux 的机会。我很想看到一个项目,使 Linux 上的分布式计算变得非常透明且与发行版无关。我谈论的是启动任何计算密集型应用程序的能力,并使其自动将工作分配到网络上配置为接受作为另一个“处理器核心”的其他机器上。您可以通过将其构建到核心用户空间 API 中来使应用程序透明地实现这一点。您可以像管理任何其他网络服务一样管理它。这是否太不切实际了?我很想听听您的意见。

Nicholas Petreley 是Linux Journal 的主编,也是一位前程序员、教师、分析师和顾问,他从事 Linux 工作和撰写 Linux 相关文章已有十多年。

加载 Disqus 评论