Benchmark(基准测试)初相识

2023-05-16

一、benchmark概念

        在计算中,基准是运行一个计算机程序、一组程序或其他操作的行为,以评估一个对象的相对性能,通常是通过对它运行一些标准测试和试验。

        基准测试一词也通常用于精心设计的基准测试程序本身。

基准测试通常与评估计算机硬件的性能特征有关,例如CPU的浮点性能运算性能,但在某些情况下该技术也使用于软件。如,软件基准测试针对编译器或者数据库管理系统(DBMS)运行。

基准测试提供了一种比较不同芯片、系统架构中各种子系统性能的方法。

核心定义:通过设计合理的测试方法,选用合适的测试工具和被测系统,实现对某个特定目标场景的某项性能指标进行定量的和可对比的测试。

二、基准测试的关键点:

  • 测试方法:到底使用微基准测试,介基准测试,还是使用宏基准测试,需要根据我们的需要选择一个合适的。
  • 测试工具:选择合适的测试工具,能更好的精确的测量出我们的数据。
  • 某个目标场景:性能测试时,往往需要选择一些场景。比如到底只是达到某个比较低的标准即可,还是想直接把系统压死等等
  • 某项性能指标:需要知道这一次到底追求的是哪个性能指标,到底是QPS还是吞吐量,还是TP99等等。
  • 可对比:用不同的方法或者工具进行多次测试进行数据对比

三、测试方法:

(一)微基准测试

        微基准测试(Micro-benchmarks)是基准测试中的一种方法,用来测试微小代码单元的性能,通常这个微小代码单元可以是一段算法,一个方法,一个数据结构。

(二)宏基准测试

        宏基准测试(macro-benchmark),顾名思义和上面的测试相反,往往会测试一个应用的整体性能,比如模拟大量的真实用户使用这个应用,从而测试出性能。很多时候我们的全链路压测基本就会对应宏基准测试,测试所需要的的流程以及环境都和真实场景一样,这样才能真正的测试出整个应用性能的问题。在真正的全链路压测的情况下,往往会把真实的请求数据先复制下来,然后收集足够多的数据之后,利用这些真实的数据来进行压测。

(三)介基准测试

        宏基准测试对于很多场景比较重,这个时候就出现了介基准测试,介基准测试没有要求请求的真实,在整个链路上一些不是很重要的地方在介基准测试中都可以进行忽略,比如登录验证,安全验证等等,将测试的目标聚焦在我们的业务核心上,通过介基准测试能让我们更简便的测试出系统的性能。

四、测试工具

(一)JMeter

        Apache JMeter是Apache组织开发的基于Java的压力测试工具。它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器等等。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。同时JMeter支持对性能压测结果做图形分析。

        JMeter通常是一个模拟用户就是一个线程,当模拟并发数变多的时候性能会下降,通常会搭建一个JMeter集群去模拟并发数较多的情况。

(二)Gatling

        Gatling是一款基于Scala 开发的高性能服务器性能测试工具,它主要用于对服务器进行负载等测试,并分析和测量服务器的各种性能指标。Gatling主要用于测量基于HTTP的服务器,比如Web应用程序,RESTful服务等。

        Gatling对Java选手来说有一定的学习成本,并且Gatling国内好像使用得较少,但是Gatling使用得Akka Actors异步模型,他可以使用少量的线程就能支持高并发,不需要像JMeter一样搭建多个集群去使用。Gatling在我们公司使用得较多,目前只能测试Http相关的,如果要测试rpc相关的需要先将rpc协议转换成Http协议。

(三)全链路压测PTS/自研

        上面的方法都不能用来做全链路压测,都缺少很多核心功能,比如请求录制,定时压测,实时监控,报告分析等等,这个时候我们可以直接使用阿里云的PTS进行全链路压测,或者自研一套基于自己业务系统的全链路压测系统。

五、性能指标

