Benchmark 第一篇 了解Benchmark

【Benchmark 性能测试全指南:从核心原理到 CINEBENCH 实战解析】 本文深度拆解基准测试(Benchmark)的底层逻辑,详解数据集、工作负载、度量指标三大核心要素,分步演示测试流程与统计分析要点。结合 CINEBENCH R23 实战案例,揭秘 CPU 性能评估方法论,助你掌握系统性能量化与优化的核心技能。 阅读详情
AI摘要

本文深入探讨了基准测试的概念、组成部分、常用工具,包括Apache Bench、JMeter等,并详细阐述了基准测试的特征、执行步骤、实际意义及局限性。测试涉及因素涵盖交易配比、突发操作、系统配置等多个方面,旨在评估和优化系统性能。通过基准测试,可以了解系统性能基准,识别配置变更的影响,为系统优化提供参考。同时,文章指出基准测试的重要性在于其可重复性、可观测性和可展示性,但也强调了其不能替代良好的系统设计。

目录

一、Benchmark(基准)简介

二、Benchmark的组成

三、工具

1.集成式测试工具

2.单组件测试工具

四、Benchmark特征

五、Benchmark测试需要考虑的因素

六、Benchimark测试步骤

1.观察

2.假设

3.预测

4.环境控制

5.测试

6.推论和结论

七、Benchmaark测试数据的实际用途/意义

八、Benchmark的重点

九、Benchmark的局限性


一、Benchmark(基准)简介

基准测试(benchmarking)是一种测量和评估软件性能指标的活动(是一个评价方式)。在某个时候通过基准测试建立一个已知的性能水平(称为基准线)。其在整个计算机领域有着长期的应用,计算机领域应用最成功的就是性能测试。

二、Benchmark的组成

Benchmark的核心由3部分组成:数据集、工作负载、度量指标。

三、工具

1.集成式测试工具

1)ab:Apache Http服务器基准测试工具。它可以测试HTTP服务器每秒最多可以处理多少请求。如果测试的是WEB应用服务,这个结果可以转换成整个应用每秒可以满足多少请求。只能对单个URL进行尽可能快的压力测试。ab详细信息
2)http_load:这个工具概念上和ab类似,也被设计为对web服务器进行测试,但比ab要更加灵活。可以通过一个输入文件提供多个URL,http_load在这些URL中随机选择进行测试。也可以定制http_load,使其按照时间比率进行测试,而不仅仅是测试最大请求处理能力。详细信息
3)Jmeter:Jmeter是一个java应用程序,可以加载其他应用并测试其性能。可以进行web应用、FTP服务器、或者通过jdbc进行数据库查询测试。它可以通过控制预热时间等参数更加灵活地模拟真实用户的访问。同时拥有绘图接口,可以对测试进行记录,然后离线重演测试结果。


2.单组件测试工具

1)mysqlslap:可以模拟服务器的负载,并输出计时信息。
2)mysql benchmark suite:在mysql的发行包中也提供了一款自己的基准测试套件,可以用于在不同数据库服务器上进行比较测试。它是单线程的,主要用于测试服务器执行查询的速度。结果会显示哪种类型的操作在服务器上执行得更快。
3)super smack:是一款用于mysql和postgresql的基准测试工具。可以提供压力测试和负载生成。可以模拟多用户访问,可以加载测试数据到数据库,并支持使用随机数据填充测试表。
4)sysbench:是一款多线程系统压测工具。它可以根据影响数据库服务器性能的各种因素来评估系统的性能。例如:可以用来测试文件i/o、操作系统调度器、内存分配和传输速度、POSIX线程,以及数据库服务器等。

四、Benchmark特征

1.可重复性:可进行重复性的测试,这样做有利于比较每次的测试结果,得到性能结果的长期变化趋势,为系统调优和上线前的容量规划做参考。

PS:这种特质是为了满足基准测试的日常轮询需要。

2.可观测性:通过全方位的监控(包括测试开始到结束,执行机、服务器、数据库),及时了解和分析测试过程发生了什么。

3.可展示性:相关人员可以直观明了的了解测试结果(web界面、仪表盘、折线图树状图等形式)。

4.真实性:测试的结果反映了客户体验到的真实的情况(真实准确的业务场景+与生产一致的配置+合理正确的测试方法)。

