Hello All, Looks like the implementation of rte_mempool_populate_default()API changed from dpdk 18.13 to 19.11 version. This to get contiguous memory from the page. Please see the difference in this API. *from dpdk 18.13:* " If we fail to get enough contiguous memory, then we'll go and
*from dpdk 19.11* * reserve space in smaller chunks. Here is the palace where we see the failure ? rte_mempool_populate_default() { ...... ....... if (pg_sz == 0 || (mz_flags & RTE_MEMZONE_IOVA_CONTIG)) ret = rte_mempool_populate_iova(mp, mz->addr, iova, mz->len, rte_mempool_memchunk_mz_free, (void *)(uintptr_t)mz); else ret = rte_mempool_populate_virt(mp, mz->addr, mz->len, pg_sz, rte_mempool_memchunk_mz_free, (void *)(uintptr_t)mz); if (ret < 0) { r *te_memzone_free(mz); RTE_LOG(ERR, MEMPOOL, "zero %d\n", ret); ==> fails here* goto fail; } ..... .... } Is there anything that needs to be added from our application to get contiguous memory ? BTW we are using the "-legacy-mem" option. Please suggest if there is any change required w..r.t dpdk 19.11 for the mbuf pool creation ? Thanks, Kamaraj On Thu, Dec 10, 2020 at 11:47 PM Kamaraj P <pkama...@gmail.com> wrote: > Hello All, > > We could observe the issue with rte_mempool_populate_default() API. > Does this lead to fetching contiguous memorywhen allocating it ? > BTW we are using the "legacy mem" option to initialize it. > > Please share if you have more info on this issue. > > > On Tue, Dec 8, 2020 at 12:59 PM Kamaraj P <pkama...@gmail.com> wrote: > >> Hello All, >> >> We are using DDPDK 19.11 and when we call *rte_pktmbuf_pool_create() *API >> allocate memory, >> we could see the EINVAL ( EINVAL - cache size provided is too large, or >> priv_size is not aligned ) return from that above API. >> We are seeing the issue only when we pass the Priv_size value of 64 >> bytes which is aligned to RTE_MBUF_PRIV_ALIGN(8 bytes). >> >> Here is our snippet of our code base: >> #define MBUF_CACHE_SIZE *512 * >> #define MBUF_PRIV_SIZE *64* >> #define FRAME_LEN *9216* >> #define NO_OF_MBUF >> *52736 * >> >> /*define in rte_config.h */ >> #define RTE_PKTMBUF_HEADROOM 128 >> >> pool = rte_pktmbuf_pool_create(name, num_mbufs, >> MBUF_CACHE_SIZE, MBUF_PRIV_SIZE, >> frame_len + RTE_PKTMBUF_HEADROOM, >> rte_socket_id()); >> >> The above check was failed with EINVAL >> >> Could you please suggest if there is any known issue or limitation w.r.t >> 19.11 >> >> Thanks, >> Kamaraj >> >> >> >>