- Authors
-
David Price
Algis Rudys
Dan S. Wallach
- Abstract
-
Language run-time systems are often called upon to safely
execute mutually distrustful tasks within the same runtime,
protecting them from other tasks' bugs or otherwise hostile
behavior. Well-studied access controls exist in systems such as
Java to prevent unauthorized reading or writing of data, but
techniques to measure and control resource usage are less
prevalent. In particular, most language run-time systems include
no facility for accounting for heap memory usage on a per-task
basis. In addition, because tasks may very well share
references to the same objects, traditional approaches that
charge memory to its allocator fail to properly account for this
sharing. We present a method for modifying the garbage
collector, already present in most modern language run-time
systems, to measure the amount of live memory reachable from
each task as it performs its regular duties. Our system
naturally distinguishes memory shared across tasks from memory
reachable from only a single task without requiring incompatible
changes to the semantics of the programming language. Our
prototype implementation imposes negligible performance
overheads on a variety of benchmarks, yet provides enough
information for the expression of rich policies to express the
limits on a task's memory usage.
- Published
-
Technical Report TR02-407, Department of Computer Science, Rice University
- Download
-
Postscript
Adobe PDF
- BibTEX Entry
@TechReport{price2002gcmem:tr,
author = "David Price and Algis Rudys and Dan S. Wallach",
title = "Garbage Collector Memory Accounting in Language-Based Systems",
institution = "Department of Computer Science, Rice University",
year = "2002",
month = nov,
number = "TR02-407",
address = "Houston, TX"
}
- Additional Notes
-
The Multitasking garbage collector microbenchmark we used in
this paper is available at http://www.cs.rice.edu/~arudys/software/tree-bench.tar.gz.