improve explanation of jemalloc size classes

This commit is contained in:
Daniel Micay 2018-11-19 00:11:15 -05:00
parent ac99282773
commit 5b048a28c2

View File

@ -309,12 +309,17 @@ metadata.
The slab slot count for each size class is not yet finely tuned beyond choosing values avoiding The slab slot count for each size class is not yet finely tuned beyond choosing values avoiding
internal fragmentation for slabs (i.e. avoiding wasted space due to page size rounding). internal fragmentation for slabs (i.e. avoiding wasted space due to page size rounding).
The choice of size classes is the same as jemalloc, but with a much different approach to the The choice of size classes for slab allocation is the same as jemalloc, which
slabs containing them: is a careful balance between minimizing internal and external fragmentation. If
there are more size classes, more memory is wasted on free slots available only
> size classes are multiples of the quantum [16], spaced such that there are four size classes for to allocation requests of those sizes (external fragmentation). If there are
> each doubling in size, which limits internal fragmentation to approximately 20% for all but the fewer size classes, the spacing between them is larger and more memory is
> smallest size classes wasted due to rounding up to the size classes (internal fragmentation). There
are 4 special size classes for the smallest sizes (16, 32, 48, 64) that are
simply spaced out by the minimum spacing (16). Afterwards, there are four size
classes for every power of two spacing which results in bounding the internal
fragmentation below 20% for each size class. This also means there are 4 size
classes for each doubling in size.
| size class | worst case internal fragmentation | slab slots | slab size | internal fragmentation for slabs | | size class | worst case internal fragmentation | slab slots | slab size | internal fragmentation for slabs |
| - | - | - | - | - | | - | - | - | - | - |