LinMao's Blog
学习科研记录与分享!

Benchmark测试综述

简介

基准( Benchmark ) 测试是一种应用广泛、内容繁杂的测试技术,也是目前最主要的信息系统性能测试技术。

Benchmark 测试的着眼点是测试结果的可比性,即按照统一的测试规范(test specification)对被测试系统进行测试,测试结果之间具有可比性,并可再现测试结果。Benchmark测试在计算机领域中最广泛和最成功的应用是性能测试,主要测试响应时间、传输速率和吞吐量等。此外,它也用于功能、可操作性和数据处理开发易用性等方面的测试。

Benchmark测试有些偏重于硬件,有些偏重于软件,还有些注重整个系统。在硬件方面广泛应用于评价 CPU 、内存、I/O接口和外围设备的性能 ,主要测试两个方面性能指标:一是硬件传输数据的带宽,称为带宽基准测试(Bandwidth benchmark);二是数据传输的延迟,称为延迟基准测试( Latency benchmark )。在软件方面,它用于评价操作系统、数据库和中间件以及应用软件的数据处理能力。

作用

Benchmark 测试对生产商和用户都很有价值。对生产厂商的作用是为产品进行市场宣传和发现系统的瓶颈;对用户的作用是指导产品的选择。 Benchmark 测试最具吸引力的特点就是一 个 好 的 Benchmark 测 试 对 于 某 一 领 域 的 技 术 发 展 有 积 极 的导向作用, 它会引导生产厂商采用新技术改进产品。

选择 Benchmark 测试时需要有明确的目的, 当用于产品宣传 时 , 就 应 该 选 用 权 威 机 构 的 Benchmark 测 试 , 并 且 结 果 得 到其认可。而用于指导产品选择的 Benchmark 测试, 则需要清楚Benchmark 测 试 的 结 果 是 否 与 应 用 的 特 性 有 密 切 的 关 系 。Benchmark 只能模拟一定的应用环境, 不可能适用所有情况。

Benchmark测试规范

Benchmark测试发展了20多年,至今仍方兴未艾,许多组织和个人从事这方面的研究和开发。众多的Benchmark 规范或测试程序集为了不同的目的、产生于不同的背景,归纳起来有如下形式:

  1. 权威组织制定的测试标准或开发的测试程序集。它们的测试标准、测试程序和测试参数及测试报告都是公开的,如SPEC、Linpack和TPC组织的TPC系列等。
  2. 媒体机构开展的测试。一般由媒体机构建立测试实验室组织测试。测试对象一般是大众电子类产品,测试规范和测试程序不一定由测试机构开发,测试结果发布在媒体的专栏上,如 PC Magazine 采用Futuremark 3DMark05测试图像和声音处理的性能,采用 NetIQ ‘s Chariot测试VoIP的性能。
  3. 研究机构以研究为目的开发的测试规范或测试程序。这种测试结果不会由权威机构予以确认,测试程序可以免费得到 。如Wisconsin大学开发的非常有影响的 Wisconsin Bench-mark;先由 Sun 后来是 SGI 支持的LMbench;IOzone 组织开发的文件系统测试程序集 IOzone Filesystem Benchmark 。
  4. 开源测试项目开发的测试规范和测试程序。如开源的OSDB ( Open Source Database Benchmark ) 。
  5. 专业咨询公司开发的测试规范和测试程序。这类测试以盈利为目的, 如 Doculabs Web 服务基准测试 @Bench。
  6. 生产厂家自行开发的测试规范和测试程序。如 NC&AC的磁盘 Benchmark 测试系列工具集。

尽管有众多的 Benchmark 测试规范和程序集,但目前还没有官方标准化组织发布的用于计算机系统的Benchmark测试标准,生产厂商联合成立的机构和科研机构是 Benchmark 的最主要发源地。在使用 Benchmark 测试时,应根据测试的目的,搞清楚测试规范的权威性。

测试分类

Benchmark 测试根据被测试对象的不同可分为两 类:组件测试和系统测试。组件测试是指测试的重点是针对信息系统中的某一部件或某一子系统,如 CPU、内 存、磁 盘、总 线、文 件 系统、网络设备等。系统测试则是对整个计算机系统或信息系统进行测试。在系统测试中,由于关注点不同,使用的 Benchmark测试规范就不同,则测试作用和度量指标也不同。不论是哪种Benchmark 测试,都必须在一个完整的计算机系统上进行,因此, 整个系统中的所有部分都可能对 Benchmark 测试结果产生影响,特别是硬件的配置水平、操作系统、编译器和数据库管理系统。

