关于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做进一步更深的记忆与理解
相关文章
- 直接在代码里面对list集合进行分页
- .NET Framework 4.5新特性详解
- 大数据的简要介绍
- 大数据的由来
- 高斯混合模型的自然梯度变量推理
- timing-wheel 仿Kafka实现的时间轮算法
- 使用Navicat软件连接自建数据库(Linux系统)
- 那一天,我被Redis主从架构支配的恐惧
- Redis 深入了解键的过期时间
- C#使用委托调用实现用户端等待闪屏
- 基于流计算 Oceanus 和 Elasticsearch Service 构建百亿级实时监控系统
- GRAND | 转录调控网络预测数据库
- JFreeChart API中文文档
- 临床相关突变查询数据库
- TIGER | 人类胰岛基因变化查询数据库
- 视频边缘计算网关EasyNVR在视频整体监控解决方案中的应用分析
- Apache Arrow - 大数据在数据湖后的下一个风向标
- 常见的电商数据指标体系
- AKShare-艺人数据-艺人流量价值
- MySQL中多表联合查询与子查询的这些区别,你可能不知道!