本文记录了 Linux 内核和其他核心 OS 组件的测试结果与分析,从库和设备驱动程序到文件系统和网络,测试范围无所不含,所有的测试都是在相当不利的条件下进行,并且经历了很长的时间。IBM Linux Technology Center 刚刚结束了这次长达三个多月的全面测试,并将他们的 LTP (Linux Test Project) 测试结果与 developerWorks 的读者共享。
IBM Linux Technology Center (LTC) 成立于 1999 年 8 月,想让 Linux 成功的共同梦想使其与 Linux 开发团体直接合作。它的 200 多名员工使之成为开放源代码开发者的较大团队组织之一。他们提供的代码范围包括,从补丁到结构化的内核改变,从文件系统和国际化工作到 GPL'd 驱动程序。他们还致力于追踪 IBM 内部进行的 Linux 相关开发。
LTC 尤其感兴趣的领域是 Linux 可扩展性、适用性、可靠性和系统管理 —— 所有的目的都是为了使 Linux 更适用于企业。他们为 Linux 团体所做出了诸多贡献,包括使 Linux 可以工作于 S/390 主机,将 JFS 日志文件系统移植到 Linux,等等。
LTC 的另一项核心任务是,以测试商业项目的方式在实验室条件下对 Linux 进行专业的测试。LTC 与 SGI、OSDL、Bull 和 Wipro Technologies 一道促成了 LTP Linux 测试项目(LTP)。下面是经过 LTP 套件在 Linux 内核上超长时间全面测试得到的结果。如您所猜,Linux 极好地承受了持续的压力的考验。
测试证明了 Linux 内核和其他核心组件在 30 天、60 天、90 天内是可靠的稳定的,可以为用户提供一个长时间运行的健壮的、企业级的环境。
对 IBM Linux Technology Center 来说,Linux 可靠性工作的目标是,使用 LTP 测试套件对 Linux 操作系统进行超长时间的测试,重点在于 Linux 用户环境相关的工作负荷(参阅 参考资料 以深入了解 LTP)。而并不是致力于证明缺陷。
本文描述的是使用 LTP 测试套件进行的 30 天与 60 天的 Linux 可靠性度量测试的测试结果和分析。测试以 SuSE Linux Enterprise Server v8 (SLES 8) 作为测试内核,以 IBM pSeries 服务器作为测试硬件。使用的是一个特别设计的 LTP 压力测试场景,在使用网络与内存管理的同时并行地运行大范围的内核组件,并在测试系统上生成高工作负荷压力。Linux 内核、TCP、NFS 和 I/O 测试组件以重工作负荷压力为目标。
下面的总结基于运行期间的测试和观察结果:
测试证明了 Linux 内核和其他核心组件在 30 天、60 天、90 天内是可靠的稳定的,可以为用户提供一个长时间运行的健壮的、企业级的环境。
pSeries 30 天 LTP 压力执行结果
观测结果:
60 天 LTP 压力执行结果:pSeries
观测结果:
表 1 列出了硬件环境。
系统 | 处理器 | 内存 | 硬盘 | 交换分区 | 网络 |
---|---|---|---|---|---|
pSeries 650 (LPAR) Model 7038-6M2 | 2 - POWER4+(TM) 1.2GHz | 8GB (8196MB) | 36GB U320 IBM Ultrastar(有其他硬盘,但没有使用) | 1GB | 以太网控制器:AMD PCnet32 |
pSeries 630 Model 7026-B80 | 2 - POWER3(TM)+ 375 MHz | 8GB (7906MB) | 16GB | 1GB | 以太网控制器:AMD PCnet32 |
pSeries 630 Model 7026-B80 和 pSeries 650 (LPAR) Model 7038-6M2 上的软件环境是相同的。表 2 列出了软件环境。
组件 | 版本 |
---|---|
Linux | SuSE SLES 8 with Service Pack 1 |
内核 | 2.4.19-ul1-ppc64-SMP |
LTP | 20030514 |
系统的稳定性和可靠性通常以连续运转时间和系统的可靠运行时间来度量。
最初运行的是一组为期 30 天的基线运转,然后增加到 60 天和 90 天的 xSeries 和 pSeries 服务器上的 Linux 测试运转。初始重点在于内核、网络和 I/O 测试。
Linux Test Project(即 LTP; 参考资料 中有链接和更多信息)是 SGI、IBM、OSDL、Bull 和 Wipro Technologies 合作的项目,目的是为开放源代码团体提供测试套件,以测试 Linux 的可靠性、健壮性和稳定性。Linux Test Project 是测试 Linux 内核和相关部件的工具的集合。目的是通过使内核测试工作自动化来帮助改进 Linux 内核。
当前,在 LTP 套件中有超过 2000 个测试用例,涵盖了内核的大多数接口,比如系统调用、内存、IPC、I/O、文件系统和网络。测试套件每月都会更新发布,可以运行于多种体系结构上。已知的 LTP 测试套件测试过的体系结构有 11 种,包括 i386、ia64、PowerPC、PowerPC 64、S/390、S/390x (64bit)、MIPS、mipsel、cris、AMD Opteron 和嵌入式体系结构。我们的可靠性测试中使用的 LTP 版本是 20030524,这是当时可以获得的最新版本。
在基线运转中有两个特别的阶段:一个 24 小时的“初始测试”,接下来是压力可靠性运转阶段,或者说是“压力测试”。
通过初始测试是开始测试的必要条件。初始测试包括 LTP 测试套件在硬件和操作系统上 24 小时的成功运转,这些硬件和操作系统将用于可靠性运转。LTP 测试套件包附带的驱动程序脚本 runalltest.sh 用于验证内核。这个脚本串行地运行一组成包的测试,并报告全部结果。也可以选择同时并行地运行几个实例。默认地,这个脚本执行:
压力测试可以验证产品在系统高使用率时的健壮性。作为 runalltest.sh 的补充,特别设计了一个名为 ltpstress.sh 的测试场景,在使用网络与内存管理的同时并行地运行大范围的内核组件,并在测试系统上生成高压力负荷。ltpstress.sh 也是 LTP 测试套件的一部分。这个脚本并行地运行相似的测试用例,串行地运行不同的测试用例,这样做是为了避免由于同时访问同一资源或者互相干扰而引起的间歇性故障。默认地,这个脚本执行:
LTP 测试套件附带的修改过的 top
工具用作系统监控工具。使用 top
可以实时地观察处理器的行为。改进的 top
工具具有附加的功能,可以将 top
结果的快照保存到文件中,并给出结果文件的平均总结,包括 CPU、内存和交换空间利用率等信息。
在我们的测试中,每 10 秒钟截取一次系统利用率(或者 top 输出文件)的快照,并保存到结果文件。另外,每天或每周要处理系统利用率的快照和 LTP 测试输出文件并得到数据分数,以确定系统在长时间运转中性能是否下降。此功能由 cron
作业和脚本控制。
测试之前
所有选定的测试系统的硬件配置尽可能相同。去掉了额外的硬件以减少潜在的硬件故障。在映像安装过程中选择最低的安全选项。预留至少 2 GB 的硬盘空间以保存 top
数据文件和 LTP 日志文件。
注意,这是一个测试场景;现实生活中,最好建议用户保持安全设置远高于最低设置。
测试期间
在测试期间系统不要受到干扰。偶尔访问一下系统以确认测试仍在进行是可以接受的。确认的手段包括使用 ps
命令、检查 top
数据和检查 LTP 日志数据。
测试之后
当测试结束后,系统监控工具 top
立刻停止。所有的 top
数据文件,包括每天或每周的快照和 LTP 日志文件,都被保存并处理,以便为分析提供数据。
本文论述的结果基于一个在实验室环境下创建并测试的解决方案。这些结果可能并不是在所有的环境中都可以得到,而且在这种环境中实现可能还需要另外的步骤、配置和性能分析。
然而,由于大部分的 Linux 内核测试工作历时都比较短,因此本系列测试为我们提供了长时间运转的第一手数据和结果。本系列测试还提供了高工作负荷压力下 Linux 内核组件以及 TCP、NFS 和其他测试组件的数据。测试证明,Linux 系统在长时间内是可靠的和稳定的,可以提供一个健壮的、企业级的环境。
Li Ge 是 IBM Linux Technology Centeris 的助理软件工程师。她于 2001 年毕业于新墨西哥州立大学,获计算机科学硕士学位。她有三年的 Linux 工作经验,当前的工作是 Linux 内核验证与 Linux 可靠性度量。可以通过 lge@us.ibm.com 与她联系。
Linda Scott 是一名高级软件工程师,毕业于杰克逊州立大学,毕业以来一直在 IBM 开发实验室工作。在 IBM 的工作生涯中,她曾参与过多个 Unix 和 Linux 项目的开发,当前致力于 Linux Test Project,这个项目已经为开放源代码团体提供了 2000 多个测试用例。可以通过 lindajs@us.ibm.com 与她联系。
Mark VanderWiele 是 IBM Linux Technology Center 的高级技术人员、架构师。他 1983 年毕业于佛罗里达州立大学,他的大部分工作是致力于操作系统开发的各个方面。可以通过 markv@us.ibm.com 与他联系。