使用不同的 Benchmark 测试规范评价同一个被测试系统时,可能出现不一致的测试结果。在进行同类系统比较时,可能出现差异较大的结果。造成这一现象的原因复杂,但主要原因是所有的 Benchmark 测试规范有各自的侧重点, 揭示出的系统瓶颈存在差异。

常用 Benchmark 测试介绍

Benchmark 测试规范和测试程序集非常多,以下只选取部分有代表性的、应用较广泛的 Benchmark 测试进行介绍。

TPC 测试集

TPC ( Transaction Processing Performance Council ) 在1988年8月由 Omri Serlin 和 Tom Sawyer 创建,最初有8个成员,目前发展为24个,其中包括国际知名厂商 bea、HP、IBM、Intel 、Microsoft和Fujitsu等。

TPC 测试从 DBMS 的 ACID、查询时间和联机事务处理能力等方面对DBMS 进行性能测试。

TPC 组织提供详细测试指导和测试结果的通过标准,在 TPC- R 、 TPC- H 、 TPC- W 和 TPC- App 标准中提供装载数据的代码,但不提供测试程序。TPC 测试的报告要求完全公开,包括测试的源代码。

SPEC

SPEC ( Standard Performance Evaluation Corporation ) 是一家非盈利公司,致力于建立、维护和认可与高性能计算机Benchmark 标准。SPEC 开发了 7 个方面的 Benchmark 测试集,发布来自于成员单位和授权单位的测试结果。

SPEC 在美国加州注册, 由 45 家成员、31家伙伴和2家支持成员构成,囊括了欧美和日本的主要计算机厂商,如 IBM、Microsoft、Oracle、HP、Fujitsu、NEC、Dell、Hitachi、Intel、Sun 等 。

SPEC 结果是具有权威性的测试结果。SPEC的测试集包括CPU、图形 / 应用处理、高性能计算机 / 消息传递接口(MPI )、Java客户机 / 服务器、邮件服务器、网络文件系统、Web 服务器等。

LINPACK

LINPACK ( Linear system Package ) 是在高性能计算机领域中最具影响的 Benchmark 测试,它使用线性代数方程组,利用选主元高斯消去法按双精度( 64 位) 算法测量求解线性方程的稠密系统所需的时间。LINPACK 的结果按每秒浮点运算次数( Flops ) 表示。

LINPACK 源于 1974 年 4 月美国 Argonne 国家实验室,该实验室的应用数学所主任 Jim Pool 提出 LINPACK 计划,并得到美国 NSF 的支持,LINPACK 计划由 Jack Dongarra主持实施。Jack Dongarra 教授不定期地发布报告《使用标准线性方程软件的各种计算机性能》。为适应计算机系统体系的发展,LINPACK 中又发展出两个项目,即 LAPACK ( Linear Algebra PACK age ) 和 EISPACK,这样可以更好地运行在共享内存的向量超级计算机上。

LINPACK 由一组 Fortran 程序组成,测试分为三种情况:

  1. 使用 LINPACK 标准程序,处理 100× 100 矩阵,不允许对程序做任何修改。
  2. 使用 LINPACK 标准程序,允许修改测试算法,追求尽可能高的性能。
  3. 针对大规模并行计算系统的测试。

IDC 平衡评价指标

IDC 平衡分级 ( Balanced Rating ) 指标是由 IDC 公司与圣迭哥超级计算机中心联合为 HPC 测试而提出的指标体系,与其它许多 Benchmark 测试的区别是:它不使用峰值指标作为评价被测系统性能的指标,而是试图用 4 个独立的分级表来更好地满足 HPC 用户的个性需求。

IDC Balanced Rating 用于测试三个领域的性能:

  1. 处理器性能;
  2. 内存系统的能力;
  3. 可伸缩能力。

IDC 平衡分级指标由 4 个分级列表组成,即 1 个综合列表和 3 个分别对应处理器、内存和可伸缩性 ( scaling ) 的分级列表。每个列表从 0 到 100 进行分级,100 是最好得分。

NPB

