文章目录
- 基准测试程序种类
- 常见测试程序概述
- 常见测试程序使用
- Dhrystone的使用
- UnixBench的使用
- CPU-Z的安装与使用
- 参考文献
现代计算机的性能测量极大地依赖于在其上运行的工作负载,为了测量和分析计算机系统的性能人们常常选择或构造一组能反映其工作负载特征的程序,称为基准程序在系统上组织和运行这些程序,测量系统此时呈现的性能状况并加以分析和比较,这种方法称为基准程序法,这是目前被用得相当普遍并被广泛承认的一种综合评价计算机系统性能的方法。
基准测试程序种类
基准测试程序(Benchmark)用来测量机器的硬件最高实际运行性能,以及软件优化的性能提升效果,可分为微基准测试程序(Microbenchmark)和宏基准测试程序(Macrobenchmark)。微基准测试程序用来测量一个计算机系统的某一特定方面,如CPU定点/浮点性能、存储器速度、I/O速度、网络速度或系统软件性能(如同步性能);宏基准测试程序用来测量一个计算机系统的总体性能或优化方法的通用性,可选取不同应用,如Web服务程序、数据处理程序以及科学与工程计算程序。
Benchmark 测试在计算机领域中最广泛和最成功的应用是性能测试, 主要测试响应时间、传输速率和吞吐量等。此外, 它也用于功能、可操作性和数据处理开发易用性等方面的测试 。按照 Benchmark 的思想, 它还可以有更广泛的用途, 但目 前性能以外有影响的 Benchmark 测试很少。
Benchmark 测试有些偏重于硬件, 有些偏重于软件, 还有些注重整个系统。在硬件方面广泛应用于评价 CPU、内存、I/O 接口和外围设备的性能, 主要测试两个方面性能指标: 一是硬 件传输数据的带宽, 称为带宽基准测试(Bandwidth benchmark) ; 二是数据传输的延迟, 称为延迟基准测试(Latency benchmark) 。在软件方面, 它用于评价操作系统、数据库和中间件以及应用 软件的数据处理能力。
Benchmark 测试根据被测试对象的不同可分为两类: 组件测试和系统测试。组件测试是指测试的重点是针对信息系统中的某一部件或某一子系统, 如 CPU、内存、磁盘、总线、文件系统、网络设备等。系统测试则是对整个计算机系统或信息系统 进行测试。在系统测试中, 由于关注点不同, 使用的 Benchmark 测试规范就不同, 则测试作用和度量指标也不同。不论是哪种 Benchmark 测试, 都必须在一个完整的计算机系统上进行, 因此, 整个系统中的所有部分都可能对 Benchmark 测试结果产生影响, 特别是硬件的配置水平、操作系统、编译器和数据库管理系统。 使用不同的 Benchmark 测试规范评价同一个被测试系统时, 可能出现不一致的测试结果。在进行同类系统比较时, 可能 出现差异较大的结果。造成这一现象的原因复杂, 但主要原因是所有的 Benchmark 测试规范有各自的侧重点, 揭示出的系统瓶颈存在差异。
不同的基准测试程序,侧重目的不同:有的测试CPU性能,有的测试⽂件服务器性能,有的测试输⼊、输出界面,有的测试⽹络通讯速度等。根据不同用途,测试程序可有专用和通用之分。现代的基准测试程序依照他们的设计目标可被分为通用计算、流式计算、移动计算、云计算等四个大类。其中通用计算又可被分为桌面和服务器两个小类。
常见测试程序概述
下面将介绍常见的一些基准测试程序。
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 是由 SGI 公司的 Larry McVoy 和 HP 公司的 Carl Staelin 设计开发的一组小型 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) 杂项, 只有处理器时钟速度测试一项。
Whetstone 它是为比较不同的计算机的浮点性能而设计的综合型基准测试程序,最早用 Algol-60 写成,后用 Fortran 改写。这是从英国国立物理实验室 1970 年是常用的数值计算程序中取出的最频繁使用的有代表性的程序段。这些程序段语句转换到称为 Whetstone 虚拟计算机上的指令,因而得名 Whetstone 基准测试程序。此基准测试程序包括整数运算,又包括浮点运算,涉及到数组下标索引,子程序调用,参数传递,条件转移和三角、超越函数等,使用系统完成的 Kwhetstone/s 数度量。
Dhrystone 它主要为测试整数与逻辑运算性能二设计的综合型基准测试程序,用 Ada,C 和 Pascal 完成,它是 CPU 密集 (CPU-intensive )型测试程序,由很多整型语句和逻辑语句的小循环组成。它使用系统完成的 Kdhrystone/s 数度量。
测试程序可访问 netlib/benchmark/dhrystone
SPEC 是 Standard Performance Evaluation cooperation 的首字母缩写,它是作为 NCGA(National computer graphics association )的一个小组 20 世纪 80 年代创立,这个小组的创始者来源于 HP,DEC,MIPS , SUN, 他们拥有一组基准测试程序以评测新机器的性能。第一组基准测试程序叫 SPEC89 ,包含 10 个程序; SPEC92 扩从到 20 个程序, 6 个整数程序,和 14 个浮点程序分别称为 SPECint92,SPECfp92 。随后 SPEC 又发布了一些新的基准测试程序(如 SPEC95,SPEChpc96,SPECweb96, SPEC2000 等)。 SPEC 原主要是测试 CPU 性能的,现在强调开发能反映真实应用(如实际负载等)的基准测试程序,并已推广至客户 / 服务器计算,商业应用, I/O 子系统等。
常见测试程序使用
下面将演示常用的基准测试程序的安装与使用。
Dhrystone的使用
下载核心程序包
http://www.roylongbottom.org.uk/classic_benchmarks.tar.gz
核心程序包下载后,在
\classic_benchmarks\source_code\dhrystone2\下可找到源代码。详细文件目录如下:
\classic_benchmarks\source_code\dhrystone2
\dhry.h --关于兼容性的原型定义
\dhry_1.c --主程序入口
\dhry_2.c --算法子程序
如果是移植到ARM Cortex-M平台下裸系统运行,一般只需要简单修改dhry.h和dhry_1.c文件即可,Dhrystone本身并没有太多移植工作,其源码本是用作在PC上运行的,而在嵌入式系统里运行仅需要把一些文件I/O的相关代码删除即可,此外就是计时函数和打印函数的重实现。
我在学校的服务器上测试,先将源代码上传到服务器,进行解压
运行主程序
gcc dhry_1.c dhry_2.c cpuidc64.o cpuida64.o -m64 -lrt -lc -lm -o dhry2
进行编译获得测试结果
Dhrystone Benchmark Version 2.1 (Language: C)
Final values:
Int_Glob: O.K. 5
Bool_Glob: O.K. 1
Ch_1_Glob: O.K. A
Ch_2_Glob: O.K. B
Arr_1_Glob[8]: O.K. 7
Arr_2_Glob8/7: O.K. 1600010
Ptr_Glob->
Ptr_Comp: * 98008
Discr: O.K. 0
Enum_Comp: O.K. 2
Int_Comp: O.K. 17
Str_Comp: O.K. DHRYSTONE PROGRAM, SOME STRING
Next_Ptr_Glob->
Ptr_Comp: * 98008 same as above
Discr: O.K. 0
Enum_Comp: O.K. 1
Int_Comp: O.K. 18
Str_Comp: O.K. DHRYSTONE PROGRAM, SOME STRING
Int_1_Loc: O.K. 5
Int_2_Loc: O.K. 13
Int_3_Loc: O.K. 7
Enum_Loc: O.K. 1
Str_1_Loc: O.K. DHRYSTONE PROGRAM, 1'ST STRING
Str_2_Loc: O.K. DHRYSTONE PROGRAM, 2'ND STRING
Register option Selected.
Microseconds 1 loop: 4.53
Dhrystones / second: 220690
VAX MIPS rating: 125.61
UnixBench的使用
首先获取软件下载地址
对压缩包进行解压
tar -xzvf unixbench-5.1.2.tar.gz
cd unixbench-5.1.2
阅读README文件,得知如果不需要进行图形测试或者不在图形化界面下测试,则将Makefile文件中GRAPHICS_TEST = defined注释掉
运行./Run
然后等待程序进行测试即可,这个过程可能比较漫长,请耐心等待
对于运行结果,说明如下:
看到run文件后,输入 ./Run 执行命令对VPS进行性能测试就开始了,最后跑完将会有一个分数在底部出现。通常情况下1000分以上的VPS是性能较好的。
CPU-Z的安装与使用
下载地址 https://www.cpuid.com/downloads/cpu-z/cpu-z_2.03-cn.exe
安装成功后,可以对计算机性能进行测试
参考文献
[1]马汉.CPU检测软件有哪些 5款检测工具介绍[J].计算机与网络,2014,40(17):30.
[2]系统测试软件CPU-Z 1.08[J].电子计算机与外部设备,2001(06):94.
[3]徐钦桂,李勇,张杰明,Guang R.Gao.基于比较策略的嵌入式系统性能基准测试研究[J].计算机工程与应用,2005(19):93-96+153.
[4]Narayanan R,Ozisikyilmaz B,Zambreno J,et al.MineBench : A Bench-mark Suite for Data Mining Workloads[C]/ /Proceedings of the Work-load Characterization,2006 IEEE International Symposium,2006.
[5]Group IR.Parboil benchmark suite [R].2007.
[6]Che S,Boyer M,Meng J,et al.Rodinia : A benchmark suite for hetero-geneous computing[C]/ /Proceedings of the 2009 IEEE International Symposium on Workload Characterization ( IISWC).IEEE ComputerSociety,2009 : 44 54.
[7]刘德才,王鼎兴,沈美明,郑纬民.计算机性能指标MIPS的适用性分析[J].小型微型计算机系统,1994(11):7-12.
[8]叶亚明,刘横.基准程序法[J].计算机学报,1992(04):295-303.
[9]13.Securis Inc.Security Benchmark.com.http: //www.securitybenchmark. com/, 2005- 10 14.
[10]M Dal Cin.Dependability Benchmarking.http: //www.esat.kuleuven. ac.be/electa/dbench, 2003- 09 15.
[11]Dave Patterson, Armando Fox.The Berkeley/Stanford Recovery- Oriented Computing(ROC) Project.http: //roc.cs.berkeley.edu/, 2005- 11
[12]Cooper B F,Silberstein A,Tam E,et al.Benchmarking cloud serving systems with YCSB[C]//Proceedings of the 1st ACM symposium on Cloud computing.Indianapolis,Indiana,USA;ACM.2010:143 -154.
[13]Ferdman M,Adileh A,Kocberber O,et al.Clearing the clouds:a study of emerging scale-out workloads on modern hardware[C]//Proceedings of the seventeenth international conference on Architectural Support for Programming Languages and Operating Systems.London,England,UK;ACM.2012:37 -48.
[14]Bienia C,Kumar S,Kai L.PARSEC vs.SPLASH-2:A quantitative comparison of two multithreaded benchmark suites on Chip-Multiprocessors[C]//Proceedings of the Workload Characterization,2008 IISWC 2008 IEEE International Symposium on Workload Characterization,2008.
[15]徐洁,王华,吴晓华,王雁东.浅析SPEC基准测试程序集及评价指标[J].实验科学与技术,2010,8(06):21-24.
[16]吕超,戴晨,张为华.计算机体系结构基准测试程序集的研究[J].计算机应用与软件,2013,30(10):189-194.
[17]刘杰,迟利华,蒋杰,徐涵,晏益慧,胡庆丰.大规模并行计算机系统性能测评体系[J].计算机工程与科学,2013,35(03):25-30.
[18]辛思达,王强,范方园,张春元. 面向通用可重构体系结构的基准测试程序集构建与评测[C]//.第十九届计算机工程与工艺年会暨第五届微处理器技术论坛论文集.,2015:162-170.