[论文解读] Architectural Impact on Performance of In-memory Data Analytics: Apache Spark Case Study
本文通过使用硬件性能计数器,在现代规模扩展型服务器上研究了 Apache Spark 工作负载(批处理、流处理和机器学习)的微架构性能。研究发现,DRAM 延迟是主要瓶颈,并建议通过禁用 L1-D 下一条预取器、使用多个小型执行器以及启用超线程技术等配置优化,实现高达 36% 的性能提升。
While cluster computing frameworks are continuously evolving to provide real-time data analysis capabilities, Apache Spark has managed to be at the forefront of big data analytics for being a unified framework for both, batch and stream data processing. However, recent studies on micro-architectural characterization of in-memory data analytics are limited to only batch processing workloads. We compare micro-architectural performance of batch processing and stream processing workloads in Apache Spark using hardware performance counters on a dual socket server. In our evaluation experiments, we have found that batch processing are stream processing workloads have similar micro-architectural characteristics and are bounded by the latency of frequent data access to DRAM. For data accesses we have found that simultaneous multi-threading is effective in hiding the data latencies. We have also observed that (i) data locality on NUMA nodes can improve the performance by 10% on average and(ii) disabling next-line L1-D prefetchers can reduce the execution time by up-to 14\% and (iii) multiple small executors can provide up-to 36\% speedup over single large executor.
研究动机与目标
- 理解现代规模扩展型服务器上 Apache Spark 中内存内数据 analytics 工作负载的微架构性能特征。
- 量化 NUMA 内存访问、超线程技术以及硬件预取器对 Spark 性能的影响。
- 评估数据速率对 Spark Streaming 工作负载的影响,并识别性能瓶颈。
- 评估高带宽内存技术(如混合内存立方体)在 Spark 工作负载中的潜力。
- 为配置 Spark 及其底层硬件提供可操作的建议,以在规模扩展系统上最大化性能。
提出的方法
- 在双路 Ivy Bridge 服务器上使用硬件性能计数器进行微架构分析。
- 测量关键性能指标,包括 DRAM 绑定停顿、L1/L2 缓存未命中影响以及指令退休率。
- 使用公式计算 LocalDRAMBound 和 RemoteDRAMBound,以量化内存访问延迟的影响。
- 基于实测与理论单线程性能,推导出缩放公式以评估超线程的有效性。
- 在 Spark Core、MLlib、SQL、GraphX 和 Streaming 上,对不同配置的 Spark 工作负载进行基准测试。
- 系统性地改变执行器大小、内存本地性、DDR3 速度和预取器设置,以隔离性能影响。
实验结果
研究问题
- RQ1Apache Spark 中批处理与流处理工作负载在其微架构特性上有哪些差异?
- RQ2在规模扩展型服务器上,NUMA 节点上的数据本地性在多大程度上能提升 Spark 性能?
- RQ3超线程在隐藏 Spark 工作负载中 DRAM 访问延迟方面有多有效?
- RQ4禁用 L1-D 和 L2 硬件预取器对 Spark 工作负载的性能影响如何?
- RQ5高带宽内存技术(如混合内存立方体)能否显著提升 Spark 性能?
主要发现
- Apache Spark 中的批处理与流处理工作负载在 DRAM 访问延迟方面受到类似限制,性能瓶颈在微架构层面无显著差异。
- 在 NUMA 节点上实现数据本地性可使性能平均提升 10%,减少后端绑定停顿 19%,并提高指令退休率 9%。
- 禁用下一条 L1-D 预取器可将执行时间减少最多 14%,而禁用相邻缓存行 L2 预取器可将执行时间减少最多 4%。
- 使用多个小型执行器(每个执行器 ≤32GB)相比单个大型执行器,可实现高达 36% 的性能加速。
- 超线程可将 DRAM 绑定停顿减少 50%,其超线程有效性为 1.0,表明在此场景下实现近乎完美的缩放。
- 将 DDR3 速度从 1866 MT/s 降低至 1333 MT/s 可提升性能,表明内存带宽并非限制因素,且较低频率可减少功耗和延迟开销。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。