skip to main content
10.5555/1267257.1267263guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

The slab allocator: an object-caching kernel memory allocator

Published: 06 June 1994 Publication History

Abstract

This paper presents a comprehensive design overview of the SunOS 5.4 kernel memory allocator. This allocator is based on a set of object-caching primitives that reduce the cost of allocating complex objects by retaining their state between uses. These same primitives prove equally effective for managing stateless memory (e.g. data pages and temporary buffers) because they are space-efficient and fast. The allocator's object caches respond dynamically to global memory pressure, and employ an object-coloring scheme that improves the system's overall cache utilization and bus balance. The allocator also has several statistical and debugging features that can detect a wide range of problems throughout the system.

References

[1]
[Barrett93] David A. Barrett and Benjamin G. Zorn, Using Lifetime Predictors to Improve Memory Allocation Performance. Proceedings of the 1993 SIGPLAN Conference on Programming Language Design and Implementation, pp. 187-196 (1993).
[2]
[Boehm88] H. Boehm and M. Weiser, Garbage Collection in an Uncooperative Environment. Software - Practice and Experience, v. 18, no. 9, pp. 807-820 (1988).
[3]
[Bozman84A] G. Bozman, W. Buco, T. Daly, and W. Tetzlaff, Analysis of Free Storage Algorithms -- Revisited. IBM Systems Journal, v. 23, no. 1, pp. 44-64 (1984).
[4]
[Bozman84B] G. Bozman, The Software Lookaside Buffer Reduces Search Overhead with Linked Lists. Communications of the ACM, v. 27, no. 3, pp. 222-227 (1984).
[5]
[Cekleov92] Michel Cekleov, Jean-Marc Frailong and Pradeep Sindhu, Sun-4D Architecture. Revision 1.4, 1992.
[6]
[Chen93] J. Bradley Chen and Brian N. Bershad, The Impact of Operating System Structure on Memory System Performance. Proceedings of the Fourteenth ACM Symposium on Operating Systems Principles, v. 27, no. 5, pp. 120-133 (1993).
[7]
[Grunwald93A] Dirk Grunwald and Benjamin Zorn, CustoMalloc: Efficient Synthesized Memory Allocators. Software - Practice and Experience, v. 23, no. 8, pp. 851-869 (1993).
[8]
[Grunwald93B] Dirk Grunwald, Benjamin Zorn and Robert Henderson, Improving the Cache Locality of Memory Allocation. Proceedings of the 1993 SIGPLAN Conference on Programming Language Design and Implementation, pp. 177-186 (1993).
[9]
[Hanson90] David R. Hanson, Fast Allocation and Deallocation of Memory Based on Object Lifetimes. Software - Practice and Experience, v. 20, no. 1, pp. 5-12 (1990).
[10]
[Knuth68] Donald E. Knuth, The Art of Computer Programming, Vol I, Fundamental Algorithms. Addison-Wesley, Reading, MA, 1968.
[11]
[Korn85] David G. Korn and Kiem-Phong Vo, In Search of a Better Malloc. Proceedings of the Summer 1985 Usenix Conference, pp. 489-506.
[12]
[Lee89] T. Paul Lee and R. E. Barkley, A Watermark-based Lazy Buddy System for Kernel Memory Allocation. Proceedings of the Summer 1989 Usenix Conference, pp. 1-13.
[13]
[Leverett82] B. W. Leverett and P. G. Hibbard, An Adaptive System for Dynamic Storage Allocation. Software - Practice and Experience, v. 12, no. 3, pp. 543-555 (1982).
[14]
[Margolin71] B. Margolin, R. Parmelee, and M. Schatzoff, Analysis of Free Storage Algorithms. IBM Systems Journal, v. 10, no. 4, pp. 283-304 (1971).
[15]
[McKenney93] Paul E. McKenney and Jack Slingwine, Efficient Kernel Memory Allocation on Shared-Memory Multiprocessors. Proceedings of the Winter 1993 Usenix Conference, pp. 295-305.
[16]
[McKusick88] Marshall Kirk McKusick and Michael J. Karels, Design of a General Purpose Memory Allocator for the 4.3BSD UNIX Kernel. Proceedings of the Summer 1988 Usenix Conference, pp. 295-303.
[17]
[Oldehoeft85] Rodney R. Oldehoeft and Stephen J. Allan, Adaptive Exact-Fit Storage Management. Communications of the ACM, v. 28, pp. 506-511 (1985).
[18]
[Standish80] Thomas Standish, Data Structure Techniques. Addison-Wesley, Reading, MA, 1980.
[19]
[Stephenson83] C. J. Stephenson, Fast Fits: New Methods for Dynamic Storage Allocation. Proceedings of the Ninth ACM Symposium on Operating Systems Principles, v. 17, no. 5, pp. 30-32 (1983).
[20]
[VanSciver88] James Van Sciver and Richard F. Rashid, Zone Garbage Collection. Proceedings of the Summer 1990 Usenix Mach Workshop, pp. 1-15.
[21]
[Weinstock88] Charles B. Weinstock and William A. Wulf, QuickFit: An Efficient Algorithm for Heap Storage Allocation. ACM SIGPLAN Notices, v. 23, no. 10, pp. 141-144 (1988).
[22]
[Zorn93] Benjamin Zorn, The Measured Cost of Conservative Garbage Collection. Software - Practice and Experience, v. 23, no. 7, pp. 733-756 (1993).

