We implemented Poor Richard's Memory Manager (PRMM) and have used it to improve the paging performance of the Jikes RVM/MMTk (version 3.1.1). For both homogenous and heterogenous Java workloads, PRMM improves average performance by up to a factor of 5.5 when the system is paging. This result is not specific to any garbage collection algorithm, as improvement is observed for every garbage collector on which it has been tested. You can read more about this system in a paper presented at ISMM 2011 titled Waste Not, Want Not: Resource-based Garbage Collection in a Shared Environmen.

To build PRMM with the Jikes RVM/MMTk:

  1. Install the Jikes RVM 3.1.1 release
  2. Untar the gzip-ed tarball PRMM.NewFiles.tgz in the main Jikes directory. This will add two files (whiteboard.c & whiteboard.h) into the tools/bootImageRunner directory. It will also create two new directories ("src/Teaboard" & "src/Templates").
  3. Apply the patch file PRMM.patch to the main Jikes directory.
  4. PRMM relies on several build-time parameters. To simplify this task, it uses its own ant script (found in the "src/Templates" directory created above) to build Jikes. For this to work, make the following files symbolic links to identically named files in the "src/" directory:
  5. To build the system, go into the src/templates directory. The command "ant <buildName>" will build all of the Jikes RVM. The long list of possible build names can be found in the build.xml file.
  6. In order to run using PRMM, you MUST run src/Teaboard/Teaboard. This program creates the whiteboard which the processes use to communicate. Once the whiteboard is allocated, the Teaboard application will complete.

This work was supported by the Canisius Ensuring Excellence Program and the National Science Foundation under awards CSR- 0834566 and CSR-0834323. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.