dpdk内存管理之内存对齐
——lvyilong316
本篇文章主要分析一下dpdk的内存对齐处理,注意这里说的不是“cache对齐”,而是内存对齐。不同于cache处理,我们只要保证数据cache line对齐就好,对于内存对齐我们需要充分了解一定的内存背景知识。关于内存的一些基本知识之前整理过一篇文章,可以参考如下链接:http://blog.chinaunix.net/uid-28541347-id-5795423.html。下面首先对文章的一些要点进行下回顾:
在dpdk中内存分配中已经为我们考虑了,在创建mempool过程中有以下代码:
点击(此处)折叠或打开
-
if ((flags & MEMPOOL_F_NO_SPREAD) == 0) {
-
unsigned new_size;
-
new_size = optimize_object_size(sz->header_size + sz->elt_size +
-
sz->trailer_size);
-
sz->trailer_size = new_size - sz->header_size - sz->elt_size;
- }
可以看到在默认没有设置MEMPOOL_F_NO_SPREAD是会调用optimize_object_size,这个函数就是内存对齐的关键。
optimize_object_size