Skip to main content
QUICK REVIEW

[论文解读] Architectural Impact on Performance of In-memory Data Analytics: Apache Spark Case Study

Ahsan Javed Awan, Mats Brorsson|arXiv (Cornell University)|Apr 28, 2016
Cloud Computing and Resource Management参考文献 25被引用 7
一句话总结

本文通过使用硬件性能计数器,在现代规模扩展型服务器上研究了 Apache Spark 工作负载(批处理、流处理和机器学习)的微架构性能。研究发现,DRAM 延迟是主要瓶颈,并建议通过禁用 L1-D 下一条预取器、使用多个小型执行器以及启用超线程技术等配置优化,实现高达 36% 的性能提升。

ABSTRACT

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 生成,并经人工编辑审核。