From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Monjalon Subject: Re: [PATCH] kni: optimizing the rte_kni_rx_burst Date: Tue, 11 Nov 2014 23:58:22 +0100 Message-ID: <1791036.bZfV7z791K@xps13> References: <14060979121185-git-send-email-Hemant@freescale.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7Bit To: dev-VfR2kkLFssw@public.gmane.org Return-path: In-Reply-To: <14060979121185-git-send-email-Hemant-KZfg59tc24xl57MIdRCFDg@public.gmane.org> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" Is there anyone interested in KNI to review this patch please? 2014-07-23 12:15, Hemant Agrawal: > The current implementation of rte_kni_rx_burst polls the fifo for buffers. > Irrespective of success or failure, it allocates the mbuf and try to put them into the alloc_q > if the buffers are not added to alloc_q, it frees them. > This waste lots of cpu cycles in allocating and freeing the buffers if alloc_q is full. > > The logic has been changed to: > 1. Initially allocand add buffer(burstsize) to alloc_q > 2. Add buffers to alloc_q only when you are pulling out the buffers. > > Signed-off-by: Hemant Agrawal > --- > lib/librte_kni/rte_kni.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/lib/librte_kni/rte_kni.c b/lib/librte_kni/rte_kni.c > index 76feef4..01e85f8 100644 > --- a/lib/librte_kni/rte_kni.c > +++ b/lib/librte_kni/rte_kni.c > @@ -263,6 +263,9 @@ rte_kni_alloc(struct rte_mempool *pktmbuf_pool, > > ctx->in_use = 1; > > + /* Allocate mbufs and then put them into alloc_q */ > + kni_allocate_mbufs(ctx); > + > return ctx; > > fail: > @@ -369,8 +372,9 @@ rte_kni_rx_burst(struct rte_kni *kni, struct rte_mbuf **mbufs, unsigned num) > { > unsigned ret = kni_fifo_get(kni->tx_q, (void **)mbufs, num); > > - /* Allocate mbufs and then put them into alloc_q */ > - kni_allocate_mbufs(kni); > + /* If buffers removed, allocate mbufs and then put them into alloc_q */ > + if(ret) > + kni_allocate_mbufs(kni); > > return ret; > }