通常进行基准测试的时候,在结果中会有很多需要值得关注的目标,下面列举一些比较重要的。

(一)QPS/TPS(衡量吞吐量)

        QPS是我们的每秒查询数量,TPS是每秒的事务数量。通常我们进行基准测试往往会定一个目标,比如支撑1000QPS的请求量来完成我们的目标,或者测试出我们这个系统极限的QPS是多少,同样的QPS也不是越大越好,也需要结合我们的响应时间,如果我们一味的追求QPS忽略了响应时间那么用户的体验也是极差的。

(二)TP99/TP95

        有很多认为响应时间应该看平均时间,如果写要求比较低的系统的确是可以看平均时间,这样就会导致很多用户响应的速度很慢,但是我们在监控指标上体现不出来,所以就有了百分位指标这样的概念,TP99的意思就是,取排名排到第99百分位的响应时间,即排除了一些异常的情况(剩余的那1%),又保证了大多数用户的响应时间。(平均响应时间、最小响应时间、最大响应时间、时间百分比等,其中时间百分比参考意义较大,如前95%的请求的最大响应时间。)

(三)CPU(并发量)

        当我们有很多CPU密集型应用的时候,可以多多关注CPU的情况,从而进行针对性的调优

(四)GC

        如果是Java的应用,GC问题绝对不会缺席,尤其是在我们基准测试中,往往如果在测试中出现了大量的GC,说不定是代码写得有问题,有时候可以通过代码进行优化,或者说也可以更换GC收集器。

(五)io

        当我们传输的数据比较多的时候,比如传输文件,或者一些大的数据结构,这个时候就需要关注I/O相关的问题,来进行针对的调优。

六、可对比

可对比同样是基准测试的重要点,通常有下面的几个点:

  • 使用不同的测试工具做对比
  • 使用不同的测试数据做对比
  • 使用不同的测试环境做对比
  • 建立长期的基准测试,进行不同时间的基准测试对比。

通常基准测试就是要随时进行测试因子变量的变更,我们才能真正的得到最优的测试结果。

参考:聊聊基准测试 - 云+社区 - 腾讯云 (tencent.com)

【压测】基准测试、性能测试、压力测试--Sysbench_ITPUB博客

