180
libvmemcache Design
libvmemcache has two main design aspects:
1. Allocator design to improve/resolve fragmentation issues
2. A scalable and efficient LRU policy
Extent-Based Allocator
libvmemcache can solve fragmentation issues when working with terabyte-sized inmemory workloads and provide high space utilization. Figure 10-5 shows a workload
example that creates many small objects, and over time, the allocator stops due to
fragmentation.
Table 10-2. Design aspects of libmemkind and libvmemcache
libmemkind (PMEM)
libvmemcache
Allocation
Scheme
Dynamic allocator
extent based (not restricted to
sector, page, etc.)
Purpose
General purpose
lightweight in-memory cache
Fragmentation
apps with random size allocations/
deallocations that run for a longer period
Minimized
Chapter 10 Volatile Use of persistent MeMory
libvmemcache Design
libvmemcache has two main design aspects:
1. Allocator design to improve/resolve fragmentation issues
2. A scalable and efficient LRU policy
Extent-Based Allocator
libvmemcache can solve fragmentation issues when working with terabyte-sized inmemory workloads and provide high space utilization. Figure 10-5 shows a workload
example that creates many small objects, and over time, the allocator stops due to
fragmentation.
Table 10-2. Design aspects of libmemkind and libvmemcache
libmemkind (PMEM)
libvmemcache
Allocation
Scheme
Dynamic allocator
extent based (not restricted to
sector, page, etc.)
Purpose
General purpose
lightweight in-memory cache
Fragmentation
apps with random size allocations/
deallocations that run for a longer period
Minimized
Chapter 10 Volatile Use of persistent MeMory
