Skip to content
  • Matt Mackall's avatar
    [PATCH] slob: introduce the SLOB allocator · 10cef602
    Matt Mackall authored
    configurable replacement for slab allocator
    
    This adds a CONFIG_SLAB option under CONFIG_EMBEDDED.  When CONFIG_SLAB is
    disabled, the kernel falls back to using the 'SLOB' allocator.
    
    SLOB is a traditional K&R/UNIX allocator with a SLAB emulation layer,
    similar to the original Linux kmalloc allocator that SLAB replaced.  It's
    signicantly smaller code and is more memory efficient.  But like all
    similar allocators, it scales poorly and suffers from fragmentation more
    than SLAB, so it's only appropriate for small systems.
    
    It's been tested extensively in the Linux-tiny tree.  I've also
    stress-tested it with make -j 8 compiles on a 3G SMP+PREEMPT box (not
    recommended).
    
    Here's a comparison for otherwise identical builds, showing SLOB saving
    nearly half a megabyte of RAM:
    
    $ size vmlinux*
       text    data     bss     dec     hex filename
    3336372  529360  190812 4056544  3de5e0 vmlinux-slab
    3323208  527948  190684 4041840  3dac70 vmlinux-slob
    
    $ size mm/{slab,slob}.o
      ...
    10cef602