5.可执行性:相关人员可以快速的进行测试验证修改调优(可定位可分析)。

五、Benchmark测试需要考虑的因素

1.交易配比:某些业务场景,一个流程包含多个事务,在模拟并发中,不同的事务各自的占比;

2.突发性的读写操作:某些特殊业务场景,会有短时的大流量冲击或者请求数量骤减,该如何模拟(浪涌测试);

3.系统配置:不同环境的系统配置不同,测试结果如何换算、如何对比?

4.测试时长:测试执行过程中,运行多长时间,不同交易运行的时间分配等;

5.结果展示类型:平均值、峰值、百分比值如何展示,如何对比?

6.成功/失败占比:每次测试过程中,成功和失败的事务占比统计;

7.是否可重现:如测试过程中出现报错或某些异常情况,是否可以重现?

8.是否可对比:是否有其他测试工具或者测试结果进行对比(尽量多次执行测试,进行测试结果对比:标准方差、正太分布了解一下?)?

六、Benchimark测试步骤


1.观察


我们假设系统管理员购买了一台服务器,现在看看它的最佳性能。第一步是确定服务器预期任务。其将作为一个虚拟平台还是运行一个专门的应用程序?确定这些问题之后,就可以开始基准测试了。切记,测量标准和基准测试将根据测试内容和使用的设备而有所变化。例如,如果作为数据库系统可能会强调处理器测试,而用于网络服务系统的话可能会突出网络性能。


2.假设


在这个步骤,工程师设定一个基准目标。假设什么或者测试需要完成什么?简单地进行一个度量测试将得出一些试验结果,但是没有方向或明确的目标的话,这些结果可能是无用的。为测试创建一个基本的目标,并且所有的测试方法都围绕这个目标。例如,工程师可能会设法测试其占用的内存以让应用程序处于最佳运行状态。他或她可能因此推测,给定“X”内存大小可以达到最佳工作负载。这可以立足于以前的研究,供应商提供的基准或其他的来源。确保你的假设是可测试的。也就是说,不要提出一个只是基于数据的而基准测试却无法证实的假设。


3.预测


接下来,对服务器基准测试做一个大体预测。假设该设备将被作为一个专门的应用服务器。系统管理员能够预测,为工作负载增加额外的核心,设备性能将提升,同样,应用程序的性能也将会改善。在某些情况下,工程师甚至可以预测改善的比例,并希望通过基准测试进行验证。


4.环境控制


变量设置。例如,可能要给服务器分配一些核心。此时,管理员每次应只更改一个设置,直到他或她能够接受在此基础上的性能变化。工程师可能需要给服务器设置为6GB的内存,并测试其与其他设备相互配合的情况(CPU、影像、硬盘以及相关联的设备)。设置不同的变量,包括修改处理器设置,但其他设置都处于最初状态。


5.测试


变量都设置好之后,现在开始进行测试。从基准线开始进行测试(已知的起点),并有系统地调整服务器设置。每个测试序列都会有一个结果,记录结果以便以后引用。在这种情况下,一个测试序列可看做是一次硬件设置更改。每应用一次新的设置,都必须重新进行测试并记录结果。一旦有足够的运行周期,工程师应该有一份完整的数据以完成他们的推论。


6.推论和结论


进行测试并确认应用程序的实际性能以及给定预计资源或设置后的性能。例如,在只有一半数量的预期核心后,确定应用程序的最佳运行效果。从这点起,确定核心与其他当前变量(所需的内存大小、当前运行的应用程序数量、软件升级/服务包等)结合给服务器提供的最佳性能。注意,任何变量的改变都需要进一步实验。

(基准测试应该在相同的环境条件下进行,这样才能进行结果比较分析。)

七、Benchmaark测试数据的实际用途/意义

1.了解系统性能基准作为参照物(性能问题发生后的测试很难了解系统性能基准)
2.识别系统或环境的配置变更对性能响应带来的影响
3.为系统优化前后的性能提升/下降提供参考指标
4.观察系统的整体性能趋势与拐点发生,及早识别系统性能风险

八、Benchmark的重点

基准测试的工作重点是统计分析:可以从以下几个维度去进行统计:

1.选择合适的测试工具,设定合理的测试方法以及需要确认的系统性能指标;

