性能评估
性能评估是对一个系统进行各项检测,并形成一份直观的文档,因此性能评估是通过各项测试来完成的。评估的一个目的是为性能的优化提供参考,而性能优化涉及的面很广,也很复杂,而且永无止境。对于不同的应用程序,优化的方法会有一些区别。
1 基准测试程序
把应用程序中用得最多、最频繁的那部分核心程序作为评价计算机性能的标准程序。称为基准测试程序(benchmark)。
(1)整数测试程序:Dhrystone。用 C 语言编写,100 条语句。包括:各种赋值语句,各种数据类型和数据区,各种控制语句,过程调用和参数传送,整数运算和逻辑操作。
VAX-11/780z 的测试结果为每秒 1757个 Dhrystones,即:
1VAXMIPS=1757 Dhrystones/s
(2)浮点测试程序:Linpack。用 FORTRAN 语言编写,主要是浮点加法和浮点乘法操作。用 MFPOPS(Million Floating Point Operations Per Second)表示 GFLOPS、 TFLOPS。
(3)Whetstone 基准测试程序。用 FORTRAN 语言编写的综合性测试程序,主要包括:浮点运算、整数算术运算、功能调用、数组变址、条件转移、超越函数。测试结果用 Kwips 表示。
(4)SPEC 基准测试程序。SPEC 基准测试程序(System Performance Evaluation Cooperative,系统性能评估联盟)由 30个左右世界知名计算机大厂商所支持的非盈利的合作组织,包括 IBM、AT&T、BULL、Compaq、CDC、DG、DEC、Fujitsu、HP、Intel、 MIPS、Motolola、SGI、SUN、Unisys 等;SPEC 能够全面反映机器的性能,具有很高的参考价值。SPEC 以 AX-11/780 的测试结果作为基数,当前主要的基准测试程序有 SPEC int_base_rate 2000、SPEC fp_base_rate 2000和 SPEC JBB 2000 等。还有基于某种数据库运行环境下的测试,也是可以参考的数值。在采用通用基准测试程序时,要注意真实的业务流程和使用环境与通用测试基准的业务流程和使用环境的异同,这样,基准测试值才有参考价值。
(5)TPC 基准程序。TPC(Transaction Processing Council,事务处理委员会)成立于1988年,已有 40 多个成员,用于评测计算机的事务处理、数据库处理、企业管理与决策支持等方面的性能。1989 年以来相继发表的 TPC 基准测试程序包括 TPC-A、TPC-B、TPC-C、TPC-D、TPC-H 和 TPC-W 等。其中 TPC-A 用于在线联机事务处理下更新密集的数据库环境下的性能测试,TPC-B 用于数据库系统及运行它的操作系统的核心性能测试, TPC-C 则用于在线联机事务处理测试,TPC-D 用于决策支持系统测试,TPC-H 是基于 TPC-D 基础上决策支持基准测试,还有 TPC-W 是用于电子商务应用软件测试。
TPC-C 是衡量 OLTP 系统的工业标准。它测试广泛的数据库功能,包括查询、更新和排队袖珍型批处理(mini-batch)事务。这一规范在关键领域十分严格,如数据库透明性和事务处理隔离性。许多 IT 专家把 TPC-C 作为“真实世界”OLTP 系统性能的一个很好的指示器。独立审核员认证基准测试(benchmark)的结果,TPC 还有全套的公开报告。
(6)Linpack 测试。Linpack 是国际上最流行的用于测试高性能计算机系统浮点性能的测试。通过对高性能计算机采用高斯消元法求解一元 N 次稠密线性代数方程组的测试,评价高性能计算机的浮点性能。
Linpack 测试包括三类,Linpack100、Linpack1000 和 HPL。Linpack100 求解规模为 100 阶的稠密线性代数方程组,它只允许采用编译优化选项进行优化,不得更改代码,甚至代码中的注释也不得修改。Linpack1000 要求求解 1000 阶的线性代数方程组,达到指定的精度要求,可以在不改变计算量的前提下做算法和代码上的优化。HPL 即 High Performance Linpack,也叫高度并行计算基准测试,它对数组大小 N没有限制,求解问题的规模可以改变,除基本算法(计算量)不可改变外,可以采用其他任何优化方法。前两种测试运行规模较小,已不太适合现代计算机的发展。
HPL 是针对现代并行计算机提出的测试方式。用户在不修改任意测试程序的基础上,可以调节问题规模的大小(矩阵大小)、使用 CPU 数目、使用各种优化方法等来执行该测试程序,以获取最佳的性能。HPL 采用高斯消元法求解线性方程组。求解问题规模为 N 时,浮点运算次数为2/3′N3 -2N2。
因此,只要给出问题规模 N,测得系统计算时间 T,峰值=计算量(2/3′N3-2N2)/ 计算时间T,测试结果以浮点运算每秒(Flops)给出。HPL 测试结果是 TOP500 排名的重要依据。
2 Web 服务器的性能评估
在 Web 服务器的测试中,能够反映其性能的主要包括最大并发连接数、响应延迟和吞吐量(每秒处理的请求数)几个参数。
现在常见的 Web 服务器性能评测方法有基准性能测试、压力测试和可靠性测试。基准测试即采用前面所提到的各种基准程序对其进行测试;压力测试则是采用一些测试工具(这些测试工具的主要特征就是能够模拟足够数量的并发操作)来测试 Web 服务器的一些性能指标,如最大并发连接数,间接测试响应时间,以及每秒钟可以处理的请求数目。通过这种压力测试,不但可以考察 Web 服务器的各项性能指标,而且可以找到服务器的瓶颈所在,然后通过参数调整,让服务器运行得更高效。
IxWeb 是美国 IXIA 公司的一个有关 Web 测试的解决方案,它是一个高性能业务负 载生成与分析应用系统,可在 TCP 和应用层模拟现实世界的业务负载方案,能够对设备 进行强度测试、检验转发策略和验证 4~7 层的性能。IxWeb 通过模拟用户(客户端)来测试 Web 服务器。每一个 IXIA 测试仪端口都有独立的 CPU 和内存,运行 Linux 操作系统,具备完整的 TCP/IP 协议栈,每个端口可以模拟大量的 Web 客户,每个客户能够产生大量的并发连接。它还可以通过同时模拟客户端和服务器端,对内容交换机等设备进行测试。
IxWeb 能够配置会话,以模拟使用路由、交换和 NAT 环境中的用户。为了进一步测试实际应用方案,IxWeb 能够修改 TCP 参数,并提供对用户通过诸如拨号调制解调器和 DSL 等多种接入机制联网进行仿真的功能。通过配置“思考时间”(Think Times,用户操作之间的时间间隔)来对用户的行为进行仿真,还可进一步增加测试的真实性。
IxWeb 中 HTTP 1.0/1.1支持的方法包括:GET、POST、PUT、HEAD、DELETE,可以修改HTTP 客户端与服务器包头规格。IxWeb 对 SSL 的支持使用户能够模拟访问安全网站的大量 SSL 客户端会话。IxWeb 具有生成真正的 SSL 握手和 HTTPS 功能。
IxWeb 能够仿真成千上万个下载大文件的 FTP 用户及提供大量所需数据的相应设备。 IxWeb 提供了灵活的用户配置和全面的统计数字,以测定同步 FTP 用户的最大数量,以及内容交换机、负载均衡器、服务器与防火墙的吞吐量。
IxWeb 提供了广泛翔实的实时统计数字及记录日志,并可将其导出到标准文件格式,以便定制报告生成。测试一旦完成,即可以用包括 HTML 在内的多种文件格式生成内容丰富的报告。
3 系统监视
系统监视的目标是为了评估系统性能。要监视系统性能,需要收集某个时间段内的3种不同类型的性能数据:
(1)常规性能数据。该信息可帮助识别短期趋势(如内存泄漏)。经过一两个月的数据收集后,可以求出结果的平均值并用更紧凑的格式保存这些结果。这种存档数据可帮助人们在业务增长时作出容量规划,并有助于在日后评估上述规划的效果。
(2)比较基准的性能数据。该信息可帮助人们发现缓慢、历经长时间才发生的变化。通过将系统的当前状态与历史记录数据相比较,可以排除系统问题并调整系统。由于该信息只是定期收集的,所以不必对其进行压缩存储。
(3)服务水平报告数据。该信息可帮助人们确保系统能满足一定的服务或性能水平,也可能会将该信息提供给并不是性能分析人员的决策者。收集和维护该数据的频率取决于特定的业务需要。
进行系统监视通常有 3 种方式。一是通过系统本身提供的命令,如 UNIX/Liunx 中的 w、ps、last,Windows 中的 netstat 等;二是通过系统记录文件查阅系统在特定时间内的运行状态;三是集成命令、文件记录和可视化技术,提供直观的界面,操作人员只需要进行一些可视化的设置,而不需要记忆繁杂的命令行参数,即可完成监视操作,如Windows的Perfmon 应用程序。
目前,已经有些厂商提供专业化的监视平台,将上面3 种方式集成到一个统一的监控 平台,进行统一监控,并提供各类分析数据和分析报表,帮助用户进行性能的评估和诊断。 如IBM 公司提供的Tivoli、HP公司提供的Sitescope等。