PLDI 2007:Exterminator: Automatically Correcting Memory Errors with High Probability
with Gene Novark and Ben Zorn
A system that automatically corrects heap-based memory errors without programmer intervention. Exterminator exploits randomization and replication to pinpoint errors with high precision. Using this information, Exterminator derives runtime patches that fix these errors in current and subsequent executions.
PLDI 2006: DieHard: Probabilistic Memory Safety for Unsafe Languages with Ben Zorn.
DieHard uses randomization and replication to transparently make C and C++ programs tolerate a wide range of errors, including buffer overflows and dangling pointers. Instead of crashing or running amok, DieHard lets programs continue to run correctly in the face of memory errors with high probability. Using DieHard also makes programs highly resistant to heap-based hacker attacks.
You can download DieHard.
PLDI 2005: Garbage Collection without Paging with Matthew Hertz and Yi Feng.
Introduces bookmarking collection, a GC algorithm that works with the virtual memory manager to eliminate paging. Just before memory is paged out, the collector "bookmarks" the targets of pointers from the pages. Using these bookmarks, BC can perform full garbage collections without loading the pages back from disk. By performing in-memory garbage collections, BC can speed up Java programs by orders of magnitude (up to 41X).Download the bookmarking collector and associated Linux patches.
ACM Transactions on Storage:Contributing Storage Using the Transparent File System with Jim Cipar and Mark Corner, to appear.
A file system that lets background applications use all of your available disk space, without impacting your use of your computer.
Supersedes the FAST 07 paper below.
USENIX 2006: Transparent Contribution of Memory with James Cipar and Mark Corner
Introduces transparent memory management (TMM), which lets you run background jobs that use your disk and virtual memory without impacting your use of the machine, even after you leave your machine unattended for an extended period of time. You can download TMM.
Efficient Memory Management
ASPLOS-IX: Hoard: A Scalable Memory Allocator for Multithreaded Applications with Kathryn McKinley, Robert Blumofe, & Paul Wilson
Identifies problems of heap contention, space blowup, and allocator-induced false sharing in previous allocators; introduces Hoard, a fast memory allocator that solves these problems. Note: Hoard's design has undergone a number of changes since the publication of this article. Hoard home page.
SenSys 2007:Eon: A Language and Runtime System for Perpetual Systems
with Jacob Sorber, Alex Kostadinov, Matt Brennan, Matt Garber, and Mark Corner
An energy-aware programming language that supports perpetual systems: these are systems that are intended to run forever and must harvest their energy from the environment.
USENIX 2006: Flux: A Language for Programming High-Performance Servers with Brendan Burns, Kevin Grimaldi, Alex Kostadinov, and Mark Corner.
Flux is a concise programming language for writing servers that scale and are deadlock-free. A Flux programmer uses off-the-shelf, sequential C and C++ code, and describes their composition; the Flux compiler then generates a deadlock-free, high-concurrency server. Flux also makes it easy to analyze and predict server performance, because the Flux compiler can also generate discrete event simulators that reflect actual server performance.
You can download Flux.
OOPSLA 2005: Quantifying the Performance of Garbage Collection vs. Explicit Memory Management with Matthew Hertz.
This paper attempts to answer an age-old question: is garbage collection faster/slower/the same speed as malloc/free? We introduce oracular memory management, an approach that lets us measure unaltered Java programs as if they used malloc and free. The result: a good GC can match the performance of a good allocator, but it takes 5X more space. If physical memory is tight, however, conventional garbage collectors suffer an order-of-magnitude performance penalty.
OOPSLA 2002: Reconsidering Custom Memory Allocation with Ben Zorn & Kathryn McKinley
Finds that a good general-purpose allocator is better than all custom allocators except regions, but these have serious problems. Introduces reaps (regions + heaps), which combine the flexibility and space efficiency of heaps with the performance of regions.