Benchmark 性能测试简介

原创 2016年08月29日 18:25:44

一、Benchmark简介

Benchmark是一个评价方式,在整个计算机领域有着长期的应用。正如维基百科上的解释“As computer architecture advanced, it became more difficult to compare the performance of various computer systems simply by looking at their specifications.Therefore, tests were developed that allowed comparison of different architectures.”Benchmark在计算机领域应用最成功的就是性能测试,主要测试负载的执行时间、传输速度、吞吐量、资源占用率等。

性能调优的两大利器是Benchmark和profile工具。Benchmark用压力测试挖掘整个系统的性能状况,而profile工具最大限度地呈现系统的运行状态和性能指标,方便用户诊断性能问题和进行调优。

二、Benchmark的组成

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

1、数据集

数据类型分为结构化数据、半结构化数据和非结构化数据。由于大数据环境下的数据类型复杂,负载多样,所以大数据Benchmark需要生成3种类型的数据和对应负载。

1)结构化数据:传统的关系数据模型,可用二维表结构表示。典型场景有电商交易、财务系统、医疗HIS数据库、政务信息化系统等等;

2)半结构化数据:类似XML、HTML之类,自描述,数据结构和内容混杂在一起。典型应用场景有邮件系统、Web搜索引擎存储、教学资源库、档案系统等等,可以考虑使用Hbase等典型的KeyValue存储;

3)非结构化数据:各种文档、图片、视频和音频等。典型的应用有视频网站、图片相册、交通视频监控等等。

2、工作负载

互联网领域数据庞大,用户量大,成为大数据问题产生的天然土壤。对工作负载理解和设计可以从以下几个维度来看

1)密集计算类型:CPU密集型计算、IO密集型计算、网络密集型计算;

2)计算范式:SQL、批处理、流计算、图计算、机器学习;

3)计算延迟:在线计算、离线计算、实时计算;

4)应用领域:搜索引擎、社交网络、电子商务、地理位置、媒体、游戏。

3、度量指标

性能高估的两大利器就是Benchmark和Profile工具。Benchmark用压力测试挖掘整个系统的性能状况,而Profile工具最大限度地呈现系统的运行时状态和性能指标,方便用户诊断性能问题和进行调优。

1)工具的使用

   a)在架构层面:perf、nmon等工具和命令;

   b)在JVM层面:btrace、Jconsole、JVisualVM、JMap、JStack等工具和命令;

   c)在Spark层面:web ui、console log,也可以修改Spark源码打印日志进行性能监控。

2)度量指标

   a)从架构角度度量:浮点型操作密度、整数型操作密度、指令中断、cache命中率、TLB命中;

   b)从Spark系统执行时间和吞吐的角度度量:Job作业执行时间、Job吞吐量、Stage执行时间、Stage吞吐量、Task执行时间、Task吞吐量;

   c)从Spark系统资源利用率的角度度量:CPU在指定时间段的利用率、内存在指定时间段的利用率、磁盘在指定时间段的利用率、网络带宽在指定时间段的利用率;

   d)从扩展性的角度度量:数据量扩展、集群节点数据扩展(scale out)、单机性能扩展(scale up)。

三、Benchmark的运用

1、Hibench:由Intel开发的针对Hadoop的基准测试工具,开源的,用户可以到Github库中下载

2、Berkeley BigDataBench:随着Spark的推出,由AMPLab开发的一套大数据基准测试工具,官网介绍

3、Hadoop GridMix:Hadoop自带的Benchmark,作为Hadoop自带的测试工具使用方便、负载经典,应用广泛

4、Bigbench:由Teradata、多伦多大学、InfoSizing、Oracle开发,其设计思想和利用扩展具有研究价值,可以参阅论文Bigbench:Towards an industry standard benchmark for big data analytics。

5、BigDataBenchmark:由中科院研发,官方介绍

6、TPC-DS:广泛应用于SQL on Hadoop的产品评测

7、其他的Benchmark:Malstone、Cloud Harmony、YCSB、SWIM、LinkBench、DFSIO、Hive performance Benchmark(Pavlo)等等

版权声明:本文为博主原创文章,未经博主允许不得转载。

通用型C/C++程序性能测试Benchmark的简单实现

在完成一个算法的改进后, 除了人工估算时间复杂度外, 我们可能还希望直观地检测改进效果, 现有的性能分析工具比如Intel® VTune™ Amplifier自然满足需求, 然而有时候使用第三方工具的...
  • rrrfff
  • rrrfff
  • 2015年04月11日 17:30
  • 25195

nbench -嵌入式处理器性能测试

nbench 介绍 nbench是一个简单的用于测试处理器,存储器性能的基准测试程序。即著名的BYTE Magazine杂志的BYTEmark benchmark program。nbench...
  • MetalSeed
  • MetalSeed
  • 2015年03月26日 15:43
  • 2520

VOT 2015 Benchmark 使用教程

vot-toolkit 2014下载地址 https://github.com/votchallenge/vot-toolkit 0. 根据官网教程,配置好NCC跟踪器,这时会生成如下文件 ...
  • Shmilysi
  • Shmilysi
  • 2016年10月30日 15:08
  • 6012

Google benchmark:一个简单易用的C++ benchmark库

在写C++程序的时候,经常需要对某些函数或者某些类的方法进行benchmark。一般来说,我们可以写一些简单的程序来进行测试, 然后跑一定的次数(比如10w次),看看跑了多久。 比如我写了下面这个从...
  • Tornado1102
  • Tornado1102
  • 2017年09月14日 10:50
  • 218

大数据领域的Benchmark介绍

一、Benchmark简介 Benchmark是一个评价方式,在整个计算机领域有着长期的应用。正如维基百科上的解释“As computer architecture advanced, it beca...
  • u012050154
  • u012050154
  • 2016年02月24日 15:12
  • 5152

Java 性能测试工具 JMH

前言 最近在看《Java8函数式编程》时,发现了一个性能测试工具 JMH(Java Microbenchmark Harness)。这个工具方便了我们进行微基准测试。比如,在进行微基准测试时,我们...
  • hotdust
  • hotdust
  • 2017年05月23日 15:57
  • 1541

SPEC benchmark 测试程序使用教程

本文根据SPEC官方资料翻译而来,欢迎大家学习交流
  • timesir
  • timesir
  • 2017年10月04日 12:13
  • 710

STREAM Benchmark及其操作性能分析

STREAM Benchmark及其操作性能分析文/raywill     STREAM 是业界广为流行的综合性内存带宽实际性能 测量 工具之一。随着处理器处理核心数量的增多,内存带宽对于提...
  • maray
  • maray
  • 2011年03月08日 10:50
  • 15722

使用Apache Benchmark做压力测试遇上的5个常见问题

文章转载自:http://mo2g.com/view/50/ 这一篇文章主要记录我在使用Apache Benchmark(一下检测ab)做网站压力测试的过程中,遇到的一些问题以及解决...
  • sangyongjia
  • sangyongjia
  • 2015年10月13日 10:25
  • 1434

学习笔记:MySQL基准测试之Benchmark Suite

MySQL Benchmark Suite是除了“mysqlslap”命令行工具(http://blog.csdn.net/sweeper_freedoman/article/details/7355...
  • sweeper_freedoman
  • sweeper_freedoman
  • 2017年06月22日 20:38
  • 1892
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Benchmark 性能测试简介
举报原因:
原因补充:

(最多只允许输入30个字)