Skip to content
Felix S. Klock II edited this page Jul 28, 2013 · 1 revision

This page documents how to invoke the experimental regional collector, some command line parameters to modify its behavior, and pointers on how to find certain things in the source code (such as where the major/minor collection selection policy is implemented).

Running the Regional Renewal Older First (RROF) Collector

The command line parameter -rrof turns on the Regional Collector.

Example:


% larceny -rrof 

The most recent developmental build of the regional collector are in the Subversion repository on PnkFelix's incrsumz branch, at svn url: svn+ssh://login.ccs.neu.edu/proj/will/pnkfelix/svn-archives/branches/pnkfelix/incrsumz/larceny_src

Pre-built copies of the regional collector are available on poblano.ccs.neu.edu and artichoke.ccs.neu.edu, at the following paths:

  • Poblano:
    • /Users/henchman/larcenytest/incrsumz-gcbench/larceny_src/larceny
      • (updated from SVN and auto-built+benchmarked each night).
    • /Users/pnkfelix/larcenydev/branches/incrsumz/larceny_src/larceny
      • (updated from SVN and manually built when Felix feels like it).
  • Artichoke:
    • /home/pnkfelix/larcenydev/branches/incrsumz/larceny_src/larceny
      • (updated from SVN and manually built when Felix feels like it).

Generally you should either make your own checkout of the incrsumz branch or trust the auto-built copy built on the henchman account on Poblano.

Command Line Options for RROF

  • -rrof : turns on Regional collector.

  • -size0 s : sets size of the nursery.

  • -size1 s : sets size of the first (and all subsequent) regions. Corresponds to R in Will's notes. The required argument s can be written as a number of bytes, or one can use the suffixes K / M on a number to indicate kilobytes or megabytes accordingly.

Example 1:


% ./larceny -rrof -size1 5M
starts Larceny with default nursery size (currently 1 megabyte on the `incrsumz` branch) and a region size of 5 megabytes / region.

Example 2:


% ./larceny -rrof -size0 5M -size1 10M
starts Larceny with 5 megabyte nursery size and a region size of 10 megabytes / region.

Example 3:


% ./larceny -rrof -size0 10M -size1 5M
starts Larceny with 10 megabyte nursery size and a region size of 5 megabytes / region.
(Note that the nursery is larger than the region size here; 
in principle one should be able to experiment with very small regions 
independently of the nursery size, a relatively recent feature Felix added support for.)
  • -load d : uses d as the "soft" inverse load factor in the major/minor collection policy decision.

  • -load_hard d : uses d as the "hard" inverse load factor in the major/minor collection policy decision.

  • -refinement m : controls the (inverse) priority of the incremental marker. For every m words promoted out of the nursery, (at most) one word is marked by the snapshot-at-the-beginning marking process (m need not be an integer).
    Will did not assign a variable to this in his notes; he assumes that the mark and full cycles coincide. The system implements this behavior by:

    1. using a default setting of m=1.0
    2. after a mark process has completed processing a snapshot, the collector delays taking a new snapshot until the next cycle begins.

Example usage:


% ./larceny -rrof -refinement 2.0 
will mark one word for every two words promoted, slowing down the marking priority; less time is spent marking (but overall throughput may well suffer compared to the default of 1.0).
  • -sumzcoverage c : controls the (inverse) coverage of incremental summarization (c need not be an integer). During any one summarization scan of the regions, 1/c of the regions have summaries "under construction." This parameter corresponds to F,,1,, in Will's notes.

Example usage:


% ./larceny -rrof -sumzcoverage 5.0 
will attempt to build summaries for 1/5 of the regions during each summarization scan of the heap.
  • -sumzbudget b : controls the (inverse) budget for incremental summarization (b need not be an integer). The summarization does not consider itself done preparing the next wave of summaries until 1/(b c) of the heap is summarized. This parameter corresponds to F,,2,, in Will's notes.

Example usage:


% ./larceny -rrof -sumzbudget 7.0 -sumzcoverage 5.0
will consider itself done with a cycle of summarizing as soon as 1/35 of the of the regions are summarized.  (That ratio forces a fairly aggressive schedule for summarization; until there are more than 35 regions, you may end up scanning every remembered set on every one or two collections, depending on the frequency of minor collections.)
  • -popularity p : controls the wave-off threshold for summary relative to the region size R. When a summary size for region r,,i,, exceeds pR, the summary is thrown out and r,,i,, is no longer considered available for collection during this cycle. This parameter corresponds to S in Will's notes.

Example usage:


% ./larceny -rrof -popularity 4.0
will wave off collection of a region when its summary exceeds 4_R_

Minimum Mutator Utilization (MMU) gathering, dumping, and interpreting

(moved information to MinMutUtilization )

Generating Plots

The components of the Regional Collector contribute to time and memory overhead. Felix has written a series of scripts to help generate plots (via gnuplot) of the time and memory usage of all of Larceny's collectors. See GnuplotScripts

Clone this wiki locally