Memory allocation is an important aspect of any dynamic software system, but
it's especially essential in an operating system kernel -- a program that is
expected to run continuously and in perpetuity. Two decades ago, I fell in
love with the slab allocator from Sun Microsystems, ultimately plotting the
course of my nascent career to work with its creator, Jeff Bonwick. As a
young software engineer, I quickly learned the power of its incredible
debugging capabilities, and came to appreciate the subtle beauty of its
implementation. As the years passed, the slab allocator saw important
changes: it was extended deeper into the virtual memory system; it was
brought to user-level and made available to applications; and it was
liberated from its proprietary shackles and made open source. With each of
these changes, a new generation of engineers came to the slab allocator,
bringing their own insights and making their own significant contributions.
Two decades after I first fell in love with it, the slab allocator remains
at the heart of the systems I work on -- and is as compelling as ever. In
this talk, I will describe some of the highs (and a few of the lows) of my
two decade relationship with this system, highlighting in particular those
aspects of its craftsmanship that continue to inspire the ways we build new
systems.
0 Comments