dpdk内存管理之内存对齐

7250阅读 0评论2019-06-16 lvyilong316
分类:LINUX

dpdk内存管理之内存对齐

——lvyilong316

本篇文章主要分析一下dpdk的内存对齐处理,注意这里说的不是“cache对齐”,而是内存对齐。不同于cache处理,我们只要保证数据cache line对齐就好,对于内存对齐我们需要充分了解一定的内存背景知识。关于内存的一些基本知识之前整理过一篇文章,可以参考如下链接:http://blog.chinaunix.net/uid-28541347-id-5795423.html。下面首先对文章的一些要点进行下回顾:

    
dpdk中内存分配中已经为我们考虑了,在创建mempool过程中有以下代码:

点击(此处)折叠或打开

  1. if ((flags & MEMPOOL_F_NO_SPREAD) == 0) {
  2.         unsigned new_size;
  3.         new_size = optimize_object_size(sz->header_size + sz->elt_size +
  4.             sz->trailer_size);
  5.         sz->trailer_size = new_size - sz->header_size - sz->elt_size;
  6. }

可以看到在默认没有设置MEMPOOL_F_NO_SPREAD是会调用optimize_object_size,这个函数就是内存对齐的关键。

optimize_object_size





上一篇:linux电源管理——C-state,P-state,turbo分析
下一篇:基于SPDK的用户空间NVMe Over TCP传输解决方案