计算机硬件的不断的升级带来系统处理性能持续的提高,如何对平台或系统的性能作出正确的判断就是性能测试的主要目标。
如何保证性能测试不偏不倚,而不是公说公有理婆说婆有理,就引入基准测试,即Benchmark测试。测试时,把应用程序中用得最多、最频繁的那部分核心程序作为评价计算机性能的标准程序,称为基准测试程序。
业界也有多种基准测试,有基于实际的应用种类如TPC-C,有测试系统的某一部分的性能,如测试硬盘吞吐能力的IOmeter,测试内存带宽的stream。
常识:
官网,一个用于测试I/O子系统的工具,可广泛应用于衡量磁盘、文件、网络或系统的IO性能,可用于单机或集群。下载地址,包含两个程序:
测试性能时,在Windows系统上安装Iometer图形界面程序,可以直接安装和启动Iometer,不必额外安装Dynamo。Dynamo则安装在被测试的Linux服务器上,且需要和Windows服务器处于同一个网络环境下。
Stream测试,用于测量可持续的内存带宽(MB/s),有fortran和c两类程序源码,这两种语言在数学计算方面的高效率,使得stream测试例程可以充分发挥出内存的能力。Stream对于CPU的计算能力要求很小,对CPU内存带宽压力很大。
Stream测试得到的是可持续性运行的内存带宽最大值,数组的值采用双精度,主要包括四种数组运算:
测试的一般规律是Add>Triad>Copy>Scale。一次Add和Triad操作都需要三次访问内存,Copy和Scale操作需要进行两次访问内存,访问内存次数越多越能够掩盖访存延迟,带宽越大。
参考Benchmark程序:GitHub
20世纪70-80年代开始流行的四个性能测试标准:Livermore、Whetstone、Dhrystone、Linpack,被合称为Classic Benchmark,参考:四大经典性能测试标准历史:
Whetsone于1972年所开发,主要目的是模仿60个1970年后的程序算法。其最有名的版本为Fortran版,高度反映60年代数字计算方向的综合性测试程序,主要包括:浮点运算、整数算术运算、功能调用、数组变址、条件转移、超越函数。测试结果用Kwips表示。
由Reinhold P. Weicker在1984年提出来的一个基准测试程序,其主要目的是测试处理器的整数运算和逻辑运算的性能,首先用Ada语言发布。
后来Rick Richardson为Unix开发用C语言编写的Version 1.1,成功推动Dhrystone的广泛应用。包括100条语句:各种赋值语句,各种数据类型和数据区,各种控制语句,过程调用和参数传送,整数运算和逻辑操作。
Dhrystone标准程序的测试方法,就是单位时间内跑多少次Dhrystone程序,其指标单位为DMIPS/MHz。DMIPS,即D+MIPS,表示在Dhrystone标准的测试方法下的MIPS。因为历史原因把在VAX-11/780机器上的测试结果1757 Dhrystones/s定义为1 DMIPS,因此在其他平台测试到的每秒Dhrystones数应除以1757,才是真正的DMIPS数值,DMIPS其实表示的是一个相对值。
Dhrystone与Whetsone不同之处在于其并不包括浮点运算。
官网,Standard Performance Evaluation Corporation,标准性能评估公司,美国一家非营利性公司,成立于1988年,旨在生产,建立,维护和认可一套标准化的计算机性能基准。
SPEC基准测试程序,能够全面反映机器的性能,具有很高的参考价值。
SPEC以AX-11/780 的测试结果作为基数,当前主要的基准测试程序有SPEC int_base_rate 2000、SPEC fp_base_rate 2000和SPEC JBB 2000等。还有基于某种数据库运行环境下的测试,也是可以参考的数值。在采用通用基准测试程序时,要注意真实的业务流程和使用环境与通用测试基准的业务流程和使用环境的异同,这样,基准测试值才有参考价值。
SPEC已公布如下的基准程序组:
服务器应用性能测试是一个全面衡量Web应用中Java企业应用服务器性能的基准测试,是SPEC 2002的升级版本,一个新的行业标准基准测试。
SPEC 2004测试采用JOPS(每秒总的操作次数)作为测试结果的衡量标准(SPEC 2002测试结果的衡量标准与此相同,但表示为TOPS),JOPS为订单事务数加上制造工作订单数,再除以以秒为单位的测试时间。
SPEC 2004与SPEC 2002相比,具有实质区别,它更为严格和完善,更为复杂。SPEC 2004的测试模型基于一个规模庞大、极为复杂、足以代表现实世界电子商务系统的分布式应用程序。模拟电子化业务工作模型体现了软、硬件平台整体解决方案的性能指标全面衡量应用服务器、数据库服务器硬件各子系统的性能被众多用户作为选择硬件设备的选型指标。
SPEC CPU是SPEC组织推出的CPU子系统基准测试程序。SPEC CPU的测试程序以源码形式发布,包含多种改进后的实际应用程序,可以运行在多种体系结构之上。SPEC CPU测试中,测试系统的处理器、内存子系统和使用到的编译器都会影响最终的测试性能,而I/O(磁盘)、网络、操作系统和图形子系统对于SPEC CPU 2006的影响非常的小。目前SPEC CPU的最新版本是SPEC CPU 2017,最早的是SPEC CPU 92。
SPEC CPU 2017是一套CPU子系统测试工具,包括4大类共43个基准测试。
简称 | 套件名 | 内容 | 指标 | 备注 |
---|---|---|---|---|
Intspeed | SPECspeed2017Integer | 10 integer benchmarks | SPECspeed2017_int_base、SPECspeed2017_int_peak SPEC | speed套件为每个基准运行一个副本;得分高的意味着花费的时间越少。 |
Fpspeed | SPECspeed2017 Floating Point | 10 floating point benchmark | SPECspeed2017_fp_base、SPECspeed2017_fp_peak | SPECspeed套件为每个基准运行一个副本;得分高的意味着花费的时间越少。 |
Intrate | SPECrate2017Integer | 10 integer benchmarks | SPECrate2017_int_base、SPECrate2017_int_peak | SPECrate套件为每个基准运行多个并发的副本;由测试人员选择多少个副本;得分高的意味着有更高的吞吐量。 |
fprate | SPECrate2017Floating Point | 13 floating point benchmark | SPECrate2017_fp_base、SPECrate2017_fp_peak | SPECrate套件为每个基准运行多个并发的副本;得分高意味着更高的吞吐量。由测试人员选择多少个副本 |
SPECspeed是基于时间的指标;SPECrate是吞吐量指标。
SPECspeed指标 | SPECrate指标 |
---|---|
套件中每个基准测试运行一个副本 | 测试人员自己定义运行的并发副本数 |
测试人员可以选择使用多少个OpenMP线程 | 禁用OpenMP |
对于每个基准,性能比计算如下:参考机器所用时间/SUT上的时间 | 对于每个基准,性能比计算如下:副本数(参考机器所用的时间/SUT上的时间) |
所用时间越少,分数越高 | 每单位时间做的工作越多,分数越高 |
国际最新AI算力评测标准,模拟AI训练和推理不同场景的端到端全栈流程,涵盖业界最丰富的主流AI工作负载,评估包括多个AI场景的综合性能、集群扩展性、能效等多种关键参数,可以帮助用户更好地理解算力系统的瓶颈并进行优化,是一款更贴近用户真实AI业务需求的算力测试基准
Transaction Processing Council,事务处理委员会,成立于1988年,用于评测计算机的事务处理、数据库处理、企业管理与决策支持等方面的性能。1989年以来相继发表的TPC基准测试程序包括:
Full Disclosure Report,在做完benchmark后需要提交一份报告,即FDR,包含以下内容:
FDR的目的是可以让用户可以按照报告中的描述去复现结果。
Linear System Package,Linpack是国际上最流行的用于测试高性能计算机系统浮点性能的测试。通过对高性能计算机采用高斯消元法求解一元N次稠密线性代数方程组的测试,评价高性能计算机的浮点性能。
很大程度上已被在现代架构上运行更高效的LAPACK取代。
浮点测试程序,用FORTRAN语言编写,主要是浮点加法和浮点乘法操作。用MFPOPS(Million Floating Point Operations Per Second)表示GFLOPS、TFLOPS。
Linpack测试包括三类:
High Performance Linpack,也叫高度并行计算基准测试,它对数组大小N没有限制,求解问题的规模可以改变,除基本算法(计算量)不可改变外,可以采用其他任何优化方法。前两种测试运行规模较小,已不太适合现代计算机的发展。
HPL是针对现代并行计算机提出的测试方式。用户在不修改任意测试程序的基础上,可以调节问题规模的大小(矩阵大小)、使用CPU数目、使用各种优化方法等来执行该测试程序,以获取最佳的性能。HPL采用高斯消元法求解线性方程组。
求解问题规模为N时,浮点运算次数为$\frac{2}{3} N^{3}+\frac{3}{2} N^{2}$。因此,只要给出问题规模N,测得系统计算时间T,
$峰值=\frac{\frac{2}{3} N^{3}+\frac{3}{2} N^{2}}T (FLOPS)$
测试结果以浮点运算每秒(Flops)给出。HPL测试结果是TOP500排名的重要依据。
https://www.netlib.org/benchmark/hpl/ ,最新版hpl-2.3.tar.gz
Linear Algebra PACKage缩写,是以Fortran编程语言写的,用于数值计算的函数集。LAPACK提供丰富的工具函数,可用于诸如解多元线性方程式、线性系统方程组的最小二乘解、计算特征向量、用于计算矩阵QR分解的Householder变换、以及奇异值分解等问题。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。