基准程序(benchmark)是为评估一台机器而执行的程序。通常,基准程序是一个生产程序(production program),它代表了安装时的很多工作。
概述基准程序(benchmark)是为评估一台机器而执行的程序。通常,基准程序是一个生产程序(production program),它代表了安装时的很多工作。评估人员非常熟悉现有设备上的基准程序的性能,因此,当它在新设备上运行时,评估人员可以得出有意义的结论。一些组织,诸如标准性能评估公司(Standard Performance Evaluation Corporation,SPEC;WWW.specbench.org)和商业应用性能测试公司(Business Application PerformanceCorporation,BAPCo:WWW.bapco.com),已经开发了适用于不同系统(例如,Web服务器或个人计算机)的工业标准的基准程序。评估人员可以运行这些基准程序来比较不同厂商生产的相似系统。
基准程序评估的一个优点是目前已有很多这样的基准程序,因此评估人员只需从已知的生产程序中选择它们,或者使用工业标准的基准程序。这种方法不用对各指令进行计时,而是让整个程序在真实的机器上用真实的数据运行,因此计算机完成了绝大部分工作。人工错误的机会被最小化,因为基准程序的时间是由计算机本身测量的。在诸如多道程序系统、分时系统、多处理系统、数据库、数据通信和实时系统等环境下,基准程序特别有用,因为它们在真实环境中的真实机器上运行。这些复杂系统的效果可以直接体验到,而不是通过估计。
开发基准程序时应考虑若干标准。首先,测试结果应该是可重复的;特别是,在相同的系统上运行基准程序时,每次产生的结果应接近相同。运行结果不一定相等,而且也很少会相同,因为一些环境相关的细节(诸如一个数据项在磁盘上的存储位置)会影响运行结果。其次,基准程序应准确反映在真实系统上执行的应用程序的类型。最后,基准程序应当得到广泛使用,以便可以对系统作出更准确的比较。一个良好的工业标准的基准程序将具备所有这些性质,然而,后面两个标准往往会导致冲突的设计决策。某个系统专用的基准程序,可能无法广泛使用;而一个旨在测试多个系统的基准程序,对某个特定的系统可能不能产生准确的测试结果。
基准程序不仅适用于评估软件,而且也适用于评估硬件,甚至可以评估它们在复杂操作环境下的性能。它们也特别适合于比较对系统作出某些变更前后系统的操作。然而,基准程序不适合预测计划变更的效果,除非存在另一个系统也作了相同的变更,并且基准程序可以在它上面运行。
当组织和消费者决定从若干竞争厂商那里购买哪种设备时,基准程序可能是最广泛使用的技术。由于这种广泛性,产生了行业标准的基准程序的需求。SPEC成立于1988年,为了推动标准的、相关基准程序的制定。SPEC公布了各种基准程序(通常称为SPECmarks),它们可用来评测各种各样的系统(从服务器到Java虚拟机),并且公布了用那些SPECmarks测试上千个商业系统的性能结果。有了SPEC评估,就可以作出基于可靠信息的决策,决定采购哪些计算机元件。然而,在评估特定的平台时,首先必须认真确定每次SPECmark测试的核心。例如,SPECweb测量那些通常运行Web服务器的系统,而不应当用它们来比较在不同环境中执行的系统。29如果某个特定的Web服务器的环境不同于一个“典型的”环境,则SPEC评估可能不恰当。此外,SPEC的某些基准程序因适用范围狭窄而受到批评,尤其是受到那些怀疑“典型”负荷可以准确地近似一个特定系统的真实工作量的假设的人的批评。为了突破这样的限制,SPEC不断地重新设计基准程序,以改进它们与当前系统的相关性。
除了著名的SPEC和它的基准程序以外,还有许多其他流行的基准程序和基准测试组织。这其中包括BAPCo,它也产生了几个基准程序,包括流行的Sysmark基准程序(适用于桌面系统)、MobileMark(适用于安装在移动设备上的系统)和WebMark(适用于Internet性能测试)。其他流行的基准程序包括事务处理性能委员会(Transaction ProcessingPerformance Council,TPC)基准程序(以数据库系统为目标),以及标准应用(StandardApplication,SAP)基准程序(适用于评估系统的可伸缩性)。1
SPEC基准程序系列SPEC基准程序系列是由名为Standard Performance Evaluation Corporation作盈利公司所开发的。SPEC强调开发实际应用基准程厅以求更确切地反映实际工作负载,而不采用小的合成核心。对每个基准程序和基准程序组,SPEC定义了少量的(大多数情况为2个)指标以测量整个系统的总性能。
SPEC以测量CPU性能的基准程序作为出发点,但已向客户机/服务器计算,商业应用以及I/O广系统等方面扩展。目前SPEC已公布如下的基准程序组:
SPEC 95:测量CPU、存储器系统和编译器代码生成性能。
SPEC hpc 96:测量运行工业型应用程序的高性能计算系统的性能。目前它包括两个基准程序:地震处理基准程序SPEC seis 96和计算化学基准程序SPEC chem 96。
SPEC web 96:测量基于由现实世界WWW服务器运行记录而获得的工作负载的Web服务器性能。
SFS:为系统级文件服务器基准程序,它包含有LADDIS基准程序并测量不同负载情况下的NFS文件服务器的响应时间和吞吐率。
SDM:为系统开发多仔务基准程序,测量一个系统如何处理一个有大量用户发出典型的Unix软件开发命令(如make、cp、grep及spell等)的环境。它含有两个由Unix shell脚本构成的多用户Unix命令基准程序。
GPC:图形性能特征描述基准程序,测量图形学性能。它包含3个正在不断发展的研究项目。图片级基准程序(Picture Level Benchmark,PLB)测量“每秒向量数”和“每秒多边形数”图形处理能力、X性能特征描述(X Performance Characterization,XPC)项目开发了Xmark 93基准程序测试工具以测量X窗口性能。Open GL性能特征描述(Open G1 Performance Characterization,OPC)项目已开发了Viewperf基准程序以测量Open GL性能。2
本词条内容贡献者为:
李岳阳 - 副教授 - 江南大学