Cited By

View all
  • (2023)FUSEEProceedings of the 21st USENIX Conference on File and Storage Technologies10.5555/3585938.3585944(81-97)Online publication date: 21-Feb-2023
  • (2021)Memory at your serviceProceedings of the 22nd International Middleware Conference10.1145/3464298.3493394(185-197)Online publication date: 6-Dec-2021
  • (2021)Judging a type by its pointer: optimizing GPU virtual functionsProceedings of the 26th ACM International Conference on Architectural Support for Programming Languages and Operating Systems10.1145/3445814.3446734(241-254)Online publication date: 19-Apr-2021
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Guide Proceedings
USTC'94: Proceedings of the USENIX Summer 1994 Technical Conference on USENIX Summer 1994 Technical Conference - Volume 1
June 1994
222 pages

Publisher

USENIX Association

United States

Publication History

Published: 06 June 1994

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 13 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2023)FUSEEProceedings of the 21st USENIX Conference on File and Storage Technologies10.5555/3585938.3585944(81-97)Online publication date: 21-Feb-2023
  • (2021)Memory at your serviceProceedings of the 22nd International Middleware Conference10.1145/3464298.3493394(185-197)Online publication date: 6-Dec-2021
  • (2021)Judging a type by its pointer: optimizing GPU virtual functionsProceedings of the 26th ACM International Conference on Architectural Support for Programming Languages and Operating Systems10.1145/3445814.3446734(241-254)Online publication date: 19-Apr-2021
  • (2019)A lock-free coalescing-capable mechanism for memory managementProceedings of the 2019 ACM SIGPLAN International Symposium on Memory Management10.1145/3315573.3329982(79-88)Online publication date: 23-Jun-2019
  • (2019)Massively parallel GPU memory compactionProceedings of the 2019 ACM SIGPLAN International Symposium on Memory Management10.1145/3315573.3329979(14-26)Online publication date: 23-Jun-2019
  • (2019)Translation rangerProceedings of the 46th International Symposium on Computer Architecture10.1145/3307650.3322223(698-710)Online publication date: 22-Jun-2019
  • (2019)On dynamic memory allocation in sliding-window parallel patterns for streaming analyticsThe Journal of Supercomputing10.1007/s11227-017-2152-175:8(4114-4131)Online publication date: 1-Aug-2019
  • (2018)The benefits and costs of writing a POSIX kernel in a high-level languageProceedings of the 13th USENIX conference on Operating Systems Design and Implementation10.5555/3291168.3291176(89-105)Online publication date: 8-Oct-2018
  • (2018)LibPMACM Transactions on Storage10.1145/327814114:4(1-18)Online publication date: 4-Dec-2018
  • (2018)Cascade MappingProceedings of the ACM Symposium on Cloud Computing10.1145/3267809.3267847(464-476)Online publication date: 11-Oct-2018
  • Show More Cited By

View Options

View options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media