关于Benchmark

文章目录


前言

Benchmark对我来说是一个全新的知识网络,由此来记录关于Benchmark 的小白笔记


一、什么是Benchmark?

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

二、Benchmark的组成

1.数据集

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


  • 结构化数据
    • 传统的关系数据模型,可用二维表结构表示。典型场景有电商交易、财务系统、医疗HIS数据库、政务信息化系统等等;
  • 半结构化数据
    • 类似XML、HTML之类,自描述,数据结构和内容混杂在一起。典型应用场景有邮件系统、Web搜索引擎存储、教学资源库、档案系统等等,可以考虑使用Hbase等典型的KeyValue存储;
  • 非结构化数据
    • 各种文档、图片、视频和音频等。典型的应用有视频网站、图片相册、交通视频监控等等。

2.工作负载

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


  • 密集计算类型
    • CPU密集型计算、IO密集型计算、网络密集型计算;
  • 计算范式
    • SQL、批处理、流计算、图计算、机器学习;
  • 计算延迟
    • 在线计算、离线计算、实时计算;
  • 应用领域
    • 搜索引擎、社交网络、电子商务、地理位置、媒体、游戏。

3.度量指标

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


  • 工具的使用
    • a)在架构层面:perf、nmon等工具和命令;
    • b)在JVM层面:btrace、Jconsole、JVisualVM、JMap、JStack等工具和命令;
    • c)在Spark层面:web ui、console log,也可以修改Spark源码打印日志进行性能监控。
  • 度量指标
    • 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)等等

四、开源基准

  • DEISA基准套件:科学HPC应用基准
  • Dhrystone:整数运算性能
  • Fhourstones:一个整数基准(提示:它将计算机系统作为一个整体进行排序。)
  • Iometer:用于单个和集群系统的I/O子系统测量和表征工具。
  • Linpack,传统上用于测量翻牌
  • LAPACK[需要引用]
  • NAS并行基准
  • NBench:综合基准测试套件,用于测量整数运算、内存运算和浮点运算的性能
  • PAL:实时物理引擎的基准
  • Phoronix测试套件:针对Linux、OpenSolaris、FreeBSD、OSX和Windows的开源跨平台基准测试套件。它包括本页中包含的许多其他基准测试,以简化执行。
  • POV光线:3D渲染
  • Tak(function):用于测试递归性能的简单基准
  • TATP基准:电信应用事务处理基准
  • TPoX:XML数据库的XML事务处理基准
  • Whetstone:浮点算术性能

总结

以上就是我对benchmark的初步理解与笔记整理,参考了各个网站大神的分享与总结,此处附上我的思维导图以便对benchmark做进一步更深的记忆与理解

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>