7.2.3 度量指标

性能调优的两大利器就是Benchmark和Profile工具,读者可以结合Spark性能调优章节,通过Benchmark和Profile工具,及相应的调优方法对Spark性能调优。Benchmark用压力测试挖掘整个系统的性能状况,而Profile工具最大限度地呈现系统的运行时状态和性能指标,方便用户诊断性能问题和进行调优。

用户在实战中可以采用一些原生的Profile工具,通过以下几个方面对系统性能指标进行度量。

1.工具使用

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

2)在JVM层面:btrace、Jconsole、JVisualVM、JMap,JStack等工具和命令。

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

2.度量指标

(1)从架构角度进行度量

·浮点型操作密度。

·整数型操作密度。

·指令中断。

·cache命中率(L1 miss、L2 miss、L3 miss)。

·TLB命中。

(2)从Spark系统执行时间和吞吐的角度度量

·Job作业执行时间。

·Job吞吐量。

·Stage执行时间。

·Stage吞吐量。

·Task执行时间。

·Task吞吐量。

(3)从Spark系统资源利用率的角度度量

·CPU在指定时间段的利用率。

·内存在指定时间段的利用率。

·磁盘在指定时间段的利用率。

·网络带宽在指定时间段的利用率。

(4)从扩展性的角度度量

·数据量扩展。

·集群节点数扩展(scale out)。

·单机性能扩展(scale up)。