2.选择不同的测试工具,对测试结果进行对比,选择稳定且能反应系统真是性能表现的结果;

3.多次执行测试,收集大量的测试数据集和指标;

4.从不同维度解读分析数据,生成报告。

九、Benchmark的局限性


基准测试不能替代好的设计,不管是混合存储还是全闪阵列,只要能正确补充存储,终端用户都会获得足够高的IOPS尽管后端磁盘性能可能不够而造成缓存不中等。因此,需要充分发挥每个存储层级的性能以补偿缺陷。
特别是遇到混合存储的时候,需要考虑的一点即是性能上的短板效应。正因为如此,无需快速访问的数据应该放在相对稳定一些的后端磁盘上。比如说在一些时候,后端如果使用了15000转速的磁盘,即便前端缓存大小适中也妨碍不大。
如果这样的话全闪存阵列则更为容易去衡量及评估因为不再需要考虑多级存储之间的关系。在这种情况下,需要了解SLC及MLC两种闪存之间的区别。虽然MLC较SLC慢,需要知道的是即便如此,其比传统硬盘还是会快很多。在许多场景下,MLC也许就足以满足加速的需求。

【性能测试】benchmarksql工具7*24稳定性测试 本文主要介绍使用benchmark工具对数据库进行7*24小时稳定性测试。 阅读详情

相关推荐

redis之benchmark工具:benchmark是redis自带的性能测试工具

redis工具benchmark基础讲解

m0_52479012的博客 2836

Benchmark——基准测试

在大数据领域中,“benchmark”(基准测试)是一个关键概念。 本文将以对进行数据仓库的测试为例阐述Benchmark的基本概念

m0_73686459的博客 8597

Benchmark学习【第一篇】

(本文是本人学习Benchmark作的第一篇学习笔记,内容若有遗漏或错误欢迎评论指出) 前言: Benchmark基准测试是一个性能的衡量基准,可以理解为跑分的测试工具,用来测试系统、软件或代码在相同环境下的表现情况和测试服务器的负荷极限。 一、Benchmark的定义 Benchmark: something that is used as a standard by which other things can be judged or measured....

Th7me的博客 3077

Benchmark学习笔记

Benchmark(基准测试)是用于衡量计算机、系统、软件或硬件等性能的标准化测试工具或测试方法。进行基准测试,我们需要明确测试目标、选择合适的测试工具和测试环境、根据测试目标选择合适的测试指标,运行测试并收集数据,最后分析测试结果并做出评估。在做基准测试分析时,也要特别明确限制因素和思考可能的干扰。Benchmark可以应用在多个领域,比如计算机硬件(处理器、显卡、存储设备)、操作系统、数据库系统、网络设备等。

2301_77956504的博客 9478

关于Benchmark

什么是benchmark? 通俗来讲,是基准测试。在计算中,基准是运行一个计算机程序、一组程序或其他操作,以评估一个对象的相对性能的行为,通常通过对其运行一些标准测试和实验。“基准”一词也主要用于精心设计的基准项目本身 基准测试通常与评估计算机硬件的性能特征有关,例如CPU的浮点操作性能,但在某些情况下,该技术也适用于软件。例如,软件基准测试是针对编译器或数据库管理系统运行的。 基准测试提供了一种跨不同芯片/系统架构比较不同子系统性能的方法 测试套件是一种旨在评估软件正确性的系统 ...

weixin_61041845的博客 4578

google benchmark使用教程

下载地址 功能 编译安装 运行使用 基本功能 传递参数 下载地址 https://github.com/google/benchmark 功能 google benchmark主要是对c++中的函数进行基准功能测试。 编译安装 登录 linux环境,执行以下命令,进行编译安装: git clone https://github.com/googl...

独孤漂流的专栏 1万+

初学Benchmark(基准测试程序)(一)

初学Benchmark

Correct_A的博客 5774

PARSEC benchmark 编译

1、配置环境source env.sh2、使用下面的命令可以查看parsec中所有的benchmarkparsecmgmt -a info下面是parsec中的部分benchmark: Benchmark 内容 FFT 核心程序,用于计算快速傅里叶变换 OCEAN-CP 非核心程序,用于通过海洋的边缘的海流模拟整个海洋的运动 BLACKSCHOLES 计算财务应用,基于