https://en.m.wikipedia.org/wiki/Benchmark_(computing)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Benchmark(基准测试)初相识 的相关文章

  • 【Ubuntu】修改ubuntu和windows双系统启动顺序

    目录 一 问题描述二 背景知识1 GRUB是什么2 GRUB配置文件3 96 etc default grub 96 主配置文件 二 问题分析三 解决方案1 修改grub主配置文件2 更新grub配置文件 一 问题描述 Ubuntu 43
  • STM32状态机编程实例——全自动洗衣机(上)

    前面几篇文章 xff0c 以按键功能 xff0c 介绍了状态机的原理与按键状态机实例 xff0c 实现按键单击 双击 长按等状态的检测 本篇 xff0c 继续使用状态机编程 xff0c 来实现一个更有趣的功能 全自动洗衣机 1 全自动洗衣机
  • Keil的stm32工程中一些文件的作用

    stm32工程中有一堆文件如下 xff1a 一直没搞明白他们的作用 xff0c 现整理如下 xff1a 从start文件夹开始 xff0c 第一个文件startup stm32f10x md s 这是启动文件 xff0c 是用汇编语言编写的
  • FreeRTOS消息队列、信号量、事件组、任务通知之间的总结

    转载自 xff1a FreeRTOS消息队列 信号量 事件标志组 任务通知 丨匿名用户丨的博客 CSDN博客 功能及区别列表 消息队列 xff08 需要传递消息时使用 xff09 在任务与任务间 中断和任务间传递信息 xff0c 可以数据传
  • FreeRTOS小项目实战------基于FreeRTOS和stm32的门禁系统

    目录 收获 系统总体框架 程序框架 具体程序实现 工程文件网盘链接 收获 学习freertos的移植与裁剪 xff0c 对任务间通信的认识更加深刻 xff0c 加深了实时操作系统的理解 xff0c 学习了as608指纹模块 xff0c rc
  • 自制操作系统12:移动鼠标 - 中断机制探秘,捕获键盘中断

    参考 xff1a https www bilibili com video BV1VJ41157wq p 61 12 amp spm id from 61 pageDriver https blog csdn net tyler downl
  • 全日制和非全日制的含金量是哪个高啊?

    我们不该拿成人学历去和普通全日制的学历去比较 xff0c 去纠结成人学历的含金量高与低 成人在职人士只是需要学历作为人生进步的敲门砖 不是每个人都有魄力和时间去重新参加全日制高考 xff0c 读完三 四年的全日制学历再去工作
  • c/c++笔试

    1 xff0e 进程和线程的差别 线程是指进程内的一个执行单元 也是进程内的可调度实体 与进程的区别 1 调度 xff1a 线程作为调度和分配的基本单位 xff0c 进程作为拥有资源的基本单位 2 并发性 xff1a 不仅进程之间可以并发执
  • Linux摄像头驱动1——vivid

    CSDN仅用于增加百度收录权重 xff0c 排版未优化 xff0c 日常不维护 请访问 xff1a www hceng cn 查看 评论 本博文对应地址 https hceng cn 2018 03 08 Linux摄像头驱动1 vivid
  • webrtc 百亿流媒体服务器开发(1)-服务器编程基础

    webrtc 百亿流媒体服务器开发 xff08 1 xff09 网络编程基础 xff08 1 xff09 文章目录 如何开发以一个简单服务器 信号什么是信号信号的处理方式都有哪些信号 几个重要的信号发送信号signal xff08 xff0
  • 不知道怎么开发VR游戏?Unity5.3官方VR教程重磅登场-系列3 VR中的交互方式

    不知道怎么开发VR游戏 xff1f Unity5 3官方VR教程重磅登场 系列3 VR中的交互方式 王寒 4 个月前 https zhuanlan zhihu com p 20505470 概览 xff1a 在VR项目中 xff0c 我们需
  • md5.pro.js前端MD5加密插件

    下载地址 例如我们对abc进行md5加密 xff0c 则只需要调用hex md5 34 md5 34 xff0c 方法则会返回加密后的字符串900150983cd24fb0d6963f7d28e17f72 dd
  • 【项目经验】Jetson xavier nx开发板-从裸机到深度学习环境配置

    Jetson xavier nx 开发板 一 镜像安装 参考博文Jetson Xavier NX 烧写系统镜像 1 镜像下载 到英伟达官方下载地址https developer nvidia com zh cn embedded downl
  • ROS探索总结(十五)——amcl(导航与定位)

    在理解了move base的基础上 xff0c 我们开始机器人的定位与导航 gmaping包是用来生成地图的 xff0c 需要使用实际的机器人获取激光或者深度数据 xff0c 所以我们先在已有的地图上进行导航与定位的仿真 amcl是移动机器
  • 关于ROS学习的一些反思

    距离发布上一篇ROS的博客已经过去两年了 xff0c 才发现原来自己已经这么久可没有写过关于ROS的文章 xff0c 想来很是惭愧 这两年时间 xff0c 自己怀着程序员的梦想 xff0c 研究过RTOS xff0c 探索过Linux xf
  • ROS探索总结(十八)——重读tf

    在之前的博客中 xff0c 有讲解tf的相关内容 xff0c 本篇博客重新整理了tf的介绍和学习内容 xff0c 对tf的认识会更加系统 1 tf简介 1 1 什么是tf tf是一个让用户随时间跟踪多个参考系的功能包 xff0c 它使用一种
  • ROS探索总结(十二)——坐标系统

    在机器人的控制中 xff0c 坐标系统是非常重要的 xff0c 在ROS使用tf软件库进行坐标转换 相关链接 xff1a http www ros org wiki tf Tutorials Learning tf 一 tf简介 我们通过一
  • qt切换设置多个ui界面的两种方式

    qt切换多个ui界面的两种方式 这是本人写的第一篇问文章 xff0c 有什么问题请大家多多批评指正 话不多说 xff0c 进入正文 xff1a 老师最近接了一个自来水管检漏的项目 xff0c 需要制作上位机来接收传感器传来的数据 于是果断选
  • firebird数据库安装连接的一些常见错误及解决方法

    firebird数据库安装连接的一些常见错误及解决方法 最近有一个需求是把数据库里面的数据提取出来 xff0c 这个数据库的后缀是 fdb xff0c 查阅资料可知应该是firebird数据库的文件 xff0c 可是firebird数据库是
  • PX4与Gazebo、ROS/MAVROS以及QGC地面站之间的通信

    PX4与Gazebo ROS MAVROS以及QGC地面站之间的通信 一 整体框架 ROS xff08 机器人操作系统 xff09 可用于PX4和Gazebo模拟器 它使用MAVROS MAVLink节点与PX4通信 ROS Gazebo与

