Robert Williamson (robbiew@us.ibm.com) 软件工程师, Linux Technology Center, IBM
自动软件测试让您可以在一段时间内运行相同的测试,从而确保您所比较的内容具备真正的可比性。在本文中,Linux Test Project 团队的成员们分享了他们对 Linux? 内核进行压力所使用的测试的方法、原理以及脚本和工具。
在对 Linux 内核版本稳定性的测试中,需要明确地声明并证明为什么版本是稳定的或者是不稳定的。 然而还没有被证明和证实当前现有的系统范围内的压力测试可以测试 Linux 内核整体上的稳定性。 本文给出了一个创建系统范围内 Linux 压力测试并证明其结果正确性的方法。不同的 Linux 开发者、 用户和发行版本会使用他们自己的方法来测试内核的稳定性。不过,关于他们决定运行哪些测试、覆盖的代码、 达到的压力级别等的基础信息都没有发布,这就大大降低了结果的价值。
使用实验室的机器以及来自 Linux Test Project 测试套件的测试,我们基于系统资源的利用率统计开发了一个 测试的组合,为系统提供足够的压力。我们对这个组合测试进行了分析,以确定 Linux 内核的哪些部分在测试 执行中得到了使用。然后,我们修改了组合测试,在保持期望的高强度系统压力的同时提高代码覆盖率的百分比。 最终得到的压力测试涵盖了 Linux 内核的足够多部分,有助于稳定性声明,并且有系统使用情况和内核代码覆盖情况的数据来支持它。
分析内核代码覆盖率 获得足够的内核覆盖率是系统压力测试的另一个职责。尽管所选的测试组合充分地利用了四种主要资源,它 也有可能只是执行了内核的一小部分。因而,您应该对覆盖率进行分析以确保组合可以成为一个系统压力 测试,而不是一个系统负载生成器。当前,有两个开放源代码工具可以帮助进行 Linux 内核的代码覆盖率分析: - gcov:一个由 Linux Test Project 维护的开放源代码工具。 这个工具分析内核代码的覆盖率,并报告哪些行、函数和分支被覆盖以及它们被访问了多少次。 - lcov:另一个由 IBM 开发,由 Linux Test Project 维护的开放源代码工具。 这个工具由一组构建于基于文本的 gcov 输出之上的 Perl 脚本构成,以实现基于 HTML 的输出。 输出包括覆盖率百分比、图表以及概述页,可以快速浏览覆盖率数据。您可以自 Linux Test Project(LTP)主页 找到这两个工具(参阅 参考资料 以获得链接)。
- 内核比较:2.4 和 2.6 上的 Web 服务(developerWorks,2004 年 2 月) 描述了 IBM Linux Technology Center 的 Web 服务测试工作的成果。
- 在 改善%20Linux%20内核性能和可伸缩性(developerWorks,2003%20年%201%20月)中,%20Linux%20Technology%20Center%20Linux%20Kernel%20Performance%20团队讨论了如何量化%20Linux%20性能以%20比较一段时间内的测试结果。%20%20 %20 -%20测试 Linux 的可靠性 (developerWorks,2003 年 12 月) 为 IBM Linux Technology Center 所做的关于 Linux 内核和其他核心 OS 组件的测试结果与分析 提供了文件资料。
- Linux 内核调试器内幕(developerWorks,2003 年 6 月)向您展示了如何追踪 内核的执行并检查它的内存和数据结构。
- 在 developerWorks Linux 专区 可以找到 更多为 Linux 开发者准备的参考资料。
- 购买 Developer Bookstore Linux 区 打折出售的 Linux 书籍。
- 通过 developerWorks Subscription 使用最新的 IBM 工具和中间件来开发和测试您的 Linux 应用程序:您可以自 WebSphere?、DB2?、 Lotus?、Rational?和 Tivoli? 获取 IBM 软件,以及一个可以在 12 个月内使用这些软件的许可,所有的花费都比您想像的要低。
- 自 developerWorks 的 为您的 Linux 应用开发加油提速 专区下载可以运行于 Linux 之上的经过挑选的 developerWorks Subscription 产品免费测试版本,包括 WebSphere Studio Site Developer、WebSphere SDK for Web services、WebSphere Application Server、DB2 Universal Database Personal Developers Edition、Tivoli Access Manager 和 Lotus Domino Server。要更快速地开始上手,请参阅针对各个产品的 how-to 文章和技术支持。
关于作者 Robbie Williamson 是 IBM Linux Technology Center 的专职软件工程师。 他于 2000 年毕业于得克萨斯州立大学,获计算机科学学士学位。在他的职业生涯中, 他当过技术支持人员、验证工程师,以及各种 UNIX 实现的开发人员。Robbie 当前是 Linux Test Project 的维护者之一,可以通过 robbiew@us.ibm.com与他联系。
注:本文只代表作者的观点,并不代表 IBM 的观点。本文中讨论的研究结果的基础是 一个在实验室环境下创建并测试的方案。这些研究结果可能不会在所有的用户环境中得到,而且, 在那些环境中实现需要进行另外的步骤、配置和性能分析。在这里给出的是原封不动的信息,没有保证、 说明或暗指。本资料不是任何 IBM 产品保证的说明或组成部分。解决方案的实现和证明由实现团队负责。