Metronome - Metronome GC
Real-time Garbage Collection is the process of collecting data that is no longer in use by an application at the same time that the application continues to run, while keeping the interruptions by the collector (also called pause times) short and evenly spaced. The goal of the Metronome project is to produce a garbage collector with pause times that are as low as operating system context-switch times in the worst case while providing highly uniform CPU utilization, low memory overhead, and low garbage collection cost.
To date the Metronome Garbage Collector achieves these goals with a maximum pause time a few hundred microseconds. The results rely on:
- Metronimic Scheduling, in which
real-time scheduling is based on
time rather than work quanta, which we show to be fundamentally necessary
for real-time response and different from most previous real-time collectors.
- A high-performance read-barrier with only 4% CPU overhead. This
is an order of magnitude faster than previous software read-barriers which
typically had overheads of 20-40%. We achieve this high performance
by tightly integrating the collector with the compiler, which is able
to extensively optimize the read barrier.
- Arraylets, a technique for efficiently breaking up large arrays into smaller objects to limit the real-time cost of scan, update, or move operations on large objects.
Current research focuses on driving maximum pause times down to 250 microseconds, reducing space overhead with real-time generational collection, extending the system to work on multiprocessors, and defining a comprehensive set of interfaces and real-time services for a garbage collected virtual machine.
Metronome Garbage collection is now commercially available under the name WebSphere Real Time. This product is the result of a collaboration between the Metronome team and IBM Software Group. The first implementation of Metronome was in the open-source Jikes Research Virtual Machine (RVM).