随机推荐

  • 四旋翼飞行器控制模型公式推导

    四旋翼飞行器控制模型 为便于建立模型 xff0c 现对四旋翼飞行器进行以下假设 xff1a 1 四旋翼飞行器是均匀对称的刚体 2 四旋翼飞行器的质量和转动惯量不发生改变 3 四旋翼飞行器的几何中心与其重心重合 4 四旋翼飞行器只受重力和螺旋
  • java中几种读取配置文件的方法

    java读取 properties配置文件的几种方法 xff08 1 xff09 Properties类读取 Properties类继承自Hashtable类并且实现了Map接口 xff0c 也是使用一种键值对的形式来保存属性集 不过Pro
  • Java项目分层

    MVC模式 在实际的开发中有一种项目的程序组织架构方案叫做MVC模式 xff0c 按照程序 的功能将他们分成三个层 xff0c 如下图 xff1a Modle层 xff08 模型层 xff09 View层 xff08 显示层 xff09 C
  • 简单介绍控制理论(经典、现代)

    1 经典和现代的区别和联系 xff08 1 xff09 区别 研究对象 经典控制系统一般局限于单输入单输出 线性定常系统 主要分为开环控制系统和闭环控制系统 严格的说 xff0c 理想的线性系统在实际中并不存在 实际的物理系统 xff0c
  • 框架中<include>**/*.xml</include>配置解释

    在mybatis Spring SpringMVC SpringBoot等框架的配置文件中经常会使用到如下代码 xff1a lt resource gt lt directory gt src main java lt directory
  • 反转单链表的几种方式对比(包括双指针法和递归)

    需求 xff1a 给你单链表的头节点 head xff0c 请你反转链表 xff0c 并返回反转后的链表 方式一 xff1a 双指针法 建立一个虚拟节点 class Solution public ListNode reverseList
  • 正则表达式 ^$ 同时出现代表什么

    与 同时出现在正则前后表示什么 xff1f 脱字符 xff1a 匹配开头 xff0c 若存在多行匹配多行的行头 美元符 xff1a 匹配尾部 xff0c 若存在多行匹配多行的尾部 同时写时只是限制字符的起点与终点 xff0c 比如 xff1
  • 设置虚拟机为固定IP,避免每次启动虚拟机都会分配新的IP地址

    采用一种最简单的方式 xff0c 通过修改配置文件来指定IP xff0c 并可以连接到外网 要求 xff1a 将IP地址配置为静态的 xff0c 比如设固定IP地址为192 168 117 131 打开文件 etc sysconfig ne
  • 我的2014--众人皆醉我独醒

    转眼间大学两年过去了 xff0c 舍友们还在撸游戏 xff0c 有的也找到了另一半的归属 我是我宿舍唯一一个不玩电脑游戏的人 xff0c 当然 xff0c 不是不玩游戏就代表着成绩很好 xff0c 也不代表玩游戏就不好 xff0c 但意味着
  • Java多线程通信-利用传统的线程通信wait(),notify()方法实现“生产者消费者模式”

    想利用传统的线程通信wait notify xff0c notifyAll 方法 xff0c 必须依赖于同步监听器的存在 xff0c 也就是说 xff0c 对于synchronized修饰的同步方法 xff0c 因为该类的默认实例 xff0
  • java TCP/IP实现简单的多人聊天功能

    TCP IP是可靠的网络协议 xff0c 数据的传输需要服务端和客户端之间三次 握手 xff0c 比较适合文本等一些可靠性要求高的数据传输 xff0c 但是它的效率较UDP低 下面通过一张图来简要说明使用 ServerSocket 创建 T
  • 死锁面试题(什么是死锁,产生死锁的原因及必要条件)

    什么是死锁 xff1f 所谓死锁 xff0c 是指多个进程在运行过程中因争夺资源而造成的一种僵局 xff0c 当进程处于这种僵持状态时 xff0c 若无外力作用 xff0c 它们都将无法再向前推进 因此我们举个例子来描述 xff0c 如果此
  • 标准模板库-容器

    标准模板库STL Standard Template Libarary 是一个标准类与函数模板的库 STL包含容器 容器适配器 迭代器 算法 函数对象和函数适配器 容器 用来存储和组织其他对象的对象 T是存储在容器中的元素类型的模板类型形参
  • Ubuntu18.04安装PX4踩坑、报错及解决方案整理

    笔者最近需要跑无人机巡检大坝的仿真 xff0c 于是在自己的Ubuntu2018 04中开始安装PX4 xff0c 问过不少之前已经装过PX4的师兄和同学 xff0c 都曾在PX4安装过程中踩过许多坑 xff0c 耗费了不少时间 xff0c
  • 初识ROS文件结构:以阿木实验室Prometheus项目为例

    ROS的工作空间是一个存放工程开发相关文件的文件夹 xff0c Fuerte版本之后的ROS默认使用的是Catkin编译系统 功能包是ROS软件中的基本单元 xff0c 包含ROS节点 库 配置文件等 一个文件夹是功能包的标志是该文件夹中有
  • 六轴无人机装配问题小结(Pixhawk飞控、APM固件、电机装配、电调校准)

    笔者近期需要组装一架六轴无人机供超声波避障模块 单点激光雷达等传感器的测试使用 由于是第一次碰真机 xff0c 面对散落一箱的部件还是非常的头大的 xff0c 不过好在实验室有经验的大佬能提供一些指导 xff0c 并且还能够参考 创客智造
  • 测试API接口,返回404。

    报错 xff1a 34 timestamp 34 34 2020 06 02T12 40 53 125 43 00 00 34 34 status 34 404 34 error 34 34 Not Found 34 34 message
  • 再谈STM32的CAN过滤器-bxCAN的过滤器的4种工作模式以及使用方法总结

    转自 xff1a http blog csdn net flydream0 article details 52317532 1 前言 bxCAN是STM32系列最稳定的IP核之一 xff0c 无论有哪个新型号出来 xff0c 这个IP核基
  • NVIDIA TX2自制底板的USB口无法使用的一种解决方法

    这是由于官方的底板上采用INA3221芯片做了电源监控电路 xff0c 只有确保5V电源达到要求的情况下才会使能USB口 而自制的底板上将上述电路省略了 xff0c 所以导致了USB口无法使用 解决办法就是要给TX2更新设备树 在网上找到一
  • Benchmark(基准测试)初相识

    一 benchmark概念 在计算中 xff0c 基准是运行一个计算机程序 一组程序或其他操作的行为 xff0c 以评估一个对象的相对性能 xff0c 通常是通过对它运行一些标准测试和试验 基准测试一词也通常用于精心设计的基准测试程序本身