文章目录 1. Benchmark 简介 2. Benchmark 组成 2.1 数据集 2.2 工作负载 2.3 度量指标 Benchmark简介 1. Benchmark 简介 BenchMark 是一种评价方式,
文章目录
- 1. Benchmark 简介
- 2. Benchmark 组成
- 2.1 数据集
- 2.2 工作负载
- 2.3 度量指标
- Benchmark简介
1. Benchmark 简介
BenchMark 是一种评价方式,在计算机领域的性能测试方面有广泛应用,主要负责测试负载的执行时间、传输速度、吞吐量和资源占用率。
性能调优的两大利器是Benchmark和profile工具。Benchmark用压力测试挖掘整个系统的性能状况,而profile工具最大限度地呈现系统的运行状态和性能指标,方便用户诊断性能问题和进行调优。
2. Benchmark 组成
数据集、工作负载、度量指标。
2.1 数据集
数据类型分为结构化数据、半结构化数据和非结构化数据。
- 结构化数据:传统的关系数据模型,可用二维表结构表示。典型场景有电商交易、财务系统、医疗 HIS 数据库、政务信息化系统等等;
- 半结构化数据:类似 XML、HTML 之类,自描述,数据结构和内容混杂在一起。典型应用场景有邮件系统、Web 搜索引擎存储、教学资源库、档案系统等等,可以考虑使用 Hbase 等典型的 KeyValue 存储;
- 非结构化数据:各种文档、图片、视频和音频等。典型的应用有视频网站、图片相册、交通视频监控等等。
2.2 工作负载
- 密集计算类型:CPU密集型计算、IO密集型计算、网络密集型计算;
- 计算范式:SQL、批处理、流计算、图计算、机器学习;
- 计算延迟:在线计算、离线计算、实时计算;
- 应用领域:搜索引擎、社交网络、电子商务、地理位置、媒体、游戏。
2.3 度量指标
性能估算的两大利器就是 Benchmark 和 Profile 工具。
Benchmark 用压力测试挖掘整个系统的性能状况,而 Profile 工具最大限度地呈现系统的运行时状态和性能指标,方便用户诊断性能问题和进行调优。
- 工具的使用
- 在架构层面:perf、nmon等工具和命令;
- 在JVM层面:btrace、Jconsole、JVisualVM、JMap、JStack等工具和命令;
- 在Spark层面:web ui、console log,也可以修改Spark源码打印日志进行性能监控。
- 度量指标
- 从架构角度度量:浮点型操作密度、整数型操作密度、指令中断、cache命中率、TLB命中;
- 从Spark系统执行时间和吞吐的角度度量:Job作业执行时间、Job吞吐量、Stage执行时间、Stage吞吐量、Task执行时间、Task吞吐量;
- 从Spark系统资源利用率的角度度量:CPU在指定时间段的利用率、内存在指定时间段的利用率、磁盘在指定时间段的利用率、网络带宽在指定时间段的利用率;
- 从扩展性的角度度量:数据量扩展、集群节点数据扩展(scale out)、单机性能扩展(scale up)。