傻红就是不爱跑步的博客 4501

Google benchmark使用手册及范例

构建集成 在robotic_arm的third_party已经集成了benchmark,只需在相关测试用例代码的CmakeLists.txt添加如下内容: target_link_libraries(xxx PRIVATE benchmark pthread) Demo样例 存在以下模式样例: 1. 使用BENCHMARK、BENCHMARK_MAIN宏 #include <benchmark/benchmark.h> #include <chrono> #include <

Sunrise的专栏 7117

benchmark和baseline的联系与区别

benchmark代表当前最好的性能水平,而baseline则是一个相对简单的基础模型,用于提供性能的下限或参考点。基线是指作为对比的一种简单或基本的算法或模型,它被用作对新算法或模型性能的初始评估。基线模型的目标是建立一个可比较的起点,进而比较其他模型的性能提升。在深度学习算法中,benchmark(基准)和baseline(基线)是两个常用的概念,用于评估算法的性能和进行比较。在深度学习中,基线模型可能是一种简单的线性模型、传统机器学习算法或者是较浅的神经网络模型。的新模型或算法,评估其改进效果。

m0_49133355的博客 4724

【SDR】Gnuradio Benchmark介绍

简单介绍了gnuradio中benchmark收发程序,使用USRP可以组成一个简单的通信系统,可以使用该系统对自己的功能模块进行简单的测试;该篇博客介绍了benchmark的整体框架,并对其中的模块连接及函数调用进行了总结,希望能帮助大家!

Blogs 3025

MYSQL——时间盲注BENCHMARK()

先上图看效果 1' union select 1,BENCHMARK(500000000,(select user from users limit 0,1))# 可见benchmark()函数是可以造成延时的。 简介: 它是MySQL的一个内置函数,用于测试函数或者表达式的执行速度。 其运行返回值都是0,仅仅会执行显示时间。 用法:benchmark(重复次数, 执行的函数) 例如:将select database()执行100000000次,显示耗时0.52sec SELECT BENCHMARK(

m0_51330619的博客 4443

AD服务器搭建

一、角色安装1)打开服务器管理器,添加 角色和功能;2) 点 下一步;3)点 下一步;4)点 下一步;5)点击安装;6-1)将此服务器提升为域控制器;6-2)点下一步;6)输入密码 点 下一步;7)自动生成LIXF,点击下一步;8)确认目录,点下一步;8)确认安装条件,点安装; 8)安装成功,点关闭;...

潇峰的博客 6445

Benchmark

有很多认为响应时间应该看平均时间,如果写要求比较低的系统的确是可以看平均时间,这样就会导致很多用户响应的速度很慢,但是我们在监控指标上体现不出来,所以就有了百分位指标这样的概念,TP99的意思就是,取排名排到第99百分位的响应时间,即排除了一些异常的情况(剩余的那1%),又保证了大多数用户的响应时间。上面的方法都不能用来做全链路压测,都缺少很多核心功能,比如请求录制,定时压测,实时监控,报告分析等等,这个时候我们可以直接使用阿里云的PTS进行全链路压测,或者自研一套基于自己业务系统的全链路压测系统。

Cenfalan的博客 3170

【模型转换】将.mindir文件转换成.ms文件(Windows篇)

首先需要在MindSpore中训练好并经过评估可用的模型,可以以标准格式(例如onnx, mindir等)导出,得到.mindir模型文件(例如lenet.mindir)。为了将模型部署到自定义应用中,还需要将其转换为更为紧凑和高效的ms格式模型,用于在MindSpore-Lite环境中推理,这可以通过MindSpore Lite提供的模型转换工具converter_lite完成。

qq_42962847的博客 1425

量化交易新手必看:如何用vnpy+Tushare轻松获取A股历史数据(附完整代码)

本文为量化交易新手提供了使用vnpy和Tushare构建A股历史数据获取系统的完整指南。通过详细的代码示例,手把手教你搭建环境、封装数据获取引擎,并实现日线等数据的格式转换与本地存储,为策略回测与分析奠定坚实的数据基础。

weixin_29098117的博客 378

cudnn.benchmark

