开展有意义的计算机基准测试指南
在这里,你将学习如何摒弃基准测试的炒作,获得真实的结果,从而对自己即将购买的产品有一个清晰的了解。
开展有意义的计算机基准测试流程
背景
基准测试程序试图根据预设的测试平台(通常与计算机的最终配置相去甚远)来分析计算机的“性能”。基准测试程序可以利用各种限制条件来进行对比,如系统资源、虚拟机软件环境、应用程序、处理负载模拟、用户负载模拟和系统使用模拟等;并采取一切必要手段超越这些限制,从而得出令人质疑的结果。现在,“如果基准测试没有被操纵,那么拥有行业标准的基准测试总是一件好事。遗憾的是,许多行业基准测试都被操纵了。[...] 然而,许多组织似乎是根据基准测试来购买硬件,而不是了解他们的工作负载,并根据自身需求和预算来购买硬件。”(Newman, 2015)这就解释了为什么客户需要准确地知道他们要测量什么。基准测试程序永远无法反映所谓的真实世界体验;它只会反映该程序在目标计算机上的运行状况。因此,客户有责任确定如何将结果应用到其生产环境中。
令人惊讶的是,正确进行基准测试是一件非常困难的事情,因为有太多的可能性会导致糟糕或误导性的结果,并遗漏重要内容。白皮书《文件系统和存储基准测试的九年研究》对此进行了总结:
在本文中,我们调查了最近 106 篇论文中的 415 个文件系统和存储基准测试。我们发现,最流行的基准测试存在缺陷,许多研究论文没有提供真实性能的明确指标。(Traeger, Zadok, Joukov, & Wright, 2008)
在这份白皮书中,我们可以看到关于基准测试应该说明测试内容及其原因的声明,它们还应该进行(或简化)对预期系统性能的某种分析。
在《性能反模式》一文中,有一些重点需要确定,即在这种情况下,基准测试的用途是什么以及应该如何运行。因此,一个好的基准测试应该是:
- 可重复的,以便能够相对容易地进行比较实验,并具有合理的精度。
- 可观察的,如果发现性能不佳,开发人员可以从某个地方开始查找原因。没有什么比一个复杂的基准测试只给出一个数字,却不给开发人员任何关于问题所在的其他信息更令人沮丧了。
- 可移植的,以便能够与你的主要竞争对手(即使是你们自己之前的发布版本)进行比较。保持之前发布版本的性能历史记录,是了解自身开发过程的有价值辅助手段。
- 易于呈现的,以便每个人都能在简短的演示中理解比较结果。
- 真实的,以便测量结果反映客户体验到的现实。
- 可运行的,以便所有开发人员都能快速确定其更改的影响。如果获得性能结果需要几天时间,那么这种测试就不会经常进行。
并非所有选定的基准测试都能满足所有这些标准,但其中一些能满足这一点很重要。Smaalders 建议选择真正代表客户需求的基准测试,否则所有的努力最终都会导致为错误的指标进行优化。他还鼓励抵制为了在竞赛中胜出而不惜一切代价对基准测试进行优化的诱惑。这种行为会产生虚假的结果,从而导致客户对品牌或供应商失去信心。通常,基准测试会突出显示被优化的方面,而牺牲其他未被测量(且可能对客户很重要)的方面。(Smaalders, 2006)
在比较各种系统并准备购买时,还有另一件事需要考虑:性价比。这个比率可以通过包含设备 5 年的资本成本来量化。(Anon & Gray, 1985)
基准测试结果与分析
使用基准测试软件进行的简单测试并不构成全面的性能分析。基准测试程序通常在受控环境中运行,因此它们可以被操纵以获得期望的速率——即尽可能高的数值。然而,这样的速率永远不会与实际的用户体验有恰当的关联。相反,所提供的指标只是为你提供了一个分数,代表了它在特定基准测试中的运行状况。一个很大的问题是,用户永远无法真正了解测试了什么、基准测试分数的各个方面是如何衡量的、编译器中设置了哪些标志、程序底层采用了哪些代码或库,更重要的是,程序正在测试的内容是否反映了计算机的真实预期用途。因此,有几点需要注意:
- 基准测试永远无法反映真实世界的使用情况。作为一个完全自动化的程序,它会以完全自动化的方式打开、写入、设置、读取、保存、显示、查看、导航、移动、计算、分配并执行许多其他任务。这种方式永远无法反映人类完成工作时的节奏。因此,任何承诺基于真实使用情况提供结果的基准测试程序都是在撒谎。
- 并非所有基准测试都评估多任务处理性能。绝大多数基准测试仅评估串行执行的任务。它们测试一件事,然后测试下一件事。它们永远不会让一个应用程序在另一个应用程序执行任务时也做些什么(即使有,它们通常也只尝试两个,最多三个实例)。在现实生活中,用户会同时运行多个应用程序。大多数用户一次会打开许多应用程序(在我们执行日常任务时,操作系统也会执行许多任务)。值得一提的是,仅反映一个进程/应用程序的基准测试并不会随着第二个、第三个以及其余进程/应用程序的增加而线性扩展。因此,在现代多核技术中,对基准测试程序的结果要持保留态度。
- “速率”不等于“性能”。“速率”只是程序给出的一个数字。性能则复杂得多。速率数字取决于基准测试程序及其开发人员设定的规模。性能是指根据预设的已知准确性、完整性、成本和速度标准来衡量给定任务的完成情况(The Business Dictionary, 2017)。因此,没有任何基准测试程序的速率可以反映性能指数。
- 基准测试是不准确的。基准测试程序速率的变动可能高达 10%(有时更多)。这些基准测试速率始终是主观的,这与科学和技术的客观原则背道而驰。这就是为什么基准测试程序至少应该运行 3 次来计算给定速率的平均值。在确定平均值后,预期结果会有 +/-3% 的偏差(这种偏差可以根据收集到的结果计算得出)。
- 基准测试结果可以被操纵。有一些方法可以操纵基准测试程序的结果,并提供人为的高速率来给用户留下深刻印象。这可以通过许多技术来实现,例如过度调整、BIOS 设置、硬件更改、使用特殊驱动程序、代码操纵等。基准测试速率可能是在与计算机在实践中的使用方式相比不切实际的设置下获得的:系统被要求不运行任何程序和进程,并具有取决于特定基准测试的特定值,而这并不能反映计算机在生产力任务中的使用方式。正如 Henry Newman 所言:“基准测试告诉我们的是:1) 供应商能在盒子里塞进多少硬件,2) 供应商团队能将软件优化到什么程度 [以应对基准测试],以及 3) 供应商有多想达成这笔交易。”(Olds & OrionX, 2011)如果没有客户明确规定的基准测试协议,基准测试人员就可以使用任何手段来达到(或超越)预期的结果并打动客户。
最后,基准测试程序不是一个精确的工具,应该谨慎使用。正如 Henry Newman 在一次个人通信中所引用的那样,“将系统性能工具 […] 与 […] 基准测试进行比较,就像把苹果和飞猪放在一起比较一样。”(Carrier, 2012)
基准测试提供的分数应与其他基准测试和详细信息结合使用,以全面了解系统整体性能。基准测试充其量只是在“测量计算机的速度”,但还有许多其他方面需要考虑:商业标准、军事标准、功能、特性、认证、价格等。
预期使用场景
如果正在评估购买的计算机需要满足各种不同的用户需求,最好预先确定预期使用场景,以便建立一套详细的适当资格标准。在大多数情况下,计算机很可能在以下一种或多种环境中使用:
- 将与当前的图形化操作系统环境一起使用(至少是 Windows 10 或 GNU/Linux 发行版)
- 或者,如果它将与旧版本的操作系统一起使用,例如 Windows 7 或 Windows 8.1,或者旧的 GNU/Linux 发行版。
- 基础生产力(运行不超过 5 个应用程序,包括):
- 防病毒软件
- 文字处理
- 电子邮件
- 轻度使用电子表格
- 基于 Web 的应用程序
- Web 浏览,且打开的标签页不超过 6 个。
- 标准生产力(运行 5 到 10 个应用程序,包括):
- 同基础生产力,以及……
- 办公应用程序(带图像处理的文字处理、带公式和一些脚本的电子表格、演示文稿、基础数据库管理)
- Web 浏览,标签页最多 15 个
- 网络会议
- 图像和视频的查看及简单编辑
- 教育
- 可以假设会大量使用视频、图像、动画、Web 访问以及目前使用加速计算的应用程序。
- 高级用户(运行 10 个以上应用程序,包括):
- 同标准生产力,以及……
- 应用程序开发
- 使用编程语言和环境
- 创建、管理和测试数据库
- 带虚拟化的测试平台
- 受控测试环境
- 科学研究程序
- 专业应用程序
- 工程和科学应用程序
- 虚拟现实
- 仅供一般了解,游戏目前被视为高性能计算(Stevenson, Le Du, & El Afrit, 2011)
- 其他标准
- 是否需要低功耗?
- 计算机占用的空间是否重要或受限?
- 是否需要移动性?
- 电池续航时间是否重要?
- 重量是否重要?
- 在严苛、多尘或嘈杂环境中使用便携式设备的其他用途
感知基准测试
本节标题中的术语看起来可能很奇怪,但实际上这是一个通常被忽视或忽略的问题。它指的是以下问题:什么样的响应时间对用户来说才真正重要?速度和性能实际上是相对的术语。Ilya Grigorik 提出了一个关于“性能”一词含义的有趣概念。
“性能不仅仅是毫秒、帧和兆字节。它还关乎这些毫秒、帧和兆字节如何转化为用户对应用程序的感知。”(Grigorik, 2014)
每个应用程序都根据业务标准、环境、用户期望和完全面向用户的感知处理时间常数规定了自己的一套要求。同样,用户期望与 Maister 的第一定律有关:“满意度等于感知减去期望。”(Maister, 1985)无论生活节奏如何加快,或者至少被感知为加速(每 66 毫秒 1 帧),我们的反应时间保持不变。如果我们认为根据传统研究,用户每秒可以看到大约 15 帧(Thorpe, Fize, & Marlot, 1996),那么下表(基于美军标 1472G)清晰地给出了用户通常期望的响应时间。这与应用程序的类型(安装在计算机上还是在线)或媒介(笔记本电脑、台式机或移动设备)无关。
实际时间和用户感知(Seow, 2008)
- 0 – 100 毫秒:瞬间
- 100 – 500 毫秒:立即
- 500 – 1000 毫秒:快
- 1 – 10 秒:感知到延迟,但用户不会分心。
- +10 秒:计算机太慢,无法保持用户的注意力。
为了让用户对请求的响应被感知为“快”,响应必须在 1 秒内到达。如果需要 1 秒或更长时间,用户可能会感知到一定的延迟,但她的注意力不会从任务中转移开。10 秒后——除非程序向用户提供某种类型的信息——任务通常会被放弃,用户会感到恼火。如果正在评估的计算机能够以相当的时间或在 10 秒内提供响应,用户将能从计算机中获得更多收益。这些阈值在现实世界中比基准测试程序的结果更有用,因为基准测试程序并未就其含义提供明确的指导。
话虽如此,在有效的基准测试中,客户应该了解:如何应用它、分析过程以及将从中得出的结论。对于分析,了解或准备以下内容非常重要:
- 预期最低结果的阈值或参考值
- 即将测试的内容
- 限制因素是什么
- 任何可能影响结果的干扰
- 被测系统的详细信息
- 被测系统的价格(至少是平均价格)
- 希望通过结果得出什么结论
阈值可以从公共站点(如 Futuremark)获得,也可以从当前使用中且配置良好的计算机中本地创建,以便为即将提供的计算机的每个基准测试设定基准。记下这台作为基准的计算机的配置详细信息(处理器、内存 [容量、速度、配置、时序]、存储、显卡和显示器),以对其有一个清晰的了解。
基准测试的分析需要时间和经验才能正确完成。如前所述,最重要的是确定要测量的内容,以及所获得的结果对于计算机的预期用途是否有意义。
基准测试协议
以下是拟议的基准测试协议,旨在尽可能确保所选或应用的基准测试结果公平且真实。
设置基准测试的执行者和见证人
建议在配置和基准测试过程中,不要让基准测试人员单独行动,特别是如果基准测试人员是第三方时。客户必须指派一名见证人,记录基准测试人员为基准测试过程配置机器时所做的任何操作。此外,见证人还应注意基准测试人员在每种类型的基准测试后所做的任何更改或修改。如果你作为客户有明确定义的协议,那么基准测试人员不得为了赢得基准测试过程而违反该协议。基准测试人员和见证人不应该是同一个人,再次强调,特别是当基准测试人员是第三方时。
设置通用配置
无论提供的品牌或硬件如何,所有计算机都应满足配置标准:
- 如果你要求使用物理四核处理器,它们都应该有四个物理核心。
- 如果你要求使用特定容量、速度和配置的内存,请检查所有计算机是否具有相同的配置。记下任何差异:
- 容量
- 速度 (MT/s)
- 时序和延迟(CAS、RAS、tRAS、tRC、频率)
- 单通道与双通道
- 如果你要求使用特定类型的存储,请检查所有计算机是否包含此类存储。记下发现的任何差异(吞吐量、寻道时间和写入时间):
- 标准旋转硬盘 (5400RPM, 7200RPM, 10000RPM, SSHD)
- SSD
- 显卡应满足 Windows 10 的 Shader Model 6.1 (DirectX 12.1) 或旧版本 Windows 的 Shader Model 5 (DirectX 11)。
- 显示器在每台计算机上应具备相同的功能
- 刷新率
- 响应时间 (ms)
- 分辨率(更高的分辨率可能会带来更低的基准测试数值)
- 色深
- 操作系统应为相同的版本和编译号。
- 在 Windows 中,你可以通过在 Cortana 框中键入 winver 并回车,或者在按下 Windows+R 打开“运行”窗口后查看版本和编译号。
- 每台计算机都应仅安装计算机制造商批准的当前驱动程序。注意:不允许使用组件制造商提供的特殊驱动程序或调整过的驱动程序,因为它们可能带来虚假结果。避免使用计算机制造商网站或设置工具中经验证且公开可用的驱动程序之外的任何驱动程序。
- 将计算机配置为“平衡”模式。这是客户使用计算机的预期方式,也是从基准测试中获得最真实结果的方式。
- 安装客户常用的应用程序。无论它们是否会在测试中使用,这都是计算机会被使用的方式。
- 安装客户需要的任何其他软件(如防病毒软件和工具)。这将使配置尽可能接近最终用户的使用方式。
- 安装基准测试程序。
运行基准测试
计算机安装完成后,建议进行“热”基准测试。“热”基准测试需要一名工程师(是工程师,而非技术员)记录基准测试过程中发生的每一件事(测试中被跳过的部分、缺失的步骤、屏幕异常、绘制不当的图形或图像等)。此类异常应予以记录并报告。建议避免进行“冷”基准测试(只运行基准测试,离开计算机,然后仅返回记录结果),因为这样无法注意到基准测试过程中出现的任何异常行为。如前所述,操纵基准测试速率的方法有很多,进行冷基准测试是错过此类行为的最佳途径。
由于基准测试速率可能会产生 5% 到 15% 的偏差,建议每次测试至少运行 3 次。每次测试都需要重启计算机,在桌面出现后等待约 5 分钟,然后再次运行基准测试。每次基准测试运行后,建议截取结果屏幕以保存证据。这应在每个选定的基准测试程序中执行。
归一化并分析结果
由客户决定是否将通过每个基准测试的每次运行获得的各种速率取平均值,或者取最高值或最低值。无论客户做出什么决定,建议将其应用于所使用的所有不同基准测试。建议采用平均值。
获得这些结果后,可以将它们进行归一化(如本文正文中所述),然后线性转换为时间。结合计算机的价格,客户还可以评估哪种系统提供了最佳性价比。
最终说明
基准测试过程需要时间、经验和耐心。如果做得好,基准测试程序可以很好地了解计算机的预期性能。见证人记下的所有内容都将有助于确定参赛者在被选中时需要提供什么。在基准测试过程中记下的配置(处理器、内存 [容量、速度、时序、通道模式]、存储 [类型、吞吐量、容量]、显示器、外形尺寸等)将有助于确保交付的计算机与测试时的配置完全一致。这一点很重要,因为一些滥用职权的供应商可能会专门配置一台计算机仅供测试,而在最终交付时却提供一台非常不同的计算机。因此,这将有助于客户确切地得到经过测试的产品。
综上所述,可以得出以下结论:
- 客户购买的是计算机,而不仅仅是一个处理器或某个组件。因此,在做出购买决定时,有必要从整体(全面地)上考虑整个系统。
- 计算机的性能源于其所有元素。这包括硬件和软件。计算机的整体性能始终等于其最慢元素的性能。
- 有必要考虑节能措施、发热量、计算机的稳定性、其商业用途认证以及它提供的安全服务。当前的科技不仅需要基准测试显示的测试速度,还需要提供节能和安全服务。
- 重要的是要意识到,集成到应用程序和操作系统中的新技术利用的远不止处理器本身。相反,它们更多地关注 CPU、GPGPU、总线、内存速度和磁盘传输速率等其他组件。
当计算机被全面测量时,而不是仅在串行处理或 CPU 领域进行测量时,才能获得计算能力的真实衡量标准。使用办公工具、Web 浏览器、文件压缩、视频播放器、远程会议工具、基于 Web 的应用程序等类似工具的客户,将利用这些具有异构架构的新技术的所有功能。
关于此点的最后说明是,为了更好地了解即将获得的性能提升,始终需要一个阈值或参考值。如果你不想使用 FutureMark 为当前的“参考办公 PC”提供的基础测量值,你可以根据自己的标准在办公室中测量你现有的基础计算机(也许是一台你对其标准性能感到满意的计算机)。一旦运行基准测试并获得结果,你就可以将这些结果用作阈值,以便对提供的解决方案设定最低预期速率。需要注意的另一件事是,“速率”不等于“性能”。“速率”只是给基准测试程序执行的过程提供了一个评分。“性能”是你使用该计算机执行自己的任务时获得的真实结果。
参考文献
Anon, E. A., & Gray, J. (1985 年 2 月)。事务处理能力的衡量。取自 Internet Archive: https://archive.org/details/bitsavers_ta...
Carrier, J. (2012 年 4 月 24 日)。HPCS I/O 场景。取自 OpenSFS: http://cdn.opensfs.org/wp-content/upload...
Computerhope. (2015 年 3 月 15 日)。抖动 (Thrashing)。取自 Computer hope: http://www.computerhope.com/jargon/t/thr...
Gregg, B. (2014)。系统性能:企业与云 (第 1 版)。美国:Pearson Education。
Grigorik, I. (2014 年 3 月 12 日)。速度、性能与人类感知。(Fluent, Ed.) 美国加利福尼亚州旧金山。取自 https://www.youtube.com/watch?v=7ubJzEi3...
Hoff. (2006 年 12 月 30 日)。多核、SMP 和 SMT 处理器。取自 HoffmanLabs: http://labs.hoffmanlabs.com/node/13
Maister, D. (1985)。排队心理学。(T. S. Encounter, Ed.) 取自 David Maister: Professional Business, Professional Life: http://davidmaister.com/wp-content/theme...
Mallik, A. (2007)。基于应用程序、用户和进程特征的整体计算机架构。美国伊利诺伊州埃文斯顿:UMI。
Newman, H. (2015)。数据存储问题:大数据基准测试。取自 InfoStor: http://www.infostor.com/index/blogs_new/...
Olds, D., & OrionX. (2011 年 12 月 19 日)。基准测试全是 $%#&@!! 取自 The Register: http://www.theregister.co.uk/2011/12/19/...
Osterhage, W. (2013)。计算机性能优化 (第 1 版)。(Springer-Verlag, Trans.) 德国下巴赫:Springer-Verlag Berlin Heidelberg。
Seow, S. (2008)。设计与工程时间。美国波士顿:Prentice Hall。
Smaalders, B. (2006 年 2 月 23 日)。性能反模式。doi:1542-7790/06/0200
Stevenson, A., Le Du, Y., & El Afrit, M. (2011 年 3 月)。游戏电脑上的高性能计算。取自 ArsTechnica: http://arstechnica.com/science/2011/03/h...
The Business Dictionary. (2017)。性能 (Performance)。取自 The Business Dictionary: http://www.businessdictionary.com/defini...
Thorpe, S., Fize, D., & Marlot, C. (1996 年 6 月 6 日)。人类视觉系统中的处理速度。Nature, 381, 520-522。取自 Quora: http://cns.bu.edu/Profiles/Mingolla.html...
Traeger, A., Zadok, E., Joukov, N., & Wright, C. (2008 年 5 月)。文件系统和存储基准测试的九年研究。取自文件系统和存储实验室 (FSL): http://www.fsl.cs.sunysb.edu/docs/fsbenc...
Vieira, L. (2011 年 10 月 3 日)。性能感知。取自 Sitepoint: http://www.sitepoint.com/the-perception-...
0条评论