Abstract

This paper presents CAMP, a new static performance analysis framework for message-passing concurrent and distributed systems, based on the theory of multiparty session types (MPST). Understanding the run-time performance of concurrent and distributed systems is of great importance for the identification of bottlenecks and optimisation opportunities. In the message-passing setting, these bottlenecks are generally communication overheads and synchronisation times. Despite its importance, reasoning about these intensional properties of software, such as performance, has received little attention, compared to verifying extensional properties, such as correctness. Behavioural protocol specifications based on sessions types capture not only extensional, but also intensional properties of concurrent and distributed systems. CAMP augments MPST with annotations of communication latency and local computation cost, defined as estimated execution times, that we use to extract cost equations from protocol descriptions. CAMP is also extendable to analyse asynchronous communication optimisation built on a recent advance of session type theories. We apply our tool to different existing benchmarks and use cases in the literature with a wide range of communication protocols, implemented in C, MPI-C, Scala, Go, and OCaml. Our benchmarks show that, in most of the cases, we predict an upper-bound on the real execution costs with < 15% error.

Highlights

  • Understanding the amount of resources, e.g. time or memory that are required by a computation, is of great importance

  • Das et al [2018b] combine session types with amortised resource analysis in a linear type system, to reason about resource usage of message-passing processes, but their work focuses on binary sessions in a linear type system, while we focus on multiparty session types, and the global execution times of the protocol

  • We have presented cost-aware multiparty session protocols (CAMP), a framework for statically predicting the cost, execution times, of concurrent and distributed systems

Read more

Summary

Introduction

Understanding the amount of resources, e.g. time or memory that are required by a computation, is of great importance. Performance issues are very difficult to detect in runtime because of their non fail-stop nature; and the root causes of performance bugs can be very diverse, uncoordinated functions and synchronisation issues are prevalent, i.e. inefficient composition of efficient functions, and unnecessary synchronisation that increases thread competition [Jin et al 2012]. These inefficient compositions have more impact in a distributed setting, where the communication overhead and synchronisation cost may become the bottleneck of the whole system. This paper presents a new static performance analysis framework, CAMP

Methods
Results
Discussion
Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call