Benchmark模式会提升计算速度,但是由于计算中有随机性,每次网络前馈结果略有差异。 torch.backends.cudnn.benchmark = True 1 如果想要避免这种结果波动,设置: torch.backends.cudnn.deterministic = True 版权声明:本文为优快云博主「wang xiang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.youkuaiyun.com/qq_40178291/...

jacke121的专栏 1万+

我用GPT-5.5十分钟就搞定了论文创新点!全靠这三个提示词

各位同仁好,我是七哥。一个在高校里从事人工智能 相关领域研究,钻研用大模型AI实操的学术人。可以和七哥交流学术写作或Gemini、GPT、Claude 等大模型 学术实操相关问题,多多交流,相互成就,共同进步。多数研究者一写创新点就总觉得只有提出了全新的理论、颠覆了整个领域,才算真正的创新。但学术研究里的创新,有一半不是从零创造的,是在前人工作的基础上,准确找到还没人解决、或者没解决好的问题,而且真正能立住的创新通常都离不开以下这三个问题。第一,前人到底缺了什么。

智能AI让学术科研更容易 707

如何使用 Apple 提供的 benchmark 工具

如果你有 Metal 编程经验,你可以编写一个用于测试渲染、着色器、图像处理等任务性能的自定义 benchmark 程序。场景推荐工具AI 模型推理性能图形程序性能分析实时渲染帧率 / 调试瓶颈深度自定义任务测试自己写 Metal benchmark 项目。

王景程的博客 1842

利用Python实现Springer文献关键词爬虫

🔧 如何分析Springer的搜索结果HTML结构🕷️ 编写高性能异步爬虫抓取论文元数据📊 使用Pandas导出Excel🧠 如何处理作者、摘要、DOI等字段🔄 如何优化爬虫稳定性与可扩展性。

2201_76125261的博客 414

复现Fastjson反序列化漏洞(从dnslog回显到rce再到反弹shell)

Fastjson是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。它还可以用于将JSON字符串转换为等效的Java对象,fastjson爆出多个反序列化远程命令执行漏洞,攻击者可以通过此漏洞远程执行恶意代码来入侵服务器。......

记录并分享学习安全的知识点.. 2697

如果你想写自己的Benchmark框架

使用过JMH的同学一定会惊叹它的神奇。JMH作为一个优秀的Benchmark框架带给了我们无数的欢乐。作为一个有极客精神的程序员,那么有没有想过去自己实现一个Benchmark框架呢? 在实现Benchmark框架的时候有需要注意些什么问题呢?快来一起看看吧。

程序那些事 1万+

一次搞定 SAP IDoc 失败重处理与安全清理:BD87 实战指南

本文介绍了SAP IDoc错误处理的BD87实战指南。主要内容包括: BD87的核心功能:监控IDoc处理状态并支持人工重处理或标记删除,适用于入站/出站IDoc故障处理。 重处理前的关键步骤: 区分技术错误与业务错误 检查是否允许重复处理 确认日期范围设置正确 标准操作流程:通过BD87选择错误IDoc节点执行重处理,特别适用于状态51的应用错误。 标记删除操作:将无用IDoc标记为可清理状态,后续可通过WE11物理删除或归档处理。 常见问题解决方案:包括权限控制、批量处理优化建议以及自动化定位工具的开发

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 452

Redis-benchmark使用总结

Redis-benchmark为Redis性能测试工具,本文主要对使用做了介绍和示例。

流子的专栏 3万+

Java代码变更影响分析:从静态解析到动态调用图的实战全链路

本文介绍了Java代码提交影响分析的核心原理与实现方法。主要内容包括:1)静态分析技术,通过JavaParser解析AST构建调用图,记录类与方法间的调用关系;2)动态分析技术,使用ByteBuddy进行字节码增强,捕获运行时调用路径;3)JCCI工具实现,结合javalang、unidiff等技术分析代码改动影响,并将结果存储到SQLite数据库。文章提供了完整的代码示例,展示了从AST解析、动态调用跟踪到实际工具应用的完整技术栈,为代码变更影响分析提供了实用解决方案。

墨夶的博客 1252

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

BenchMark【理论篇】02:什么是BenchMark

BenchMark【理论篇】02:什么是BenchMark

weixin_40612128的博客 9146

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

下一篇: 数据分析 第一篇
study_code_ing
博客等级 码龄5年 41粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值