Project MetaConc: Towards Meta-Level Engineering and Tooling for Complex Concurrent Systems
As part of the MetaConc project meetings, the Institute for System Software organized a seminar to discuss the current project status and techniques for application monitoring and tracing with virtual machine support.
Talk titles and abstracts follow below.
Towards Adaptive Debuggers for Complex Concurrent Programs,
Elisa Gonzalez Boix, Carmen Torres López, Vrije Universiteit Brussel
With the ubiquity of multicore hardware, concurrent and parallel programming has become a fundamental part of software development. To utilize parallel hardware researchers have developed various concurrency models. The spectrum ranges from models based on share memory, like threads and STM, to models based on message passing, in which communicating entities do not share memory, instead they communicate through sending messages. Modern applications combine several concurrency models to satisfy their diverse requirements.
In order to develop better tooling for such applications, we investigate debugging for concurrency models used in combination. However, as a start, we focus on message passing based on the actor model. In previous work, we developed REME-D, debugger for ad hoc mobile network applications. REME-D provides relevant debugging features such as actor-state inspection, causal-link browsing, and a breakpoint catalog, which presents different breakpoints that can be set on the messages exchange between actors. In the first phase of our work we extend these features for non-distributed actor language based on the communicating event loop concurrency model. We started extending REME-D breakpoint catalog to facilitate common debugging scenarios.
Accurate and Efficient Object Tracing for Java Applications,
Philipp Lengauer, Johannes Kepler University Linz
Object allocations and garbage collection can have a considerable impact on the performance of Java applications. Without monitoring tools, such performance problems are hard to track down, and if such tools are applied, they often cause a significant overhead and tend to distort the behavior of the monitored application. We present a new light-weight memory monitoring approach in which we trace allocations, deallocations and movements of objects using VM-specific knowledge. We strive for utmost compactness of the trace by using a binary format with optimized encodings for different cases of memory events and by omitting all information that can be reconstructed offline when the trace is processed.
Efficient Tracing and Versatile Analysis of Lock Contention in Java Applications on the Virtual Machine Level,
Peter Hofer, Johannes Kepler University Linz
Implementing correct and scalable locking is challenging and locks quickly become bottlenecks when multiple threads contend to acquire them. In this talk, we present a novel approach for analyzing lock contention in Java applications by tracing locking events in a Java virtual machine. Our approach provides developers with exhaustive information to understand and resolve locking bottlenecks in an application, yet incurs very low overhead. Most notably, our approach not only records the call chains of threads that are blocked, but also accurately reports the call chains of threads that block other threads by holding the contended lock. This reveals the causes of lock contention instead of showing only its symptoms.