181
libvmemcache uses an extent-based allocator, where an extent is a contiguous set of
blocks allocated for storing the data in a database. Extents are typically used with large
blocks supported by file systems (sectors, pages, etc.), but such restrictions do not apply
when working with persistent memory that supports smaller block sizes (cache line).
Figure 10-6 shows that if a single contiguous free block is not available to allocate an
object, multiple, noncontiguous blocks are used to satisfy the allocation request. The
noncontiguous allocations appear as a single allocation to the application.
Figure 10-5. An example of a workload that creates many small objects, and the
allocator stops due to fragmentation
Figure 10-6. Using noncontiguous free blocks to fulfill a larger allocation request
Chapter 10 Volatile Use of persistent MeMory
Précédent

- 205/457

Suivant