mmtk-core icon indicating copy to clipboard operation
mmtk-core copied to clipboard

Support for dynamic heap resizing

Open steveblackburn opened this issue 3 years ago • 1 comments

We need to add support for dynamic heap resizing. Currently MMTk only works with a fixed heap size.

This probably will involve at least the following:

  1. Extending the vm interface to support at least i) min heap, ii) max heap, and iii) no specified heap size.
  2. Adding a number of heap resizing heuristics, probably modeled on existing production systems (eg OpenJDK, PyPy, Julia).

Note: this feature is missing for historical reasons: MMTk was purely a research tool and in that setting, heap resizing is both unimportant (it is useful / essential for end users who don't want to have to specific heap sizes), and a problem (it can confound the measurement of the key time/space tradeoff). Our focus is much broader now, and the absence of this feature is becoming a problem.

steveblackburn avatar Mar 18 '22 00:03 steveblackburn

The minimal we need to do is to allow bindings to set a heap size through an API during run-time. In that case, a VM can implement its own heuristics for heap resizing. To facilitate a binding's implementation, we may provide a standard heap resizing implementation.

So for us, we may have the following:

  • Fixed heap size
  • Up to VM
  • Dynamic heap resizing (min/max) - optional

qinsoon avatar Sep 07 '22 05:09 qinsoon

For dynamic heap resizing, we can consider using https://dl.acm.org/doi/10.1145/3563323.

qinsoon avatar Dec 09 '22 20:12 qinsoon