[dpdk-dev] [RFC 19.11 1/2] ethdev: make DPDK core functions non-inline

Bruce Richardson bruce.richardson at intel.com
Tue Jul 30 18:11:31 CEST 2019


On Tue, Jul 30, 2019 at 08:54:13AM -0700, Stephen Hemminger wrote:
> On Tue, 30 Jul 2019 16:33:55 +0100
> Bruce Richardson <bruce.richardson at intel.com> wrote:
> 
> > On Tue, Jul 30, 2019 at 08:25:34AM -0700, Stephen Hemminger wrote:
> > > On Tue, 30 Jul 2019 14:49:49 +0200
> > > Marcin Zapolski <marcinx.a.zapolski at intel.com> wrote:
> > >   
> > > > Make rte_eth_rx_burst, rte_eth_tx_burst and other static inline ethdev
> > > > functions not inline. They are referencing DPDK internal structures and
> > > > inlining forces those structures to be exposed to user applications.
> > > > 
> > > > In internal testing with i40e NICs a performance drop of about 2% was
> > > > observed with testpmd.
> > > > 
> > > > Signed-off-by: Marcin Zapolski <marcinx.a.zapolski at intel.com>  
> > > 
> > > Sorry 2% matters.  
> > 
> > Note that this is with testpmd. Are there many apps out there where a 2%
> > drop in IO cost would be noticable?
> 
> Why not find a way to get the 2% back elsewhere? Maybe analyzing the code/cache
> in more detail. Perhaps some prefetching could help, or getting rid of
> indirect calls elsewhere in the code.  At the extreme, maybe implementing
> something like the kernel static branches (self-modifying code) would
> get a lot back.

I'm all for getting it back, but the most likely place is in individual
drivers themselves. Do you have a link on the static branches that the rest
of us could read up on, since I, for one, am not familiar with the term.


More information about the dev mailing list