-
Notifications
You must be signed in to change notification settings - Fork 32
RegionalCollector
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).
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.
-
-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 suffixesK
/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:- using a default setting of m=1.0
- 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_
(moved information to MinMutUtilization )
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