第5章 · 播客 第3集
系统性能评价 · 基准测试程序:Dhrystone 到 TPC 全家族
🎙️ 本集播客:第3集:六种基准测试程序逐条辨析——Dhrystone、Linpack、Whetstone 的语言与单位对照,SPEC 的组织与厂商名单,TPC-A/B/C/D/H/W 六个型号一个一个对(衡量 OLTP 系统的工业标准到底是哪个),Linpack100/1000/HPL 三类的优化尺度与 HPL 和 TOP500 的关系;再把 Web 服务器评测和时钟频率法、指令执行速度法、等效指令速度法、数据处理速率法、基准程序法的适用性排一遍队。 语音由微软 Edge 神经网络语音预生成(女声·晓伊,男声·云希)。点击下方任意对话可直接从该句开始播,当前句朗读时下一句已预先加载,无缝衔接。
明
阿明
上集把性能指标和计算公式全过完了,MIPS、MFLOPS、理论浮点峰值、吉普森法我都能默写了。这集是不是该讲那些名字奇奇怪怪的测试程序了?
雅
小雅
对,我们进 5.4 性能评估。先把定义摆正:性能评估是对一个系统进行各项检测,并形成一份直观的文档,因此性能评估是通过各项测试来完成的;评估的一个目的是为性能的优化提供参考,而性能优化涉及的面很广,也很复杂,而且永无止境。那测试靠什么?靠基准测试程序。原文的定义一字不改——把应用程序中用得最多、最频繁的那部分核心程序作为评价计算机性能的标准程序,称为基准测试程序,英文 benchmark。
明
阿明
「用得最多、最频繁的那部分核心程序」,这句听起来就是定义题的原句。
雅
小雅
就是原句。选项里常把它改成「把整个应用程序拿来跑」或者「用得最少的那部分」,一看就能排掉。这集要过六种基准程序,我按原文的编号顺序来,你抓三件事:用什么语言写的、测什么、结果用什么单位。第一种,整数测试程序 Dhrystone。
雅
小雅
Dhrystone 用 C 语言编写,100 条语句。包括:各种赋值语句,各种数据类型和数据区,各种控制语句,过程调用和参数传送,整数运算和逻辑操作。它的标定结果要记住——VAX-11/780 的测试结果为每秒 1757 个 Dhrystones,也就是 1 VAXMIPS 等于 1757 个 Dhrystones 每秒。
明
阿明
1757 这个数字够怪,但正因为怪所以好记。第二种呢?
雅
小雅
第二种,浮点测试程序:Linpack。用 FORTRAN 语言编写,主要是浮点加法和浮点乘法操作。结果用 MFLOPS 表示,全称 Million Floating Point Operations Per Second,每秒百万次浮点运算,量级往上还有 GFLOPS、TFLOPS。语言这一栏就是第一个坑——Dhrystone 是 C,Linpack 是 FORTRAN,选项最爱把这两个对调。
雅
小雅
第三种,Whetstone 基准测试程序。也是用 FORTRAN 语言编写的综合性测试程序,主要包括:浮点运算、整数算术运算、功能调用、数组变址、条件转移、超越函数。测试结果用 Kwips 表示。
明
阿明
Dhrystone 和 Whetstone 名字长得跟双胞胎一样,考场上我肯定分不清。
雅
小雅
给你一句口诀。D 打头的 Dhrystone:C 语言、只测整数、单位是 Dhrystones 每秒;W 打头的 Whetstone:FORTRAN、综合性测试、单位是 Kwips;夹在中间的 Linpack:FORTRAN、浮点、MFLOPS。还有一个杀招——「综合性测试程序」这五个字,原文只安在 Whetstone 身上,谁把它安到 Dhrystone 头上,那个选项就是错的。
明
阿明
整数看 D、浮点看 Linpack、综合看 W。第四种是 SPEC 吧?本章开篇的指标清单里就出现过 SPEC-Int 和 SPEC-Fp。
雅
小雅
对,第四种 SPEC 基准测试程序,全称 System Performance Evaluation Cooperative,系统性能评估联盟。它的组织属性要背下来:由 30 个左右世界知名计算机大厂商所支持的非盈利的合作组织,包括 IBM、AT&T、BULL、Compaq、CDC、DG、DEC、Fujitsu、HP、Intel、MIPS、Motolola、SGI、SUN、Unisys 等。
雅
小雅
原文给 SPEC 的评价很高:SPEC 能够全面反映机器的性能,具有很高的参考价值;开篇那段还专门说过一句——SPEC 已经成为测试 CPU 的最权威的性能测试标准。基数方面,SPEC 以 VAX-11/780 的测试结果作为基数,跟 Dhrystone 用的是同一台老机器。
雅
小雅
当前主要的基准测试程序有 SPEC int_base_rate 2000、SPEC fp_base_rate 2000 和 SPEC JBB 2000 等;还有基于某种数据库运行环境下的测试,也是可以参考的数值。紧跟着原文给了一句使用告诫:在采用通用基准测试程序时,要注意真实的业务流程和使用环境与通用测试基准的业务流程和使用环境的异同,这样,基准测试值才有参考价值。
明
阿明
这句告诫是不是就是说,跑分高不等于我这套业务跑得快?
雅
小雅
正是这个意思,这句话也是简答题爱要的原话。好,接下来是本集最重要的一段——第五种,TPC 基准程序。这一段单独能出一道选择题,而且是全章干扰项最密的一道,你把六个型号跟我一个一个对。
雅
小雅
先记组织:TPC 全称 Transaction Processing Council,事务处理委员会,成立于 1988 年,已有 40 多个成员,用于评测计算机的事务处理、数据库处理、企业管理与决策支持等方面的性能。1989 年以来相继发表的 TPC 基准测试程序包括 TPC-A、TPC-B、TPC-C、TPC-D、TPC-H 和 TPC-W 等。
明
阿明
六个型号,A、B、C、D、H、W。它们分别测什么?
雅
小雅
一个一个来,原文表述一字不改。TPC-A 用于在线联机事务处理下更新密集的数据库环境下的性能测试;TPC-B 用于数据库系统及运行它的操作系统的核心性能测试;TPC-C 则用于在线联机事务处理测试;TPC-D 用于决策支持系统测试;TPC-H 是基于 TPC-D 基础上决策支持基准测试;还有 TPC-W 是用于电子商务应用软件测试。
明
阿明
等一下,TPC-A 和 TPC-C 都带「在线联机事务处理」这几个字啊?那问 OLTP 的时候到底选哪个?
雅
小雅
问得好,这就是这道题真正的杀招所在,出题人就等你在 A 和 C 之间犹豫。分界线在原文的另一句上:TPC-C 是衡量 OLTP 系统的工业标准。注意「工业标准」这四个字只给了 TPC-C,一个字都没给 TPC-A。TPC-A 的定语是「在线联机事务处理下更新密集的数据库环境」——它限定在更新密集这个特定环境里;而 TPC-C 是干干净净的「在线联机事务处理测试」,也就是 OLTP 本身。
雅
小雅
TPC-C 的细节原文还给了一整段,是补刀用的:它测试广泛的数据库功能,包括查询、更新和排队袖珍型批处理事务,英文 mini-batch;这一规范在关键领域十分严格,如数据库透明性和事务处理隔离性;许多 IT 专家把 TPC-C 作为「真实世界」OLTP 系统性能的一个很好的指示器;独立审核员认证基准测试的结果,TPC 还有全套的公开报告。
明
阿明
那如果题目问的是「评测 OLTP 系统性能的工业标准是哪个」,选项给了 Dhrystone、Linpack、SPEC、TPC-C 呢?
雅
小雅
这就是原题的样子,答案是 TPC-C,而且四个干扰项要能一句话枪毙:Dhrystone 测的是整数性能,跟事务处理没关系;Linpack 测的是浮点性能,是给高性能计算机用的;SPEC 是全面反映机器的性能,偏 CPU 的综合跑分,也不是事务处理;只有 TPC 家族是评测事务处理、数据库处理的,而家族里点名「衡量 OLTP 系统的工业标准」的只有 TPC-C。
明
阿明
所以陷阱有两层:先别被 Dhrystone、Linpack、SPEC 拐走,再别在 TPC-A 上翻车。
雅
小雅
对,两层都得防住。再给你一组反向问法练一下:问「决策支持系统测试」选谁?问「电子商务应用软件测试」选谁?问「数据库系统及运行它的操作系统的核心性能」选谁?
明
阿明
决策支持是 TPC-D,如果强调「在 TPC-D 基础上」的就是 TPC-H;电子商务是 TPC-W,W 就当 Web 记;操作系统核心性能是 TPC-B。
雅
小雅
全对。字母助记你可以这么串:A 是更新密集(Aggressive 更新)、B 是底层操作系统(Base)、C 是 OLTP 工业标准(Core 联机事务)、D 是决策支持(Decision)、H 是 D 的升级版决策支持、W 是电子商务网站(Web)。但助记只是拐杖,考的是原文那六句定语,你还得照原文默一遍。