在支持企业应用程序方面,Linux 2.6 内核做了很多改进。本文给出了 IBM Linux Technology Center 的 Web 服务测试工作的结果,从各个不同的角度对 Linux 2.4 和 2.6 内核进行了比较。其中的亮点是 2.6 内核的关键增强功能、测试方法学和测试本身的结果。最终结果:2.6 内核提供 Web 页服务要比 2.4 快得多,并且可靠性一点也不差。
在 IBM Linux Technology Center (LTC) 进行的 Linux Web 服务测试工作的目的是发现 Linux 内核的缺陷。测试着重于与实际情况中使用 Web 服务器/应用程序服务器的企业用户环境相关的工作负荷,也着重于提高 Linux 内核的稳定性、可扩展性以及 (内核) 与 Web 服务器/实用程序服务器的兼容性。最重要的并不是识别 Web 服务器和应用程序服务器的缺陷。
测试综述
两类 Web 服务测试
有两类服务器可以用于 Web 服务:Web 服务器和应用程序服务器。在本文中,我将使用术语“Web 服务”来统一表示它们。Web 服务器 通过处理基于 HTTP 协议的请求来使网页显示在 Web 浏览器中。
应用程序服务器 是广义上的服务器,通过各种协议,其中可能包括 HTTP 协议,来向客户机应用程序公开业务逻辑。相对于 Web 服务器,它提供了更为复杂和强大的功能,例如会话管理、负载平衡、消息传递、事务管理、安全,等等。在某种意义上,应用程序服务器是 Web 服务器的超集。
我们为 Linux 内核测试环境选择了一些 Web 服务器和应用程序服务器,包括 Apache、Jakarta-Tomcat、IBM WebSphere Application Server 和 Jboss.这些大部分都是开放源代码项目,可以免费下载(请参阅 参考资料 的链接以获得更多关于这些服务器的信息)。
2.4 和 2.6 内核测试之间的差异
使用 Web 服务器和应用程序服务器作为测试工作负载,在 2.5/2.6 内核上的测试工作要比在 2.4 内核上详尽得多。在测试 2.4 内核时,仅用到了 Apache 和 WebSphere Application Server 这两个服务器作为综合测试方案的一部分。Web Performance Tool (WPT) 是所用的主要 Web 测试工具。出于偶然的机会,当内核中有大的改动或者需要验证软件,要进行 Web 服务测试。
超线程给 Web 服务器和应用程序服务器带来了很多益处。它可以增加可处理的事务的数目,提供更快的服务器响应时间,并支持服务器处理更大的工作负载和更多的用户请求。当前,Intel Pentium 4 Xeon 处理器具有内置的超线程硬件。
[NextPage]
NUMA(不一致内存访问,Non-Uniform Memory Access)
NUMA 是为提高系统性能添加到 Linux 2.6 内核的另一个主要特性。在支持多处理器的传统模型中(对称多处理,或者说是 SMP),每个处理器对内存和 I/O 有同等的访问权限。对处理器总线的高争夺率成为性能瓶项。NUMA 体系结构可以在不增加处理器总线负载的情况下提高处理器速度。在 NUMA 系统中,每个处理器距某部分内存较近而距其他内存较远。处理器被安排在称为“节点”的较小的区域中。每个节点有其自己的处理器和内存,节点间可以互相通信。处理器访问本地节点的内存要比访问不同节点的内存快。尽量减少节点间通信可以提高系统的性能。
为支持 NUMA 硬件,Linux 内核在多个范围的进行了一系列改进,包括调试器,多路 I/O,一个可以让用户可以了解用到的处理器和内存资源分配的用户级 API,和内部的内核 API 以使内核子系统了解 NUMA 拓扑。NEC Azusa、IBM x440 和 IBM NUMA-Q 是 NUMA 机器的例子。
0(1) 调度程序于 2002 年被接受并加入到官方的 Linux 2.5 内核树中。0(1) 调度程序通过改善大量进程的吞吐率提高了 Linux 的扩展性和整体上的性能,尤其是在大型的 SMP 上。0(1) 在任务和 CPU 数目巨大时可以很好地扩展,具有很强的“亲合力”,以避免任务在 CPU 之间反复移动。0(1) 调度程序还允许跨 CPU 的负载平衡和 NUMA-aware 负载平衡。
异步 I/O 是在 2.6 内核中新出现的。它为 Web 服务器和数据库等企业应用程序的扩展提供了一个途径,而不必求助用于网络连接的复杂的内部池机制。
其他改进
除了这些改进以外,还有其他一些值得一提的变化和新特性。例如,2.6 内核提供了对一些新文件系统的支持,包括 JFS、XFS、NFS v4 和 Andrew File System (AFS)。新的网络协议和特性,例如流控制传输协议 (Stream Control Transmission Protocol, SCTP)、Internet Protocol Security (IPSec)、改进的 IPv6 支持和 IP Payload Compression (IPComp),给 Linux 2.6 内核用户提供了更好地网络安全和传输质量。
不是 2.6 内核带来的提高都可以应用于每一个企业应用程序。它们中有一些需要特定的硬件和软件。无论如何,这里列出的大部分提高都是全面的内核改进,将帮助 Linux 跨入企业门槛。
测试基础设施
在这一节,我将讨论 Web 服务测试是如何进行的,包括硬件环境、选择的 Web 服务器/应用程序服务器和 Web 测试工具,以及针对典型测试情形的测试策略。以下的讨论基于 2.6 内核。
Web 服务服务器
在 Linux 2.6 内核测试中使用了四个 Web 服务服务器。两个是 Web 服务器 (Apache 和 Jakarta-Tomcat),另外两个是应用程序服务器(WebSphere Application Server 和 Jboss)。
Apache 是处于市场领导地位的 Web 服务器。Netcraft Web Server Survey 的调查结果显示,Internet 上超过 64% 的 Web 站点正在使用 Apache.它是一个开放源代码的项目。
Jakarta-Tomcat 是一个开放源代码的 servlet 容器,带有经 Apache 许可的 JSP 环境。Jakarta-Tomcat 有一个内置的 Web 服务器,也可以在产品环境中与其他 Web 服务器一起使用。
WebSphere Application Server 是一个企业级的应用程序服务器,用于动态电子商务应用程序。这个服务器的基础是 J2EE 技术和 Web Services.WebSphere Application Server 具有很高的性能,并提供了一个可以跨越大部分操作系统的高度可扩展的事务引擎。越来越多的 WebSphere 应用程序正在由传统的 Unix OS 向 Linux 迁移,因为这样可以通过更少的费用而获得近乎同样的性能。