文章目录
前言
DPDK提供了一套内存池管理机制,以提供高效分配固定大小对象的能力。
Mempool工作机制
Mempool内部维护两级空闲对象缓存:Per-Core缓存和共享缓存,其中:
- Per-Core缓存为每个在用的CPU core分配了专用的空闲对象池,避免了当前运行CPU core分配内存时与其它CPU core的冲突;
- 共享缓存提供了在Per-Core缓存不足时,仍能分配空闲对象的能力。
Mempool工作机制示意如下:
应用申请对象时,Mempool优先从Per-core缓存进行分配,在Per-core缓存不足时,从共享池中进行分配。Per-core缓存和共享池都是基于DPDK Ring数据结构进行组织,并使用Ring接口完成空闲对象的分配与回收。
Mempool数据结构
Mempool核心数据结构关联如下:
- rte_mempool:Mempool管理结构;
- rte_mempool_cache:Per-core缓存,维护了一个共享对象的数组队列;
- rte_mempool_memhdr:管理共享缓存的后端内存;
- rte_mempool_objhdr:Object管理结构,位于对象头部。