Hi, On Mon, Jul 15, 2019 at 10:38:53AM +0100, Burakov, Anatoly wrote: > On 15-Jul-19 5:54 AM, Jerin Jacob Kollanukkaran wrote: > > > > > > > > (also, i don't really like the name NO_PAGE_BOUND since in > > > > > > > > memzone API there's a "bounded memzone" allocation API, and this > > > > > > > > flag's name reads like objects would not be bounded by page > > > > > > > > size, > > > > > > > > not that they won't cross page > > > > > > > > boundary) > > > > > > > > > > > > > > No strong opinion for the name. What name you suggest? > > > > > > > > > > > > How about something like MEMPOOL_F_NO_PAGE_SPLIT? > > > > > > > > > > Looks good to me. > > > > > > > > > > In summary, Change wrt existing patch" > > > > > - Change NO_PAGE_BOUND to MEMPOOL_F_NO_PAGE_SPLIT > > > > > - Set this flag in rte_pktmbuf_pool_create () when > > > > rte_eal_has_hugepages() || > > > > > rte_malloc_heap_socket_is_external(socket_id)) > > > > > > > > If we are to have a special KNI allocation API, would we even need that? > > > > > > Not need this change in rte_pktmbuf_pool_create () if we introduce a new > > > rte_kni_pktmbuf_pool_create () API. > > > > Ferruh, Olivier, Anatoly, > > > > Any objection to create new rte_kni_pktmbuf_pool_create () API > > to embedded MEMPOOL_F_NO_PAGE_SPLIT flag requirement for KNI + IOVA as VA > > > > > > As long as we all are aware of what that means and agree with that > consequence (namely, separate codepaths for KNI and other PMD's) then i have > no specific objections.
Sorry for the late feedback. I think we can change the default behavior of mempool populate(), to prevent objects from being accross 2 pages, except if the size of the object is bigger than the size of the page. This is already what is done in rte_mempool_op_calc_mem_size_default() when we want to estimate the amount of memory needed to allocate N objects. This would avoid the introduction of a specific API to allocate packets for kni, and a specific mempool flag. About the problem of 9K mbuf mentionned by Anatoly, could we imagine a check in kni code, that just returns an error "does not work with size(mbuf) > size(page)" ? Thanks, Olivier