改善 Linux 性能的第一步是对其进行量化。但如何精确地对 Linux 的性能或和他相当的系统性能进行量化呢?在本文中,IBM Linux 技术中央的成员描述了他们在去年底对 Linux 2.4 和 2.5 内核所做的几个基准程式测试,就这些专家经验,以飨读者。

现在,Linux 操作系统是最成功的开放源码项目之一。Linux 作为 Web 服务器操作系统,展示了其高可靠性,在 Web 服务器市场,他占据了很大的份额。这些 Web 服务器通常是低端及位于中间档次的系统,带有最多可达 4 路的对称多处理器(SMP);而企业级系统有更复杂的需求,譬如需要更多的处理器个数和 I/O 配置连同大的内存和带宽。为了使 Linux 为进入企业环境而作好准备,连同能够作为商业性应用进入 SMP 市场,和商业 UNIX 系统相比,他的 SMP 可伸缩性、磁盘和网络 I/O 性能、调度程式和虚拟内存管理器必须得到改善。

Linux 可伸缩性研究计划(Linux Scalability Effort,LSE)(请参阅参考资料中的链接)是个开放源码项目,解决了用于企业级机器的 Linux 内核问题,这些机器的可伸缩性达到 8 路或更高。

IBM Linux 技术中央(Linux Technology Center,LTC)的 Linux 性能团队(请参阅参考资料的相关链接)积极地参和了 LSE 活动。此外,他们的目标是,通过改进 Linux 内核性能(尤其针对 SMP 可伸缩性)而使 Linux 更优秀。

本文描述了在着重平台无关性问题的同时,该团队在测量、分析和改进 Linux 内核性能和可伸缩性上所采用的策略和方法。该团队使用了一套基准测试程式来完成此项任务。这些基准测试程式考虑到了各种工作负载,其中包括 Web 服务、数据库和文档服务。此外,我们还将向您展示每个基准测试程式所着重的各个内核组件(例如,磁盘 I/O 子系统)。

分析方法

这里我们讨论用来量化针对 SMP 可伸缩性的 Linux 性能的分析方法。假如您愿意,能够直接跳到基准测试程式结果这一节。

我们用来改进 Linux 性能和可伸缩性的策略包括:运行几个业界接受的和组件级的基准测试程式,选择合适的硬件和软件,研发基准测试程式运行规则,设定性能和可伸缩性目标,连同测量、分析和改进性能和可伸缩性。在这一节中将周详讲述这些过程。

性能被定义为单处理器(UP)或 SMP 上的原始吞吐量。我们将 SMP 可伸缩性(CPU)和资源可伸缩性(例如,网络连接数目)区别开来。

硬件和软件

这项工作的大部分都使用 IA-32(即 x86)体系结构,从 1 个到 8 个处理器。我们还研究了和为将来之用的非一致内存访问(NUMA)IA-32 和 NUMA IA-64 体系结构相关的问题。硬件的选择通常是根据基准测试程式和相关工作负载的选择。软件的选择要和 IBM 的 Linux 中间件策略和/或开放源码中间件相结合。例如:

数据库

我们采用查询数据库基准测试程式,而在硬件上,采用带大磁盘配置的 8 路 SMP 系统。数据库软件采用 IBM DB2 for Linux,SCSI 控制器是 IBM ServeRAID 4H。这个数据库是针对 8 路 SMP。

SMB 文档服务

基准测试程式是 NetBench,硬件是 4 路 SMP 系统,驱动 SMP 服务器的客户机可多达 48 个。中间件是 Samba(开放源码)。SMB 文档服务是针对 4 路 SMP。

Web 服务

基准测试程式是 SPECweb99,硬件是 8 路 SMP,并带有大内存配置,客户机可达 32 个。这个基准测试仅用于研究目的,不做他用(有关这方面的更多细节,请参阅基准测试程式这一节)。Web 服务器是 Apache,他是 IBM HTTP 服务器的基础。我们选择 8 路 SMP 是为了研究可伸缩性,而选择 Apache 是因为他支持对下一代 posix 线程(NGPT)的测量和分析(请参阅参考资料)。此外,他是开放源码,而且是最流行的 Web 服务器。

Linux 内核版本

采用哪个版本的 Linux kernel.org 内核(2.2.x、2.4.x 或 2.5.x)取决于基准测试程式;这将在基准测试程式一节做进一步讨论。为了简化管理,所选的 Linux 分发版是 Red Hat 7.1 或 7.2。我们的重点是内核性能,不是分发版的性能:我们用要评估的 kernel.org 内核和补丁替代了 Red Hat 内核。

运行规则

在配置基准测试程式期间,我们研发了运行规则以周详地指出如何安装、配置和运行基准测试程式,连同如何解释结果。这些运行规则的目的如下:

定义度量,使用此度量来测量基准测试程式的性能和可伸缩性(例如,消息/秒)。

确保基准测试程式的结果适合于测量工作负载和内核组件的性能和可伸缩性。

提供文档化的说明,这将使其他人能够重复该性能测试。

定义所收集的数据集,以便能够分析被测系统(System Under Tes,SUT)的性能和可伸缩性,从而确定瓶颈在哪里。

设定目标

针对某个基准测试程式的性能及可伸缩性和具体的 SUT(硬件和软件配置)有关。设定性能和可伸缩性目标需要:

基线测量,用来确定针对基线内核版本的基准测试程式的性能。然后计算基线可伸缩性。

最初的性能分析,用来确定增强性能的可行方向(例如,显示调度程式很忙的概要文档可能会建议尝试 O(1) 调度程式)。

将基线结果和类似的已公开结果进行比较(例如,在 spec.org 上查找类似 8 路 SMP 上相同 Web 服务器上的 SPECweb99 公开结果)。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!