Efficient memory management for concurrent programs that use message passing

  • Authors:
  • Konstantinos Sagonas;Jesper Wilhelmsson

  • Affiliations:
  • Department of Information Technology, Uppsala University, Sweden;Department of Information Technology, Uppsala University, Sweden

  • Venue:
  • Science of Computer Programming - Special issue on five perspectives on modern memory management: Systems, hardware and theory
  • Year:
  • 2006

Quantified Score

Hi-index 0.00

Visualization

Abstract

We present an efficient memory management scheme for concurrent programming languages where communication occurs by using message passing with copying semantics. The runtime system is built around process-local heaps, which frees the memory manager from redundant synchronization in a multi-threaded implementation and allows the memory reclamation of process-local heaps to be a private business and to often take place without ever triggering garbage collection. The allocator is guided by a static analysis which speculatively allocates data possibly used as messages in a shared memory area. To respect the (soft) real-time requirements of the language, we develop and present in detail a generational, incremental garbage collection scheme tailored to the characteristics of this runtime system. The incremental collector imposes no overhead on the mutator, requires no costly barrier mechanisms, has a relatively small space overhead, and can be scheduled on the basis of either a time or a work quantum. We have implemented these schemes in the context of an industrial-strength implementation of a concurrent functional language used to develop large-scale, highly concurrent, telecommunication applications. Our measurements across a range of applications indicate that the incremental collector imposes only very small overhead on the total runtime and can achieve very short pause times (1 ms or less) while being able to sustain a high degree of mutator utilization.