Skip to main content
QUICK REVIEW

[论文解读] DINAMITE: A modern approach to memory performance profiling

Svetozar Miučin, Conor Brady|arXiv (Cornell University)|Jun 1, 2016
Parallel Computing and Optimization Techniques参考文献 18被引用 3
一句话总结

DINAMITE 是一个基于编译器的动态插桩与流处理框架,用于高保真度的内存性能分析,利用 LLVM 实现精确的源代码级别追踪,通过 Spark Streaming 实现实时处理完整的内存访问追踪数据。该框架可实现细粒度、可移植的内存优化,在应用程序中实现 15–20% 的性能提升,并在键值存储中实现 20 倍的性能加速,通过识别缓存瓶颈和数据布局问题。

ABSTRACT

Diagnosing and fixing performance problems on multicore machines with deep memory hierarchies is extremely challenging. Certain problems are best addressed when we can analyze the entire trace of program execution, e.g., every memory access. Unfortunately such detailed execution logs are very large and cannot be analyzed by direct inspection. We present DINAMITE: a toolkit for Dynamic INstrumentation and Analysis for MassIve Trace Exploration. DINAMITE is a collection of tools for end-to-end performance analysis: from the LLVM compiler pass that instruments the program to plug-and-play tools that use a modern data analytics engine Spark Streaming for trace introspection. Using DINAMITE we found opportunities to improve data layout in several applications that resulted in 15-20% performance improvements and found a shared-variable bottleneck in a popular key-value store, whose elimination improved performance by 20x.

研究动机与目标

  • 解决在具有深层内存层次结构的多核系统中诊断内存性能瓶颈的挑战。
  • 克服现有工具在分析详细内存访问模式时缺乏可移植性、通用性或灵活性的局限。
  • 提供一个可扩展、可伸缩的端到端内存追踪数据分析框架,运行时开销极低。
  • 通过精确的源代码级别追踪分析与流式分析,实现高级内存优化。
  • 支持灵活的可插拔内存访问模式分析,无需依赖硬件或操作系统特定接口。

提出的方法

  • 使用 LLVM 通行证在编译时对程序进行插桩,为每次内存访问插入细粒度的追踪代码。
  • 以二进制格式捕获包含源代码位置、变量名、类型、值和访问类型的详细追踪数据,并通过缓冲机制提高效率。
  • 利用 Spark Streaming 实现实时处理追踪数据,无需存储大规模追踪日志。
  • 通过模块化架构支持插件式分析工具,允许使用 Scala 或其他语言实现自定义分析逻辑。
  • 将缓存模拟器集成到处理流水线中,以复现硬件级别的行为并验证优化策略。
  • 利用 LLVM 提供的精确调试信息,确保追踪元数据在源代码级别保持高保真度。

实验结果

研究问题

  • RQ1基于编译器的插桩框架是否能在实现全精度内存追踪的同时保持极低的运行时开销?
  • RQ2内存追踪数据的实时流式处理能否替代传统的追踪日志存储方式,并支持可扩展、交互式的性能分析?
  • RQ3此类系统在识别和解决复杂内存瓶颈(如虚假共享和低数据局部性)方面的能力有多强?
  • RQ4与单体式、依赖操作系统或硬件的工具相比,可插拔分析框架的灵活性在识别性能问题方面表现如何?
  • RQ5该框架能否扩展以支持多级缓存模拟和细粒度的访问模式分析?

主要发现

  • 通过基于追踪的分析,DINAMITE 将 SPEC2006 的 429.mcf 程序的最后级缓存未命中率降低了 55%,性能提升了 12%。
  • 在 PARSEC 的 fluidanimate 应用中,框架实现了 LLC 未命中率降低 50% 和性能提升 15%。
  • 通过使用 DINAMITE 的第二个工具进行结构拆分,429.mcf 的 LLC 未命中率下降了 60%,运行时间减少了 20%。
  • DINAMITE 在一个流行的键值存储系统 WiredTiger 中检测到共享变量瓶颈,其修复带来了 20 倍的性能提升。
  • 尽管对每次内存访问都进行了插桩,但运行时性能下降与 Pin 和 Valgrind 等顶尖工具相当。
  • Spark Streaming 的集成实现了近乎实时的分析,存储开销极低,支持可扩展且交互式的内存性能分析。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。