检查您的需求。 如果模拟大型主机的负载或多或少是恒定的,并且随着时间的推移不会发生太大变化,那么您就处于可以根据您的需求定制硬件的绝佳位置。这很可能让您可以使用二手硬件,从而为您节省更多资金,例如,购买一套新的环绕声系统(或者更现实地说,一台新的洗碗机)。
找出您到底需要什么的最简单方法是组装一台机器,几乎任何机器,然后看看它在实际负载下的性能如何。然后进行一些实验:如果您取出一半的 RAM,计算机是否会开始交换内存,如果放入双倍的内存,速度会加快吗?看看您是否可以使用较慢的处理器或较小的硬盘。如果可以,请从您的用户那里获得反馈。
这些试运行可能需要时间,并且看起来像是大量的工作。这里的想法是使模拟大型主机的硬件尽可能精确地适应手头的任务,以便您可以将剩余的硬件用于其他用途。此外,这些试运行可能会产生令人惊讶的结果。大多数人在构建多人系统方面的经验很少,并且倾向于高估所需的处理器强度,而低估他们需要的内存量。
例如,对于我们在 2003 年的家庭设置——两个人运行 SuSE 8.2 和 KDE 3.1,并经常使用电子邮件客户端、多个浏览器窗口、聊天和音乐播放——AMD Duron 1.0 GHz 处理器被证明是过度的。我们最终使用了一个二手的 SMP 主板,配备了两个二手的 Intel Pentium II Xeon 450 MHz CPU(是的,Pentium “two”)。进一步的实验表明,512 MB 内存稍微过多:如果您可以忍受系统偶尔进入交换空间,那么 384 MB 内存就足够了。
多处理器与单处理器 随着越来越多的人同时在一台计算机上工作,您会开始遇到单处理器机器似乎停顿的时刻。此外,如果某人的进程失控并开始占用 CPU,它可能会冻结整个系统。这很糟糕。
数十年的硬件营销已经培养出计算机用户,当速度变慢时,他们会本能地出去购买更快的处理器。但即使是最快的 CPU 也不能同时做多件事(我们在这里忽略了超线程等技巧),它只是在伪装方面更好一些。要真正同时做两件事,您需要多个处理器。这种系统通常被称为“SMP”计算机,来自 对称多处理。您可以获得配备八个或更多处理器的系统(Intel Pentium II Xeon、AMD Opteron、Intel Xeon),但在我们的价格范围内,双 CPU(双处理器)系统是最常见的。
即使在运行大量进程时,多个处理器也能在很大程度上保持系统的响应速度。但是,它不会使单个进程在具有相同速度的单处理器系统上运行速度快两倍。可视化这一点的一种方法是想象您正在洗衣服:两台洗衣机将在大约一半的时间内完成整个工作,但这并不意味着它们现在每次旋转的速度都快两倍;每次洗涤仍然需要和以前一样长的时间。情况实际上更复杂,但这仍然是一个很好的经验法则。
虽然处理器速度对于追求极致的游戏玩家或想要在他们的台式机上模拟核爆炸的人来说可能很重要,但当前的时钟速度对于正常使用来说简直是反常的。您通常可以使用比市场试图强加给您的慢得多的处理器,尤其是在您拥有多个 CPU 的情况下。这是一件好事,因为 SMP 主板比普通的单处理器主板更昂贵,而且您仍然必须购买第二个处理器。请记住,较新的(AMD Opteron / Intel Xeon)SMP 系统可能具有昂贵的需求,例如特殊的电源和超大型机箱。
多处理器主板对于模拟大型主机来说不是必须的。但是,如果您发现您的系统在多个用户下呻吟,那么添加处理器可能会比添加 MHz 更好。
(在撰写本文时,Linux 内核中还存在延迟问题。在 2.4.x 系列中,内核是不可抢占的,因此偶尔单处理器系统会在操作系统底层发生某些事情时停顿。2.6.x 内核应该更具响应性,这将是该问题以及本段的终结)。
存储:SCSI 与 IDE,RAID。您可能需要考虑使用 SCSI 而不是 IDE 作为硬盘和其他驱动器。SCSI 的一个优点是您可以将比 IDE 通常限制的四个驱动器更多的驱动器连接到一台计算机。SCSI 驱动器也更擅长在它们之间来回移动数据,而无需打扰处理器。然而,它们更昂贵,并且可能更吵。在用户少、负载低的小型系统上,您应该能够毫无问题地使用 IDE 驱动器。
如果您要构建一个系统,即使在您每天晚上刷牙后立即执行的常规备份之间,丢失数据也很重要,您可能需要考虑 RAID(廉价磁盘冗余阵列)设置。粗略地说,RAID 设置在多个硬盘上复制数据,因此如果一个驱动器崩溃,其他驱动器仍然有副本。
合理的图形。 大多数显卡迎合了对速度、速度和更快速度有着无限渴望并且口袋深度与之匹配的游戏狂热者。在模拟大型主机中,配备 128 MB 内存和令人眼花缭乱的 3D 功能的 AGP 显卡不一定是坏事,但请确保您确实需要它。一块好的二手 PCI 卡通常足以满足电子邮件和上网需求。
热量和闪电。 除了此处提到的正常硬件考虑因素外,还要考虑保护您的机器免受电源浪涌或电压骤降等威胁的部件,或确保一切保持凉爽的部件,或保护您的驱动器托架免受拿着冰棒棍的好奇小孩子的侵害。一个好的现代主板具有温度警报和各种其他功能,可帮助您监控系统的运行状况。
总结
优先考虑内存而不是处理器速度。 对于多个用户,您将使用比您预期的更多的内存和更少的 CPU 时间。
两个较慢的处理器可能比一个快的处理器更好。 更快的处理器可以在多个任务之间切换的速度比慢速处理器更快,但两个处理器根本不必切换。这意味着您可以使用较旧的硬件,即使您需要更多硬件,它几乎总是更便宜。
考虑 SCSI 和 RAID。 SCSI 代替 IDE 使您可以在一台机器上安装更多驱动器,并且它们能够在没有处理器监管的情况下自行运行。但是,SCSI 驱动器更昂贵且噪音更大。RAID 有助于保护您的数据免受硬盘故障的影响。两者都适用于更雄心勃勃的设置。
在为模拟大型主机购买硬件时,在线拍卖商是您的朋友。虽然您当地的计算机商店会试图向您推销最新的时尚产品,但在线上不乏价格实惠的上一代硬件。
关于 X 的一些背景知识。 X 窗口系统(X Windows 或简称 X)是大多数 Linux 系统使用的图形层。几乎所有当前的窗口管理器——KDE、Gnome、Blackbox——都位于 X 之上,并且几乎所有 Unix 变体都使用 X。
X Windows 有一个重要的方面,我们在模拟大型主机中进行了扩展使用:它是网络透明的。负责控制输入/输出设备——屏幕、键盘和鼠标——的软件可以在与您实际运行的程序不同的计算机上。借助 X,有可能坐在中国北京,使用 486DX 并在弗吉尼亚州兰利的超级计算机上运行您的程序。
这有很多优点。图形对于计算机来说是繁重的工作;让它们在与它们所属的程序不同的机器上处理可以减轻中央计算机的很大负担。然而,它们并没有那么困难,以至于无法由较旧的处理器处理。在计算机技术的遥远过去,有一种称为 X 终端 的专用机器,它们除了显示图形外什么也不做。如今,配备 Intel PentiumPro 或 AMD K6 且频率为 300 MHz 的备用计算机就足够了。这使您可以拥有一台运行实际程序的大型、强大的机器,以及大量廉价的小型机器来完成所有图形工作。这正是我们正在寻找的。
X Windows 确实有一些缺点。它会占用大量带宽,因此您需要快速网络。此外,一些术语很奇怪。控制屏幕、鼠标和键盘的计算机(或者更确切地说是软件)被称为“X 服务器”,因为它“服务”于实际程序,而实际程序反过来被称为“X 客户端”。在本文中,我们将坚持使用“主机”和“终端”以避免混淆。
有很多关于 X Windows 的优秀 Linux HOWTO,所以我们再次只介绍基本步骤,让您查阅特殊文本。我假设您已经在模拟大型主机上设置了 X;您的发行版应该为您处理该部分。
首先,我们必须启动处理远程 X 登录的程序。这是xdm(X 显示管理器)。根据您的系统和品味,您可能想使用 KDE 版本 kdm 或 Gnome 版本gdm代替;两者都具有更漂亮的图形和更多功能。有关更多详细信息,请查看 Thomas Chao 的 XDMCP Mini-HOWTO。通常,您需要xdm(或任何其他)在您通常用于图形的运行级别(例如,SuSE 8.2 的运行级别 5)中启动。
即使xdm正在运行,模拟大型主机也不应让您从外部连接,这具有良好的安全性。您的发行版可能会让您通过在其配置文件之一中进行简单条目来更改此设置(例如,SuSE 8.2 使用/etc/sysconfig/displaymanager)。如果您必须以硬方式执行此操作,您将需要更改/etc/X11/xdm/xdm-config和opt/kde3/share/config/kdm/kdmrc如果您正在使用kdm.
完成所有这些操作后,您就可以测试链接了。获取一台您知道具有正常运行的 X 系统的计算机,在控制台模式下启动它——不在图形模式下(SuSE 系统上的运行级别 3 而不是 5,使用init 3作为 shell 中的 root)。登录并输入
/usr/X11/bin/X -terminate -query <host> |
其中“<host>”是模拟大型主机的名称或 IP 地址。您应该获得与坐在主机上时相同的 X 登录提示。
即使您已启动到图形模式,您也可以尝试以下操作来强制 X 服务器启动第二个显示器
/usr/X11/bin/X :1 -terminate -query <host> |
这可以从终端程序(例如xterm在正在运行的显示器上)。请注意,默认情况下,第一个显示器是 :0。
文本的其余部分是在您将使用 SuSE 或 RedHat 或 Gentoo 等一些标准发行版作为模拟大型主机的假设下编写的。但是,修改 Knoppix 终端服务器软件包(请参阅 http://www.knoppix.net Knoppix)使其直接从 ramdisk 启动也应该没什么麻烦。