$7,000 服务器对比
Linux 在非 x86 架构上的故事始于 1994 年,当时移植到了现已废弃的 Alpha 架构。随后很快出现了其他移植版本,多年来,Linux 已经获得了对大多数桌面和服务器 CPU 设计的支持。然而,如今只有五种 CPU 架构被其制造商积极推广为 Linux 兼容。本文探讨了基于非 x86 设计的入门级服务器与当前同价位的 x86 系统相比如何。
比较 x86 服务器市场通常相当枯燥。市场分为围绕 AMD Opteron 和 Intel Xeon 的两大阵营。每个阵营内部各种服务器型号之间的差异都非常小。扩展槽数量、磁盘数量和远程管理解决方案的功能似乎是唯一的区别。性能和内存容量由 CPU 和芯片组决定。
在 x86 市场之外,情况发生了变化。为了与已建立的 x86 解决方案以及英特尔可以投入 CPU 开发的大量预算竞争,IBM、Sun 和英特尔安腾团队必须具有创新精神,并将想法提升到新的高度。
x86 架构的第一个成员是英特尔于 1978 年设计的 16 位 8086。从那时起,x86 经历了漫长的发展历程。它扩展到 32 位 i386,最近又扩展到 64 位 AMD64/EMT64。尽管进行了这些扩展,但所有 x86 设计都保持了向后兼容性,即使是最新的四核 Xeon 和 Opteron 仍然可以运行 DOS。
这种向后兼容性使 x86 处理器成为台式机的标准,并主导了小型服务器市场。然而,这也是英特尔和 AMD 受到许多批评的原因。
1978 年,流水线、乱序执行和分支预测等概念已经为人所知,但并未影响 x86 指令集的设计。如今,这些功能已成为大多数 CPU 的一部分,并且需要付出很多努力才能实现这些功能。这增加了复杂性,并且在许多情况下,无法获得最佳性能。
EPIC(显式并行指令计算)是英特尔安腾处理器中使用的指令集。EPIC 由惠普和英特尔共同开发,作为惠普 PA-RISC 系列和英特尔 x86 处理器的后继产品。开发始于 1994 年,但在经历了延迟和未达到性能目标之后,该项目的目标发生了巨大变化。尽管惠普已经停止了 PA-RISC 和 Alpha 架构,并且现在销售全系列的安腾服务器,但英特尔继续开发基于 x86 的处理器,现在仅将安腾处理器定位于高端应用。
EPIC 背后的主要思想是,编译器比 CPU 更了解程序代码。关于程序的额外知识可以用于在编译时而不是在执行期间优化代码。对基于硬件的优化的需求减少,从而简化了架构。但是,该决定还需要编译器设计人员付出更多努力,并导致一些有趣的现象(请参阅“编译器问题”侧边栏)。
编译器问题
GCC 是 Linux 和许多其他平台的标准编译器。但是,GCC 长期以来一直因缺乏针对非 x86 平台的优化而受到批评。这对于安腾平台来说似乎尤其如此,因为 EPIC 是最新的指令集,GCC 开发人员优化编译器的时间最少。英特尔网站上的一份白皮书描述了,仅仅使用英特尔编译器而不是 GCC 4.1 翻译 MySQL,性能就提高了约 25%。
为了验证这一说法,我们在 HP rx2660 上重新编译了 bzip2 和 PostgreSQL 7.4.16。性能提升令人印象深刻——bzip2 提高了 29%,PostgreSQL 提高了 21%。希望英特尔和惠普将继续与 GCC 团队合作以提高性能,因为 Red Hat 和其他公司不太可能采用闭源编译器。
CMT,即芯片多线程的缩写,只是描述提高 CPU 资源利用率的方法的名称之一。CMT 不是依赖更大的缓存或更高的时钟速度,而是通过在单个处理器上提供多个执行线程来提高性能。
CMT 可以通过两种变体实现。第一种方法是使用在同一物理封装中组合的多个相同内核。这使服务器制造商能够提供每个插槽更多的处理能力,并在所有当前架构中实现。
第二种类型的 CMT 是允许一个 CPU 内核执行多个线程以提高资源利用率。这可以通过为每个线程提供专用资源,或者简单地允许主线程完全访问并将辅助线程限制为主线程未使用的资源来实现。英特尔已在许多奔腾 4 CPU 中以超线程品牌名称实现了此功能。超线程可以将执行速度提高高达 20%,但是严重依赖缓存大小的工作负载(例如本文后面讨论的 bzip2 压缩)会因启用超线程而受到影响。
Sun 在 CoolThreads T1000 和 T2000 系统中使用的 T1 处理器同时使用了两种 CMT 概念。它有八个内核,每个内核能够同时执行四个线程。为了在一个芯片上组合如此多的内核,Sun 选择实现以 1–1.4GHz 的相当低的时钟频率运行的非常基本的内核。这导致单线程执行速度较低,但 Sun 将赌注押在 32 个执行线程上,以弥补这一缺点。
Power 架构是 PowerPC 芯片的大哥,PowerPC 芯片用于当前一代游戏机、许多嵌入式系统,以及直到最近的 Mac 电脑。POWER5 处理器支持所有 PowerPC 功能,并添加了特殊的虚拟机监控程序模式。此模式类似于新的 Intel-VT 和 AMD-Pacifica 虚拟化技术,并允许在同一系统上运行多个操作系统。
IBM 的 POWER5 团队决定平衡单核性能与多核和多线程实现。结果是 POWER5 四核模块 (QCM),用于 510Q。它具有四个处理内核,并且每个内核能够运行两个独立的线程。
除了平衡设计外,IBM 还大力投资于制造技术和自动化设计工具。这使 IBM 能够达到高时钟速度,并以比竞争对手更少的精力生产出性能最高的处理器。
评测人员通常根据 CPU 和内存的数量选择服务器,然后比较价格。这对于基于 x86 的比较非常有效,但是本文涵盖的服务器差异太大,无法通过 CPU 数量或内存插槽数量进行比较。相反,本文根据成本评估服务器。换句话说,7,000 美元可以购买什么样的功能和性能?
所有服务器均购买了标准的一年保修,并且不带操作系统。内部磁盘仅用于操作系统安装。数据库和应用程序文件位于通过 LSI Ultra-320 控制器连接的外部 SCSI 磁盘阵列上。
Sun Fire T1000 是 Sun 目前销售的四款 CoolThreads 服务器中最小的一款。它是一个 1U 单元,配备 1GHz T1 处理器。根据配置,启用六个或全部八个内核。八个注册 DDR2 内存插槽支持 2 到 32GB 的配置。
四个千兆以太网端口和一个名为 ALOM(高级 Lights Out 管理器)的远程管理卡是标准配置。ALOM 是 UNIX 服务器上最易于使用且功能强大的远程管理方法之一。一个 PCI-Express 插槽可用于扩展。
与大多数 1U 服务器一样,T1000 只有一个电源。标配单个 3.5 英寸 SATA 驱动器。可选择用于两个 2.5 英寸磁盘的冷插拔驱动器托架。不提供热插拔磁盘。
为评测选择的服务器配备了八个 1GHz 内核、8GB 内存和一个 160GB 磁盘。报价为 7,322 美元,此配置略微超过了本次评测的目标价格。
由于 T1 是完整的 SPARC V9 实现,因此 T1000 可以运行 Solaris 10 和几乎所有 Solaris 应用程序。Sun 的网站还将 Gentoo 2006.1 和 Ubuntu 6.06 LTS 列为已认证。
本文中测试的 T1000 基于 Ubuntu 6.06 安装。安装很容易,但需要很多耐心,因为安装程序显然不是为在 9,600bps 终端上运行而设计的。安装向导首先擦除当前屏幕内容,然后将其完全重新绘制为空白屏幕,最后,在第三次传递中,绘制下一个屏幕,而不是用下一个屏幕覆盖当前屏幕。在 9,600bps 下,这会导致屏幕之间出现五秒的延迟。不幸的是,没有办法解决这个问题,因为秉承真正的 UNIX 精神,T1000 没有 VGA 端口。
Solaris on the T1000
Sun 提供了几份文档,其中包含有关在 CoolThreads 系统上调整 Solaris 的信息。但是,几乎没有 Linux 调整信息。为了检查缺少调整选项的影响有多大,所有测试都使用带有建议调整的 Solaris 10 11/06 重新运行。bzip2 压缩结果实际上相同,尽管其他基准测试平均提高了 10%。这 10% 的提升是源于 Solaris 10 更好的可扩展性还是广泛的调整,很难说。但是,即使存在这种差异,T1000 在大多数测试中仍然远远落后于其他解决方案。
rx2660 是惠普最新的低端 Integrity 服务器。它是第一款与 Proliant 系列共享机箱的 HP Itanium 系统。从正面看,如果不查看型号或 Intel 徽标,很难将 rx2660 与 2U DL380G5 区分开来。rx2660 甚至具有 DL380 的正面 VGA 端口——使其成为本次评测中唯一具有 VGA 输出的专有系统。
与 T1000 一样,HP 服务器具有八个内存插槽,最多可容纳 32GB 注册 DDR2 内存。然而,相似之处到此为止。rx2660 是一个双插槽系统,可以配备单核或双核处理器。单核处理器以 1.4GHz 运行,并提供 6MB 的三级缓存。双核处理器的时钟频率可以为 1.4GHz(12MB 缓存)或 1.6GHz(18MB 缓存)。
两个千兆以太网端口是标准配置,该系统具有八个 2.5 英寸热插拔 SAS 驱动器托架。根据选择的 I/O 笼,可以使用三个 PCI-X 插槽或一个 PCI-X 和两个 PCI-Express 插槽进行扩展。服务器可以采用第二个电源以实现冗余,并提供一个用于可选 iLO2(集成 Lights-Out 2)远程管理卡的插槽。
我们的测试系统配备了两个双核 1.4GHz CPU、4GB 内存和两个内部 36GB SAS 磁盘。包括 iLO2 远程管理卡,价格为 7,095 美元。
rx2660 是本次评测中最通用的单元。它支持 HP-UX 11i、OpenVMS v8.3、Windows 2003 和 Linux,而无需更改基本单元或固件。惠普目前支持 Red Hat Enterprise Linux 4 和 SUSE Enterprise Server 10。其他几种 Linux 变体,例如 Gentoo 和 Fedora,具有 Itanium2 版本,但惠普目前不提供对这些版本的支持。
本文讨论的 rx2660 基于 RHEL 4 Update 4。打开设备电源后,系统启动 EFI 固件。EFI 提示符是基于菜单的,可以非常轻松地收集系统信息和启动操作系统。但是,从 CD 启动安装后,仅打印出关于内核正在解压缩的两行信息。然后,引导过程似乎停滞了。SUSE Enterprise Server 也表现出相同的行为。
尝试安装 HP-UX 最终带来了解决方案。系统正常启动,直到屏幕上出现“Console is a serial device, no further output will appear on this output device”。从 VGA 端口切换到串行控制台后,RHEL 4 可以安装,没有任何其他问题。
在过去几年中多次更名之后,IBM 基于 Power 的服务器现在被称为 IBM System p5。由于 POWER5 处理器的虚拟机监控程序,IBM 能够实现 510Q 最显着的特性:LPAR。LPAR 是逻辑分区的缩写,允许最多 40 个操作系统实例共享同一硬件,而无需任何额外的软件。甚至可以在同一服务器上混合使用 AIX、Red Hat Linux 和 SUSE Linux。
510Q 配备了 POWER5+ 四核模块。由于散热要求,510Q 中的处理器时钟频率为 1.65GHz——远低于双核型号,后者的时钟频率为 1.9 和 2.1GHz 版本。八个插槽最多可容纳 32GB DDR2 内存。
磁盘存储由最多四个内部热插拔 Ultra-320 SCSI 驱动器提供。四个 PCI-X 插槽可用于扩展。该系统还具有两个千兆以太网控制器。
系统的背面还具有两个 HMC 端口。HMC(硬件管理控制台的缩写)是一个管理系统,可以控制在多达 48 台不同服务器上运行的多达 254 个不同的 LPAR。与许多其他 p5 型号不同,510Q 不需要 HMC 即可运行。在没有 HMC 的情况下,系统分区功能受到更多限制,但远程控制台等基本功能可以正常工作。
本次评测中使用的 p5 510Q 配备了四个 1.65GHz CPU 内核、6GB 内存和两个 73GB 磁盘。报价为 6,971 美元。
IBM 目前支持 AIX 5.2 和 5.3 以及 RHEL 4 和 SLES 9 和 10。Gentoo、Fedora 和 Debian 也提供 PowerPC 发行版。同样,本次评测基于 RHEL 4 Update 4。安装过程顺利完成,是本次评测中最简单的安装。
Proliant DL140G3 基于英特尔的四核 Xeon 5300 系列。该芯片本质上是将两个 Core 2 Duo 芯片安装在一个载体上,以适应单个处理器插槽。惠普已将两个这样的 CPU 和高达 16GB 的内存集成到一个扁平的 1U 服务器中。提供热插拔和非热插拔两种变体磁盘。非热插拔配置有空间用于两个扩展 PCI-Express 插槽。在热插拔版本中,一个插槽由 SAS 控制器使用。PCI-X 变体也可用。
本次评测中使用的 DL140G3 配备了两个 Xeon 5345、12GB 内存和两个热插拔 36GB SAS 磁盘。报价为 6,531 美元,使 DL140G3 成为本次对比中最便宜的服务器。
惠普网站列出了 Red Hat Enterprise Linux 3 和 4 以及 SUSE Linux Enterprise Server 9 和 10,均为 32 位和 64 位变体。但是,所有 64 位发行版都无法开箱即用。在惠普网站上搜索后,找到了一个建议禁用 BIOS 设置“8042 Emulation Support”的公告。关闭该选项后,安装过程没有其他意外。
可靠性和可管理性通常被认为是专有系统最重要的功能。但是,近年来,基于 x86 的服务器的管理功能有所增强。与此同时,本次对比中的低端系统已经失去了其大哥的许多功能。例如,Sun 的 T1000 甚至不提供热插拔磁盘。
因此,本文中的测试侧重于性能,并且系统必须在五种不同的场景中证明自己。
文件压缩是一项 CPU 密集型任务,I/O 要求非常低。第一个测试是在单个 bzip2 -1(最低压缩)进程压缩 2GB 文件的情况下运行的。这确定了每个系统的基线性能。然后,使用 2、4、8、16 和 32 个并发进程重新运行测试,压缩与之前相同的 2GB 文件。这些额外的进程允许系统使用更多可用的处理器资源。由于进程是独立的,因此扩展应该尽可能接近硬件允许的线性。
在第一次运行之后,所有基准测试都以最高压缩级别 -9 再次执行。正如手册页所述,更高的压缩级别显着增加了进程的内存使用量。
此测试中最有趣的结果是 T1000。正如 Sun 所述,CPU 的单线程性能非常弱。但是,一旦同时执行 32 个线程,系统就会击败 rx2660。
第二个有趣的结果是 DL140。一旦执行八个 bzip2 -9 线程,缓存(每两个内核之间共享 4MB)就无法再包含所有需要的数据。性能下降幅度很大。尽管在低并发情况下,低压缩和高压缩之间的差异低于 10%,但在 32 个线程下,差异为 111%。其他系统在两种压缩级别下都显示出几乎相同的性能。
与文件压缩一样,编译 C++ 代码是另一个 CPU 使用率高且对 I/O 和内存子系统要求低的场景。然而,主要区别在于编译器实例不是独立的。大多数 C++ 项目布局其 makefile 的方式允许 make 程序一次只启动一个目录中的编译。这限制了可以启动的编译器进程的数量。
此外,构建的几个部分,例如依赖项生成和链接,根本无法并行化。这使得 C++ 编译器测试的线程友好性大大降低,但更加真实。
本次测试的主题是 Perl 5.8.8 源代码。运行 Configure 接受所有默认值,除了库路径(Xeon 系统上缺少 /usr/lib64),并且优化设置从默认的 -O2 增加到 -O4。编译分别使用一个线程和比可用 CPU 数量多一个线程运行。
结果与压缩基准测试相似。同样,T1000 从额外的线程中获益最多,但即使在最高设置下,它也无法跟上其他解决方案。
毫无疑问,MySQL 是最著名的开源数据库;但是,其可扩展性在许多场合都受到质疑。尤其是在数据库写入百分比较高的环境中,据说性能会在较大的 SMP 系统中受到影响。这意味着依赖大量线程的系统处于劣势,而单核性能较高的系统应该表现更好。
MySQL 的确切版本取决于使用的发行版。Red Hat Enterprise Linux 4 包括 MySQL 4.1.20。运行 Ubuntu 2006.6 LTS 的 T1000 运行的是更新的版本 5.0.20。比较如此不同的版本听起来很奇怪,但这符合本文的精神——比较供应商提供的和支持的服务器。在大多数企业环境中,编译您自己的 MySQL 版本根本不是一种选择——这对于基于 Itanium 的系统来说尤其痛苦。为了提供更好的比较,T1000 也使用 MySQL 4.1.20 进行了测试。
为了测试 MySQL 性能,使用了 Sysbench 0.4.8。Sysbench 旨在创建类似于真实系统中的 OLTP 负载的工作负载。运行的确切命令是
sysbench --test=oltp --num-threads=512 --mysql-user=root ↪--max-time=240 --max-requests=0
此测试中最有趣的结果是 rx2660。尽管所有其他系统在以大量线程计数进行测试时都显示出更大的性能下降,但 Itanium 系统在负载下设法保持几乎相同的性能数字。
PostgreSQL 是另一个开源数据库。它不像 MySQL 那样普及,但是许多比较表明,由于使用的行版本机制 (MVCC),PostgreSQL 具有更好的可扩展性。Red Hat 附带了 PostgreSQL 7.4.16,而 Ubuntu 附带了 8.1
由于 Sysbench 需要 PostgreSQL 8.0 或更高版本,因此用于基准测试 PostgreSQL 的工具是 pgbench。选择的比例因子为 50。由于 pgbench 结果差异很大,因此对于每个客户端数量,测试都重新运行了 32 次,并取了最高结果。
PostgreSQL 基准测试看起来很像之前的 MySQL 结果。但是请注意,与其他系统相比,Xeon 系统的下降幅度很大。但是,T1000 从 PostgreSQL 更好的可扩展性中获益。
PHP 脚本的执行结合了 CPU、内存和磁盘使用率。为了测试目的,编写了一个小型 PHP 脚本,该脚本执行一些 MySQL 数据库查询并将输出格式化为非常简单的 HTML。额外的 CPU 负载来自脚本的编译(未使用 PHP 加速器)和脚本中间的循环。对随机文件的 fopen 调用和第一个千字节的 fread 用于模拟磁盘访问。
在此基准测试中,不同解决方案之间的性能差距比以前小得多。当完全利用时,三种专有解决方案的性能相似。T1000 仅比 POWER5 和 Itanium 系统慢几个百分点。然而,Xeon 在整个测试过程中保持了至少 35% 的领先优势。
由于本文中的测试都基于开源软件,因此没有观察到兼容性问题。当然,直接访问硬件的底层软件必须针对不同的系统进行定制,但是所有发行版都功能齐全,并且包含用于桌面和服务器用途的所有常用程序。
一旦您查看闭源软件,情况就不幸地发生了变化。Itanium 处理器得到了相当好的支持,而大多数支持 Power 平台的软件都直接来自 IBM。T1000 的情况更糟。甚至 Sun 都没有提供 Java JDK。
尽管 T1000 一直排名最后,但随着更多线程同时工作,它的表现看起来更好。但是,由于大多数 Linux 开发人员都在使用单处理器或双核系统,因此很难找到能够一次启动 32 个线程的开源应用程序。
第三名是基于 Itanium 的 rx2660。Itanium 处理器在单线程应用程序上表现良好,但最终,它始终被基于 POWER5 的 510Q 击败。借助改进版本的 GCC,英特尔和惠普肯定可以改变这种局面,但就目前而言,发行版不太可能采用专有编译器来提高性能。
八个执行线程为 IBM System p5 510Q 赢得了本次对比的第二名。510Q 击败了 T1000,并且一旦所有八个线程都被利用,它也始终领先于 rx2660。此外,在不使用 Xen 或 VMware 的情况下对系统进行分区的可能性使该系统成为专有产品中的最佳选择。
然而,最大的惊喜是 DL140G3。最初,它仅计划作为参考点,但英特尔使用最新的四核 Xeon 设计了一个非常令人印象深刻的解决方案。多年来,运行 Windows 或 Linux 的英特尔或 AMD 系统与较小的 UNIX 系统竞争良好,但以前从未有基于 x86 的系统像这样享有性能领先优势。此外,惠普在将管理功能集成到服务器方面做得非常出色。
一句话——几乎没有理由选择低端专有服务器。性能更差,并且在低端,可靠性功能相当。这是否意味着这些芯片已经过时了?绝非如此。英特尔或 AMD 系统通常不超过 16 个内核,而 UNIX 供应商提供的系统最多可达 144 个内核。但是,这些大型系统中的大多数不提供或仅提供有限的 Linux 支持。除了高 CPU 数量外,POWER5 系统的虚拟化功能也令人印象深刻——低开销且无需额外成本。
Peter Arremann 目前在 Verizon 从事系统管理、软件开发流程自动化和公司开源策略方面的工作。他使用 Linux 已超过十年,可以通过 loony@loonybin.org 联系到他。