NPB ( Nasa Parallel Benchmark ) 是由 NASA 开发的一个用于评价并行超级计算机性能的小型程序集,又称为 NAS ( Nu-merical Aerodynamic Simulation ) Benchmark 测试。这个 Bench-mark 测试来源于流体力学计算应用。

HPPC

HPCC ( HPC Challenge ) 是由美国 DARPA ( Defense Ad-vanced Research Projects Agency )、NSF 和 DoD 通 过 DARPA HPCS ( High Productivity Computing Systems ) 计划资助的项 目,目的是为了有助于定义未来 Petascale 规模超级计算机系统的性能范围。 HPCC 测试程序集由 7 个著名计算内核( STREAM、HPL、矩 阵 乘 – DGEMM、并行矩阵转置 – PTRANS、FFT、Random-Access、带宽和延迟测试 – b_eff ) 组成,设计的目的是测试真实应用的性能,如内存访问、时空局部性等。

  1. STREAM 测试系统的内存持续访问带宽和响应计算的速度。
  2. HPL ( High Performance LINPACK ) 是 LINPACK 的 TPP( Toward Peak Performance ) 的变种版本,通过求解线性方程组测试系统的浮点计算能力。
  3. RandomAccess 测量内存随机修改速度。
  4. DGEMM 通过执行双精度实数矩阵乘法,测量浮点数的执行速度。
  5. PTRANS 测量多处理器系统的内存中大数据量数组的传输率。
  6. FFT 通过执行一维双精度离散傅立叶变换,测量浮点运算的速度。
  7. 通讯带宽和延迟测试是基于同时通讯的 b_eff ( effective bandwidth benchmark ) 。

IOzone

IOzone 由 Oracle 的 William D.Norcott 发 起,之 后 HP 公 司的 Don Capps 和 Tom McNeal 对其进行了完善。它是一个可运行 在 Linux、HP- UX、Solaris 和 Windows 系统上的文件系统Benchmark 测试工具。IOzone 的开发目的是分析计算机平台生产厂商的文件系统的 I/O 性能,为用户选择系统提供参考。IOzone 将文件系统的 I/O 作为基本负载对文件系统进行Benchmark 测试,允许测试者调整参数,包括从很小到非常大的文件和不同的访问方式。IOzone 可测试本地系统,也可测试客户机 / 服务器环境下的 NFS ( Network File System ) 客户端文件访问。

IOzone 的测试项包括:读 / 写 、重复读 / 写、后向读、跨越读、流文件读 / 写系统库函数 ( fread/fwrite )、随机读 / 写、偏移量读 / 写库函数( pread/pwrite )、POSIX 异步读 / 写和文件映射内存的系统库函数 mmap。

LMbench

Lmbench 是由 SGI 公司的 Larry McVoy 和 HP 公司的 CarlStaelin 设计开发的一组小型 Benchmark 测试程序集,它可以测试处理器、内存、网络、文件系统和磁盘中的数据传输和数据带宽。LMbench 的作者希望能够在广泛的应用领域中发现被测试系统的性能瓶颈,并能识别、隔离和再现这些瓶颈。

LMbench 由许多小测试程序组成,每个测试程序能够捕获应用中的某些特定性能问题。它遵守 GPL 许可协议, 可获得源代码。它可以运行在 AIX、BSDI、HP- UX、IRIX、Linux、FreeBSD、NetBSD、OSF/1、Solaris 和 SunOS 系统上。

LMbench 集中在测试带宽、延时和这两者的组合问题上:

  1. 带宽基准测试,可细分为:被缓冲的文件读,利用系统调用 bcopy 的内存复制、内存读、内存写、管道(Pipe) 和 TCP 传输。
  2. 延时基准测试,可细分为:进程上下文切换、组网( 其中包括:建立连接、管道、TPC、UDP 和 RPC)、文件系统的建立和删除、进程创建、信号操作、系统调用代价和内存读延时。
  3. 杂项, 只有处理器时钟速度测试一项。

 

Reference: Summary of Benchmark Performance Test

 

赞(5) 打赏
转载请注明出处:LinMao's Blog(林茂的博客) » Benchmark测试综述

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

LinMao's Blog(林茂的博客)

了解更多联系我们

觉得文章有用就打赏一下作者吧~

支付宝扫一扫打赏

微信扫一扫打赏