Department of Computer Science
Rice University
Many modern applications stress virtual memory in unforeseen ways that expose a variety of performance and scalability problems of current systems. For instance, if an application's working set is larger than a mere megabyte, TLB misses may have a negative impact on performance much larger than the 4% or 5% reported as typical in the 80's. Other kind of problems are encountered when a web server maps thousands of files or a garbage collector plays memory protection tricks, because the underlying data structures that manage virtual memory were designed for much simpler scenarios.
The goal of this project is to better understand how virtual memory is used and stressed by modern workloads, and propose, implement and evaluate solutions to improve its performance and scalability.
Prototype implementation for IA-64/FreeBSD 5.0.
[ tar.gz |
readme |
license ]
The name Mitosis seemed obvious to us after we depicted a proposed data structure in action: it looked a whole lot like cell division by mitosis! The data structure in question is a versioned tree that we use to do sloppy reference counting, that is, a reference counting scheme where for any item we only know a lower bound on the number of references if there is more than one. Incidentally, nothing more, nothing less than that is needed for copy-on-write. SVR4-like systems, such as Solaris, do more (and pay more for it), while Mach-like systems, such as most BSDs, do less and suffer the consequences.
The inspiring graphical sequence is:

visitors since January 29, 2001.