-
Type:
Improvement
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Block Cache
-
Storage Engines, Storage Engines - Persistence
-
SE Persistence backlog
-
None
Block cache currently uses libmemkind to manage cache in the persistent memory (NVRAM). However, libmemkind has been deprecated, and it should be replaced by an alternative.
We need to find a library that can create a fixed-length memory pool based on the provided void* pointer and length, from which we could then allocate memory as needed. The new library should have an agreeable license, so that we can pull it into our third_party directory. It would be a bonus if the new library could also manage NVRAM. If it not, we could probably still use any such library by (1) first mmap-ing the NVRAM device, and then (2) passing that memory to the library to use as the backing memory for its pool.
In short, we need a library that supports the equivalent of the following libmemkind functions:
- int memkind_create_fixed(void *addr, size_t size, memkind_t *kind); – create a memory pool from the provided address and size
- int memkind_destroy_kind(memkind_t kind); – destroy the memory pool
- void *memkind_malloc(memkind_t kind, size_t size); – allocate memory from the pool
- void memkind_free(memkind_t kind, void *ptr); – return memory back to the pool
For example, one possible library that might be worth looking into is UMF, although I didn't get a chance to check its functionality or licensing terms.
- is depended on by
-
WT-14797 Build a file-backed block cache
-
- Open
-