The runtime abort graph and its application to software transactional memory optimization

  • Authors:
  • Dhruva R. Chakrabarti;Prithviraj Banerjee;Hans-J. Boehm;Pramod G. Joisha;Robert S. Schreiber

  • Affiliations:
  • Hewlett-Packard Laboratories, USA;Hewlett-Packard Laboratories, USA;Hewlett-Packard Laboratories, USA;Hewlett-Packard Laboratories, USA;Hewlett-Packard Laboratories, USA

  • Venue:
  • CGO '11 Proceedings of the 9th Annual IEEE/ACM International Symposium on Code Generation and Optimization
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

Programming with atomic sections is a promising alternative to locks since it raises the abstraction and removes deadlocks at the programmer level. However, implementations of atomic sections using software transactional memory (STM) support have significant bookkeeping overheads. Additionally, because of the speculative nature of transactions, aborts can be frequent greatly lowering application performance. Thus regardless of the STM implementation, tools need to be available to programmers that provide insights into the runtime characteristics of an application as well as provide means to improve performance. This paper attempts to identify the source of an abort at the granularity of a transactional memory reference. The resulting abort patterns are captured in the form of a runtime abort graph (RAG). We show how to build this graph efficiently using compiler instrumentation. We then describe a technique that works on the RAG and automatically recommends STM policy changes to improve performance. Detailed experimental results are presented showing the tradeoffs in building the RAG and its use in reducing aborts and improving performance.