USENIX 2001 Abstract
Magazines and Vmem: Extending the Slab Allocator to Many CPUs and Arbitrary Resources
Jeff Bonwick, Sun Microsystems, and Jonathan Adams, California Institute of Technology
The slab allocator [Bonwick94] provides efficient object caching but
has two significant limitations: its global locking doesn't scale to
many CPUs, and the allocator can't manage resources other than kernel
memory. To provide scalability we introduce a per-processor caching
scheme called the magazine layer that
provides linear scaling to any number of CPUs. To support
more general resource allocation we introduce a new virtual memory
allocator, vmem, which acts as a universal backing store for
the slab allocator. Vmem is a complete general-purpose resource
allocator in its own right, providing several important new
services; it also appears to be the first resource allocator that
can satisfy arbitrary-size allocations in constant time. Magazines
and vmem have yielded performance gains exceeding 50% on
system-level benchmarks like LADDIS and SPECweb99.
We ported these technologies from kernel to user context and found
that the resulting libumem outperforms the current best-of-breed
user-level memory allocators. libumem also provides a richer
programming model and can be used to manage other user-level
- View the full text of this paper in
The Proceedings are published as a collective work, © 2001 by the USENIX Association. All Rights Reserved. Rights
to individual papers remain with the author or the author's employer.
Permission is granted for the noncommercial reproduction of the complete
work for educational or research purposes. USENIX acknowledges all
trademarks within this paper.
- If you need the latest Adobe Acrobat Reader, you can download it from Adobe's site.
- To become a USENIX Member, please see our Membership Information.