[dpdk-dev] [PATCH] net/i40e: remove VF interrupt handler

Zhang, Qi Z qi.z.zhang at intel.com
Thu Jun 7 15:16:18 CEST 2018



> -----Original Message-----
> From: Xing, Beilei
> Sent: Thursday, June 7, 2018 3:14 PM
> To: Zhang, Qi Z <qi.z.zhang at intel.com>
> Cc: Wu, Jingjing <jingjing.wu at intel.com>; Yu, De <de.yu at intel.com>;
> dev at dpdk.org
> Subject: RE: [PATCH] net/i40e: remove VF interrupt handler
> 
> 
> 
> > -----Original Message-----
> > From: Zhang, Qi Z
> > Sent: Thursday, June 7, 2018 9:32 AM
> > To: Xing, Beilei <beilei.xing at intel.com>
> > Cc: Wu, Jingjing <jingjing.wu at intel.com>; Yu, De <de.yu at intel.com>;
> > dev at dpdk.org; Zhang, Qi Z <qi.z.zhang at intel.com>
> > Subject: [PATCH] net/i40e: remove VF interrupt handler
> >
> > For i40evf, internal rx interrupt and adminq interrupt share the same
> > source, that cause a lot cpu cycles be wasted on interrupt handler on
> > rx path. This is complained by customers which require low latency
> > (when set I40E_ITR_INTERVAL to small value), but have to be sufferred
> > by tremendous interrupts handling that eat significant CPU resources.
> >
> > The patch disable pci interrupt and remove the interrupt handler,
> > replace it with a low frequency (50ms) interrupt polling daemon which
> > is implemented by registering a alarm callback periodly, this save CPU
> > time significently: On a typical x86 server with 2.1GHz CPU, with low
> > latency configure (32us) we saw CPU usage from top commmand reduced
> > from 20% to 0% on management core in testpmd).
> >
> > Also with the new method we can remove compile option:
> > I40E_ITR_INTERVAL which is used to balance between low latency and low
> > CPU usage previously.
> > Now we don't need it since we can reach both at same time.
> >
> > Suggested-by: Jingjing Wu <jingjing.wu at intel.com>
> > Signed-off-by: Qi Zhang <qi.z.zhang at intel.com>
> > ---
> >  config/common_base                |  2 --
> >  drivers/net/i40e/i40e_ethdev.c    |  3 +--
> >  drivers/net/i40e/i40e_ethdev.h    | 22 +++++++++++-----------
> >  drivers/net/i40e/i40e_ethdev_vf.c | 36
> > ++++++++++++++----------------------
> >  4 files changed, 26 insertions(+), 37 deletions(-)
> >
> > diff --git a/config/common_base b/config/common_base index
> > 6b0d1cbbb..9e21c6865 100644
> > --- a/config/common_base
> > +++ b/config/common_base
> > @@ -264,8 +264,6 @@ CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=y
> >  CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n
> >  CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF=64
> >  CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM=4
> > -# interval up to 8160 us, aligned to 2 (or default value)
> > -CONFIG_RTE_LIBRTE_I40E_ITR_INTERVAL=-1
> 
> Then description about CONFIG_RTE_LIBRTE_I40E_ITR_INTERVAL in
> documentation should also be removed.

Good capture, will fix this in v2

Thanks
Qi
> 
> Beilei


More information about the dev mailing list