PMEM allocator是如何基于PMDK的libpmem库实现的?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
PMEM allocator基于PMDK的底层libpmem库实现,它将从PMEM map出的一块空间分为若干segment,每个segment再分成若干blocks。block是allocator的最小分配单元。为避免线程竞争,分配block的线程缓存一些可用空间,包括一组segment和free list。每种record size(若干个block)都维护一个free list和segment,各record size对应的segment只分配该大小的PMEM空间,各record size对应的free list中的所有指针均指向对应record size的空闲空间。