Memory Pool System Project Plan

author Gareth Rees
date 2014-05-16
revision //info.ravenbrook.com/project/mps/plan/index.txt#14
status live

Introduction

This is the plan for development of the Memory Pool System.

This document will be modified as the project progresses.

The readership of this document is anyone interested in the project.

This document is not confidential.

Future versions

Version 1.116

Better measurement and visualization of space and time performance.

Improvements to performance and tunability via separation of concerns (see [GDR_2014-05-15]).

  • job003783 (ChainCondemnAuto condemns too many generations)
  • job003796 (White segment lookup is slow)
  • job003797 (AMC space is lost to pinning)
  • job003799 (Incrementally collecting the nursery may be a waste)

Improvements to flexibility by removing special cases and introducing abstractions:

  • job003765 (Pools use GCSeg when they are not GC pools)
  • job003838 (MVT uses segments unnecessarily)

Improvements to usability:

  • job003794 (Hard to predict the mortality in a generation)

Improvements to testing:

  • job003839 (No benchmarks for space performance)

Past versions

Version 1.115

Gain client control over pause times (see [GDR_2014-05-14] and [GDR_2014-05-15]).

  • job003539 (MPS pause times are not well regulated)

Version 1.114

Improvements to performance and tunability via separation of concerns (see [GDR_2014-05-15]).

  • job003509 (MVFF uses segments unnecessarily)
  • job003554 (MPS slows down considerably when arena is extended)
  • job003701 (MVSpanAlloc shows up in GC profiles)
  • job003812 (MVAlloc taking significant CPU in profiles)
  • job003823 (No control over constant factor in tract management)
  • job003824 (No control over the constant factor in AMC segment overhead)

Improvements to flexibility by removing special cases and introducing abstractions:

  • job003684 (Too hard to swap out address range managers)
  • job003685 (No encapsulation of CBS-failing-over-to-Freelist pattern)
  • job003745 (AWL alignment is not configurable)
  • job003748 (Alignment requirements for manual classes are needlessly strict)
  • job003787 (No systematic interface to size of pools)

Improvements to robustness:

  • job001549 (Assertion failure !AMS_IS_INVALID_COLOUR)
  • job003359 (Ambiguous interior pointers do not keep objects alive)
  • job003496 (Assertion failure in mps_arena_roots_walk)
  • job003751 (MVFF debug does not work with large objects)
  • job003771 (AMS with default args never gets collected)
  • job003772 (AWL doesn't provoke collections)
  • job003773 (Objects in LO pools are not all finalized)

Improvements to testing:

  • job003659 (Too hard to maintain the test suite)
  • job003716 ("ANSI" platform is not regularly tested)
  • Static analysis using Coverity.
  • Test coverage up to 84%.

References

[GDR_2014-05-14]"MPS strategic direction proposals"; Gareth Rees; Ravenbrook Limited; 2014-05-14; <https://info.ravenbrook.com/mail/2014/05/14/16-14-34/0/>.
[GDR_2014-05-15](1, 2, 3) "More MPS strategy"; Gareth Rees; Ravenbrook Limited; 2014-05-15; <https://info.ravenbrook.com/mail/2014/05/15/19-19-13/0/>.