第5章 · 播客 第4集

系统性能评价 · Linpack、HPL 与六类性能评估方法

🎙️ 本集播客第4集:六种基准测试程序逐条辨析——Dhrystone、Linpack、Whetstone 的语言与单位对照,SPEC 的组织与厂商名单,TPC-A/B/C/D/H/W 六个型号一个一个对(衡量 OLTP 系统的工业标准到底是哪个),Linpack100/1000/HPL 三类的优化尺度与 HPL 和 TOP500 的关系;再把 Web 服务器评测和时钟频率法、指令执行速度法、等效指令速度法、数据处理速率法、基准程序法的适用性排一遍队。 语音由微软 Edge 神经网络语音预生成(女声·晓伊,男声·云希)。点击下方任意对话可直接从该句开始播,当前句朗读时下一句已预先加载,无缝衔接。
🎙️ 第5章播客 第4集
⬇ 下载本集 点击播放
阿明
记下了。第六种是什么?前面 Linpack 不是已经讲过了吗?
小雅
原文把 Linpack 讲了两次,第二次是专门的 Linpack 测试,深度完全不一样,也是必考段。定义先摆:Linpack 是国际上最流行的用于测试高性能计算机系统浮点性能的测试;通过对高性能计算机采用高斯消元法求解一元 N 次稠密线性代数方程组的测试,评价高性能计算机的浮点性能。记住两个关键词——高斯消元法、稠密线性代数方程组。
阿明
然后它分三类?
小雅
Linpack 测试包括三类:Linpack100、Linpack1000 和 HPL。区别全在「允许你优化到什么程度」上,这是辨析的关键。Linpack100 求解规模为 100 阶的稠密线性代数方程组,它只允许采用编译优化选项进行优化,不得更改代码,甚至代码中的注释也不得修改。
阿明
连注释都不许改?这也太狠了。
小雅
「甚至代码中的注释也不得修改」这句就是原文,它是 Linpack100 的身份标签,一出现就选它。第二类 Linpack1000 要求求解 1000 阶的线性代数方程组,达到指定的精度要求,可以在不改变计算量的前提下做算法和代码上的优化——注意它松了一档:允许改算法和代码,但计算量不能变。
小雅
第三类 HPL,即 High Performance Linpack,也叫高度并行计算基准测试。它对数组大小 N 没有限制,求解问题的规模可以改变,除基本算法即计算量不可改变外,可以采用其他任何优化方法。原文还给了一句总评:前两种测试运行规模较小,已不太适合现代计算机的发展。
阿明
所以现在真正在用的是 HPL。它具体怎么算分?
小雅
HPL 是针对现代并行计算机提出的测试方式。用户在不修改任意测试程序的基础上,可以调节问题规模的大小也就是矩阵大小、使用 CPU 数目、使用各种优化方法等来执行该测试程序,以获取最佳的性能。算法上,HPL 采用高斯消元法求解线性方程组。求解问题规模为 N 时,浮点运算次数为三分之二乘 N 的三次方,再减去 2 乘 N 的平方。
小雅
所以只要给出问题规模 N,测得系统计算时间 T,峰值就等于计算量除以计算时间 T,也就是括号三分之二乘 N 三次方减 2N 平方括号,再除以 T;测试结果以浮点运算每秒也就是 Flops 给出。最后一句是必背的——HPL 测试结果是 TOP500 排名的重要依据。
阿明
TOP500,就是那个全球超算排行榜?这句会怎么考?
小雅
会直接问:HPL 测试是哪个排行榜的重要依据。选项通常是 TOP500、Fortune 500、SPECmark、TPC 排行榜,答案 TOP500。干扰项各有来路,你得知道它们为什么错:Fortune 500 是财富五百强企业榜,跟计算机性能一点关系都没有,纯粹靠名字里有 500 来骗人;SPECmark 属于 SPEC 那一套 CPU 跑分,跟 Linpack 不是一个体系;TPC 排行榜是事务处理和数据库的榜,HPL 测的是浮点性能,走的是高性能计算这条线。
阿明
两个 500 一定要分清。这么说 HPL 这条线是「浮点性能 → 高性能计算机 → TOP500」,TPC-C 那条线是「事务处理 → 数据库 → OLTP」。
小雅
这两条线拉出来,本章两道基准测试题就都稳了。接着往下是 5.4.2 Web 服务器的性能评估。反映其性能的主要参数记三个:最大并发连接数、响应延迟和吞吐量,吞吐量括号里写的是每秒处理的请求数。评测方法有三种:基准性能测试、压力测试和可靠性测试。
小雅
三种方法各自的含义,原文只细讲了前两种。基准测试即采用前面所提到的各种基准程序对其进行测试;压力测试则是采用一些测试工具来测试 Web 服务器的一些性能指标,如最大并发连接数,间接测试响应时间,以及每秒钟可以处理的请求数目,这些测试工具的主要特征就是能够模拟足够数量的并发操作。压力测试还有一个附加价值:不但可以考察 Web 服务器的各项性能指标,而且可以找到服务器的瓶颈所在,然后通过参数调整,让服务器运行得更高效。
阿明
「模拟足够数量的并发操作」是压力测试工具的特征,「找瓶颈」是压力测试的作用。那具体的工具是哪个?
小雅
原文点名的是 IxWeb:美国 IXIA 公司的一个有关 Web 测试的解决方案,是一个高性能业务负载生成与分析应用系统,可在 TCP 和应用层模拟现实世界的业务负载方案,能够对设备进行强度测试、检验转发策略和验证 4 到 7 层的性能。工作方式是通过模拟用户也就是客户端来测试 Web 服务器。
小雅
硬件细节也出过题:每一个 IXIA 测试仪端口都有独立的 CPU 和内存,运行 Linux 操作系统,具备完整的 TCP/IP 协议栈,每个端口可以模拟大量的 Web 客户,每个客户能够产生大量的并发连接;它还可以通过同时模拟客户端和服务器端,对内容交换机等设备进行测试。
阿明
运行 Linux、独立 CPU 和内存、完整 TCP/IP 协议栈,这三条我记住了。还有别的功能吗?
小雅
四条功能:一是能够配置会话,以模拟使用路由、交换和 NAT 环境中的用户,还能修改 TCP 参数,并提供对用户通过诸如拨号调制解调器和 DSL 等多种接入机制联网进行仿真的功能,通过配置「思考时间」也就是用户操作之间的时间间隔来对用户的行为进行仿真。二是 HTTP 1.0 和 1.1 支持的方法包括 GET、POST、PUT、HEAD、DELETE,可以修改 HTTP 客户端与服务器包头规格。
小雅
三是对 SSL 的支持使用户能够模拟访问安全网站的大量 SSL 客户端会话,具有生成真正的 SSL 握手和 HTTPS 功能。四是能够仿真成千上万个下载大文件的 FTP 用户,以测定同步 FTP 用户的最大数量,以及内容交换机、负载均衡器、服务器与防火墙的吞吐量。
阿明
五个 HTTP 方法里没有 OPTIONS 和 TRACE,这种题就靠一个字一个字对。师姐,最后想问个总的:这一章前后出现了一堆「法」——时钟频率、指令执行速度、等效指令速度、数据处理速率、基准程序,它们该怎么排队?
小雅
问到点子上了,这是把全章串起来的一问。按原文的口径从粗到细排:时钟频率法就是拿主频当性能,原文说主频在很大程度上决定了计算机的运算速度,主频越高工作节拍越快;但它的失效点原文也写明了——从 2000 年 IBM 发布第一款双核处理器开始,原来单以时钟频率来计算性能指标的方式已经不合适了,还得看单个 CPU 中的内核数。所以时钟频率法最粗。
小雅
第二档是指令执行速度法,就是 MIPS 和 MFLOPS 那一套:MIPS 是百万条指令每秒,用于描述计算机的定点运算能力;MFLOPS 是百万次浮点运算每秒,用来表示计算机的浮点运算能力。它比主频进了一步,但一条指令算一条,不区分指令难易。第三档等效指令速度法就是补这个缺的,也叫吉普森法:加、减法指令占 50%,乘法指令占 15%,除法指令占 5%,程序控制指令占 15%,其他指令占 15%,按比例加权。
阿明
加减法 50%、乘 15%、除 5%、程序控制 15%、其他 15%。这五个数加起来正好 100。
小雅
对,凑不成 100 的选项直接排掉,而且最大的那档一定是加减法 50%。第四档数据处理速率法,就是 PDR,PDR 等于 L 除以 R;它的适用性原文有明确一句话,是本章最容易被忽略的送分点——PDR 主要用来度量 CPU 和主存储器的速度,它没有涉及高速缓存和多功能等,因此,PDR 不能度量机器的整体速度。
阿明
「不能度量机器的整体速度」,这句是判断题的原句。那基准程序法呢?
小雅
基准程序法就是这一集讲的这一整套,是最贴近实际的一档,因为它拿真实用得最频繁的核心程序去跑。但也别把它想成万能——原文那句告诫又回来了:要注意真实的业务流程和使用环境与通用测试基准的异同,这样基准测试值才有参考价值;而且程序检测法本身就属于原文列的四种计算方法之一,那四种是定义法、公式法、程序检测法、仪器检测法,其中程序检测法和仪器检测法是通过实际的测试来得到其实际值,由于测试的环境和条件不定,其结果也可能相差比较大。
阿明
所以越往后越真实,但越往后结果的波动也越大。这条线我理顺了。
小雅
总结成一句应试口径:问「哪种最能反映实际性能」选基准程序法;问「哪种只看主频、已不适应多核」选时钟频率法;问「哪种按指令使用频度加权」选等效指令速度法或吉普森法;问「哪种只度量 CPU 和主存、不能度量整体速度」选数据处理速率法 PDR。
小雅
本集必背清单,你回去照着默一遍。三个语言与单位:Dhrystone 是 C 语言、100 条语句、整数、1 VAXMIPS 等于 1757 Dhrystones 每秒;Linpack 是 FORTRAN、浮点加法和浮点乘法、MFLOPS;Whetstone 是 FORTRAN、综合性、Kwips。SPEC 是系统性能评估联盟,30 个左右大厂商支持的非盈利合作组织,以 VAX-11/780 为基数,能全面反映机器性能。
小雅
TPC 六个型号:委员会成立于 1988 年、40 多个成员,A 是更新密集的数据库环境、B 是数据库系统及其操作系统的核心性能、C 是在线联机事务处理并且是衡量 OLTP 系统的工业标准、D 是决策支持系统、H 是基于 TPC-D 的决策支持、W 是电子商务应用软件。Linpack 三类:100 阶只许编译优化连注释都不能改、1000 阶可在不改计算量前提下改算法和代码、HPL 对 N 无限制、除计算量外任意优化,浮点运算次数是三分之二 N 三次方减 2N 平方,HPL 是 TOP500 排名的重要依据。
阿明
再加上 Web 服务器三个参数、三种评测方法、IxWeb 那几条,和五种评估方法的排队。这集信息量比上集还大。
小雅
但都是死记的分,性价比最高。下一集我们讲 5.3 性能设计——阿姆达尔定律的加速比取决于哪两个因素,还有五种负载均衡技术:基于特定服务器软件的、基于 DNS 的、反向代理的、基于 NAT 的和扩展的,每种的优缺点都要逐条对。那一集的辨析比这集更绕,先把这份清单默完再来。