Decoupled root scanning in multi-processor systems

Garbage collection (GC) is a well known approach to simplify software development. Recently, it has started to gain acceptance also in the real-time community. Several hard real-time GC algorithms have been proposed for uniprocessors. However, the growing popularity of multi-processors for real-time systems entails that algorithms and techniques have to be developed that allow hard realtime GC on multi-processors as well. We propose a novel root cache, which aggregates information of the processor-local root sets in multi-processor systems. It allows that the root scanning phase of the garbage collector is decoupled from the root scanning phase of working threads. Thread-local root scanning can be scheduled flexibly, without impeding the garbage collector. Additionally, the new cache lowers both the blocking time and the memory bandwidth consumption due to the root scanning phase of GC. The proposed solution has been implemented for evaluation in a chip multi-processor system based on the Java Optimized Processor. We show how bounds on the garbage collector period can be extended to take into account the root cache. We also present experimental results, which highlight the advantages and limits of the proposed approach.

[1]  Peter Lee,et al.  Generational stack collection and profile-driven pretenuring , 1998, PLDI.

[2]  Martin Schoeberl,et al.  JOP: A Java Optimized Processor for Embedded Real-Time Systems , 2008 .

[3]  Leslie Lamport,et al.  On-the-fly garbage collection: an exercise in cooperation , 1975, CACM.

[4]  M. Teresa Higuera-Toledano,et al.  Memory Management for Real-Time Java: An Efficient Solution using Hardware Support* , 2004, Real-Time Systems.

[5]  Daniel G. Bobrow,et al.  An efficient, incremental, automatic garbage collector , 1976, CACM.

[6]  Martin Schoeberl,et al.  Non-blocking root scanning for real-time garbage collection , 2008, JTRES '08.

[7]  Michael Wolf,et al.  The pauseless GC algorithm , 2005, VEE '05.

[8]  Taiichi Yuasa,et al.  Real-time garbage collection on general-purpose machines , 1990, J. Syst. Softw..

[9]  Jan Vitek,et al.  Garbage collection for safety critical Java , 2007, JTRES.

[10]  Martin Schoeberl,et al.  Performance evaluation of a java chip-multiprocessor , 2008, 2008 International Symposium on Industrial Embedded Systems.

[11]  Sven Gestegard Robertz,et al.  Time-triggered garbage collection: robust and adaptive real-time GC scheduling for embedded systems , 2003, LCTES '03.

[12]  Martin Schoeberl,et al.  Non-blocking object copy for real-time garbage collection , 2008, JTRES '08.

[13]  Martin Schoeberl,et al.  Towards a Java multiprocessor , 2007, JTRES.

[14]  Fridtjof Siebert,et al.  Hard real-time garbage collection in the Jamaica virtual machine , 1999, Proceedings Sixth International Conference on Real-Time Computing Systems and Applications. RTCSA'99 (Cat. No.PR00306).

[15]  Fridtjof Siebert,et al.  Constant-Time Root Scanning for Deterministic Garbage Collection , 2001, CC.

[16]  S. L. Graham,et al.  List Processing in Real Time on a Serial Computer , 1978 .

[17]  James Gosling,et al.  The Real-Time Specification for Java , 2000, Computer.

[18]  Joshua S. Auerbach,et al.  Design and implementation of a comprehensive real-time java virtual machine , 2007, EMSOFT '07.

[19]  Fridtjof Siebert,et al.  Eliminating external fragmentation in a non-moving garbage collector for Java , 2000, CASES '00.

[20]  Daniel P. Friedman,et al.  The one-bit reference count , 1977 .

[21]  Martin Schoeberl Real-time garbage collection for Java , 2006, Ninth IEEE International Symposium on Object and Component-Oriented Real-Time Distributed Computing (ISORC'06).

[22]  Rafael Dueire Lins,et al.  Garbage collection: algorithms for automatic dynamic memory management , 1996 .

[23]  Filip Pizlo,et al.  Stopless: a real-time garbage collector for multiprocessors , 2007, ISMM '07.

[24]  V. T. Rajan,et al.  A real-time garbage collector with low overhead and consistent utilization , 2003, POPL '03.