首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>系统管理>内核技术>正文

2.4和2.6上的Web服务

http://www.oklinux.cn  2004-01-01  来源: IBM DW  Li Ge   会员收藏  游客收藏  【 】 

在支持企业应用程序方面,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 服务测试。

    在对 2.5/2.6 内核的测试中,我们制定了更为可靠和完整的测试计划 (请参阅 参考资料,获得 SourceForge 上关于2.5 测试计划和实施计划的链接)。在计划中制定了适当的测试范围、测试方法和测试时间线。在综合测试、重点测试和用户仿真测试中,Web 服务器和应用程序服务器测试被广泛用作测试工具。

    除了使用更多的服务器以外,我们还使用了一些不同的 Web 客户机测试工具,包括 WPT、Hammerhead、Httperf 和 Pagepoker,来模拟不同类型的用户环境。所有服务器和客户机工具执行的持续时间不同 (24 小时和 96 小时),不同于持续时间固定的对最新可用内核的测试。

    此外,测试硬件不局限于基于 Intel 的单处理器系统。测试在 1 路、4 路和 8 路 IBM xSeries 机器上和 64 位 IBM PowerPC 系统上进行。内核相关的缺陷在 Linux 内核缺陷追踪系统中公开。

    2.6 内核的关键增强功能

    Web 服务在企业界扮演着重要的角色。为支持企业应用程序,2.6 内核有了显著的改进和变化。新硬件支持、软件支持和内部的内核改进给 2.6 内核带来了更好的扩展性和稳定性。2.6 内核在跨多个 CPU 和大内存时的高负载情形下性能比 2.4 更好。2.6 中将有益于企业应用程序的一些关键特性包括:

    新硬件支持

    Linux 支持范围广泛的硬件平台。2.6 内核支持新的体系结构,例如 64 位 PowerPC、64 位 AMD Opteron 和嵌入式处理器。

    超线程

    超线程是 Intel 的一项创新,是 2.6 内核所支持的主要的硬件提高。基本来说,超线程可以通过同步多线程技术(simultaneous multi-threading technology,SMT)在单个物理处理器上创建多个虚拟处理器;多个应用程序线程可以同时在一个处理器上运行。为充分利用这一特性,应用程序需要是多线程的。

    超线程给 Web 服务器和应用程序服务器带来了很多益处。它可以增加可处理的事务的数目,提供更快的服务器响应时间,并支持服务器处理更大的工作负载和更多的用户请求。当前,Intel Pentium 4 Xeon 处理器具有内置的超线程硬件。

    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 机器的例子。

    扩展的设备支持

    在 2.6 内核中支持更多类型的设备。2.6 内核还将主识别号的限制从 255 增加到 4095,并且允许每种类型可以有多于 100 万个子设备。这将给高端的企业系统以足够的支持。

    线程改进

    2.6 内核采用了新的线程库,Native POSIX Thread Library (NPTL)。这个新库基于 1:1 模型,完全符合 POSIX 标准。Red Hat 所作的测试表明,在一个老的 IA-32 双 450MHz PII Xeon 系统上,使用 NPTL 可以在 2.3 秒之内创建和销毁 100,000 个线程 (在任一时刻最多可以同时运行 50 个线程)。

    NPTL 为多线程应用程序在 SMP 环境中带来了极大的性能提高。它尤其有益于超重量级的多线程企业级应用程序,例如 Java 应用程序、Web 服务器和应用程序服务器应用程序。

    2.6 内核中另一个对线程的改进是,可分配的 PID 数目从 32,000 增加到了 10 亿。这一线程变化改善了在重负载系统中应用程序的启动性能。由于允许的 PID 上限较低,2.4 内核有时会出现应用程序请求的 PID 编号过高的情况。

    O(1) 调度程序

    0(1) 调度程序于 2002 年被接受并加入到官方的 Linux 2.5 内核树中。0(1) 调度程序通过改善大量进程的吞吐率提高了 Linux 的扩展性和整体上的性能,尤其是在大型的 SMP 上。0(1) 在任务和 CPU 数目巨大时可以很好地扩展,具有很强的“亲合力”,以避免任务在 CPU 之间反复移动。0(1) 调度程序还允许跨 CPU 的负载平衡和 NUMA-aware 负载平衡。

    I/O 改进

    块 I/O 层

    2.6 内核中的块 I/O 层被重写,以提高内核的可扩展性和性能。2.4 中的全局 I/O 请求锁不再使用。在 2.6 中块 I/O 缓冲区(kiobuf)允许 I/O 请求可以比 PAGE_SIZE 大。出现的大部分问题是由对缓冲区头和 kiobuf 的使用引起的,在这个新的层中已经得以处理。完全重写了 I/O 调度程序。对 SCSI 的支持也有了重大的改进。

    异步 I/O

    异步 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 迁移,因为这样可以通过更少的费用而获得近乎同样的性能。

    Jboss Application Server 也是一个完全具备 J2EE 特性的开放源代码的应用程序服务器。开始时 Jboss 是一个开放源代码的 EJB 容器,而现在它的目标是成为一个企业可用的应用程序服务器。

    Web 测试工具

    在网上可以获得相当多的 Web 测试工具和基准测试。下面是我们主要用来在我们的 2.6 内核测试环境中仿真 Web-客户机压力的四个开放源代码的工具(请参阅 参考资料,获得关于这些工具的更多信息):

    Httperf 是一个用来度量 Web 服务器性能的工具。Httperf 工具可以控制发出请求的速度、总连接数和超时限制。

    Hammerhead 是一个设计用于测试 Web 服务器的压力测试工具。Hammerhead 可以在任意给定的时间初始化多个来自 IP 别名的连接并模拟多个(256个以上)用户。

    PagePoker 是一个 Perl 包,它定义了一个浏览器代理,带有用于测试 Web 服务器的部件。PagePoker 附带了相应于三个不同用途的脚本,包括多客户机、压力测试和基准测试。

    Web Performance Tool (WPT) 是 IBM 开发的一个 Web 测试工具。

    除了前面讨论的用于 Web 服务测试的工具,IBM 还有一个叫做 Trade3 的工具,它是 WebSphere 端到端基准测试和性能示例应用程序。Trade3 基准测试模拟一个在线证券经纪应用程序,并提供一个真实的工作负荷来驱动 WebSphere 性能组件和部件。

    测试策略

    Web 服务测试将系统视为一个整体来尝试创建用户方案。第一次运行时测试持续时间为最初的 24 个小时。第二次运行时时间延长到 96 个小时,第三次和第四次运行分别持续 7 天和 14 天。所有的方案都基于不同的服务器和客户机工具的组合,这些服务器和客户机工具运行于最多 8-路 IBM xSeries 和 pSeries 服务器上。用系统利用率监测工具来记录内核压力程度。

    图 1 表示的是几个不同的测试工具如何辅助不同的 Web 服务器或者应用程序服务器。不同的测试工具设法模拟不同类型的用户环境。

    图 1. 测试环境

    图 2 表示的是使用 IBM WebSphere 产品和基准测试(Trade3)的压力测试环境,模拟了一个在线证券经纪环境。

    图 2. 压力测试环境

    测试结果总结

    下面的部分给出了Web 服务测试的一个简短描述,测试以我们在 2.4/2.6 内核所用的典型方案进行。在一个 8 路 SMP IBM xSeries 系统上进行的典型 Apache/WPT 测试,证明了在并不影响服务质量前提下 2.6 内核上的显著性能改进。

    测试环境

    机器:IBM xSeries Netfinity 8500R 8681-7RY

    CPU:(8) Pentium III-700MHz

    内存:9 GB

    交换空间:2 GB

    Linux 发行版本:Red Hat 7.3

    Web 服务器:Apache Http Server 2.0.47

    Web 测试工具:WPT 1.9.4

    观测结果

    两次测试在同一系统上以相同的配置完成。惟一不同的是内核的版本。

    自动的 Web 测试工具 WPT 用于模拟 Web 客户机。创建了 30 个虚拟的客户机,每个客户机有两个线程。

    在同样长的持续时间内,在 2.6 内核上 Apache 服务的 Web 数目比在 2.4 内核上多 五倍。在 2.6 内核上处理页的平均时间只是 2.4 内核上的 1/5。

    在两次 24 小时的运行中,没有发生不成功的连接,包括连接失败、先前服务器关闭、请求写失败和超时。

    表 1. 结果对照

    内核 平均 CPU 利用率 平均内存利用率 平均交换空间利用率 服务的 Web 页总数每秒服务的页处理的平均时间(毫秒)不成功的连接
    2.4.18 -smp 100%(用户:7.38% 系统:92.62%)6.41% 0% 8,845,147102.37294.440
    2.6.0–test5 99.42%(用户:39.35% 系统:60.07%)35.96%0%53,827,939 623.0057.71 0

    图 3. 服务的 Web 页与时间

    结束语

    我们已经证明,使用一个典型的测试方案 —— 在一个 8-路 SMP IBM xSeries 系统上使用 Apache/WPT —— Apache 服务器在 2.6 内核上比在 2.4 内核上具有更好的扩展性和性能。在同一个系统上,相同的工作负荷情况下,相对于 2.4.18 内核,使用 2.6.0-test5 内核的 Apache 更有效的利用系统资源,并多服务 5 倍网页。这一真实的数据证明多种特性和变化帮助 2.6 内核具备了更好的可扩展性和性能,同时更成熟地用于企业级应用程序。

    关于作者

    Li Ge 是 IBM Linux Technology Center 的专职软件工程师。她于 2001 年毕业于新墨西哥州立大学,获计算机科学硕士学位。她有三年的 Linux 工作经验,当前的工作是 Linux 内核验证和 Linux 可靠性度量。可以通过 lge-at-us.ibm.com 与她联系。

    (责任编辑:代君利)


  • 上一篇:升级内核,感受Linux新时空   下一篇:解析Linux中的VFS文件系统机制


    收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
    相关文档
    ·升级内核,感受Linux新时空
    ·解析Linux中的VFS文件系统机制
    ·Linux下PCI设备驱动程序开发基本框架
    ·Linux 2.6内核新特性比较
    ·开发人员眼中的Linux 2.6内核
    ·一个Linux爱好者的2.6.内核编译过程
    ·揭开Linux系统内核调试器的神秘面纱
    ·谈谈GCC4.0几个值得关注的新特性
    ·深入浅出 Linux设备驱动编程内核模块
    ·
    ·高手风范 Linux操作系统内核编码风格
    ·向Alan Cox——Linux内核的维护者致敬
    ·高手进阶 更换Fedora Core 6的内核
    ·Linux 2.6内核如何武装Fedora Core 2
    ·揭秘Linux内核调试器之内幕
    ·介绍RedHat AS4内核配置更改再编译
    发表评论
    密码: 匿名评论
    评论内容:

    (不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
     
      最新文档
    ·学习园地:Linux系统内核中判断大小的
    ·系统编译:如何给Make命令来传递参数
    ·Linux 2.6内核中sysfs文件系统简单概述
    ·Fedora 8 Linux系统的内核配置注意事项
    ·升级Linux内核的一般步骤方法
    ·Linux发行版知识普及:三个版本的CPUID
    ·编译安装Virtualbox驱动模块
    · Linux系统的内核解读入门
    ·新手学堂 Linux系统的内核解读入门
    ·Linux系统内核中网络参数的意义及其应
    ·走向Linux系统高手之路 内核编译过程解
    ·Linux系统中安装内核的方法详细介绍
      阅读排行
    · 深入理解LINUX内核中文版下载地址
    ·基于S3C44B0微处理器的uClinux内核引导
    ·Kernel command using Linux system ca
    ·Linux 2.6内核如何武装Fedora Core 2
    ·Process priority and control on AIX
    ·Linux操作系统的内核编译内幕详解
    ·推荐:Linux用户态与内核态的交互
    ·通过振动向Linux ThinkPad传输信息
    ·Linux操作系统源代码详细分析(二)
    ·Linux系统内核接收以太帧的处理程序
    ·Linux and symmetric multiprocessing
    ·主流嵌入式Linux系统下GUI解决方案
    ·揭秘Linux内核调试器之内幕
    ·用命令行加挂Linux的文件系统简介
    ·Linux内核和核心OS组件的测试与分析
    网摘收藏: