* [dpdk-dev] rte_pktmbuf_pool_create returns EINVAL @ 2020-12-08 7:29 Kamaraj P 2020-12-10 18:17 ` Kamaraj P 0 siblings, 1 reply; 3+ messages in thread From: Kamaraj P @ 2020-12-08 7:29 UTC (permalink / raw) To: dev; +Cc: Nageswara Rao Penumarthy 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 ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [dpdk-dev] rte_pktmbuf_pool_create returns EINVAL 2020-12-08 7:29 [dpdk-dev] rte_pktmbuf_pool_create returns EINVAL Kamaraj P @ 2020-12-10 18:17 ` Kamaraj P 2020-12-11 18:21 ` Kamaraj P 0 siblings, 1 reply; 3+ messages in thread From: Kamaraj P @ 2020-12-10 18:17 UTC (permalink / raw) To: dev; +Cc: Nageswara Rao Penumarthy 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 <pkamaraj@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 > > > > ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [dpdk-dev] rte_pktmbuf_pool_create returns EINVAL 2020-12-10 18:17 ` Kamaraj P @ 2020-12-11 18:21 ` Kamaraj P 0 siblings, 0 replies; 3+ messages in thread From: Kamaraj P @ 2020-12-11 18:21 UTC (permalink / raw) To: dev; +Cc: Nageswara Rao Penumarthy 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 <pkamaraj@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 <pkamaraj@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 >> >> >> >> ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-12-11 18:21 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-12-08 7:29 [dpdk-dev] rte_pktmbuf_pool_create returns EINVAL Kamaraj P 2020-12-10 18:17 ` Kamaraj P 2020-12-11 18:21 ` Kamaraj P
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).