[dpdk-dev] [PATCH] ixgbe: prefetch packet headers in vector PMD receive function

Ananyev, Konstantin konstantin.ananyev at intel.com
Mon Sep 28 01:19:19 CEST 2015



> -----Original Message-----
> From: Zoltan Kiss [mailto:zoltan.kiss at linaro.org]
> Sent: Friday, September 25, 2015 7:29 PM
> To: Richardson, Bruce; dev at dpdk.org
> Cc: Ananyev, Konstantin
> Subject: Re: [PATCH] ixgbe: prefetch packet headers in vector PMD receive function
> 
> On 07/09/15 07:41, Richardson, Bruce wrote:
> >
> >> -----Original Message-----
> >> From: Zoltan Kiss [mailto:zoltan.kiss at linaro.org]
> >> Sent: Monday, September 7, 2015 3:15 PM
> >> To: Richardson, Bruce; dev at dpdk.org
> >> Cc: Ananyev, Konstantin
> >> Subject: Re: [PATCH] ixgbe: prefetch packet headers in vector PMD receive
> >> function
> >>
> >>
> >>
> >> On 07/09/15 13:57, Richardson, Bruce wrote:
> >>>
> >>>> -----Original Message-----
> >>>> From: Zoltan Kiss [mailto:zoltan.kiss at linaro.org]
> >>>> Sent: Monday, September 7, 2015 1:26 PM
> >>>> To: dev at dpdk.org
> >>>> Cc: Ananyev, Konstantin; Richardson, Bruce
> >>>> Subject: Re: [PATCH] ixgbe: prefetch packet headers in vector PMD
> >>>> receive function
> >>>>
> >>>> Hi,
> >>>>
> >>>> I just realized I've missed the "[PATCH]" tag from the subject. Did
> >>>> anyone had time to review this?
> >>>>
> >>> Hi Zoltan,
> >>>
> >>> the big thing that concerns me with this is the addition of new
> >>> instructions for each packet in the fast path. Ideally, this
> >>> prefetching would be better handled in the application itself, as for
> >>> some apps, e.g. those using pipelining, the core doing the RX from the
> >>> NIC may not touch the packet data at all, and the prefetches will
> >> instead cause a performance slowdown.
> >>> Is it possible to get the same performance increase - or something
> >>> close to it - by making changes in OVS?
> >> OVS already does a prefetch when it's processing the previous packet, but
> >> apparently it's not early enough. At least for my test scenario, where I'm
> >> forwarding UDP packets with the least possible overhead. I guess in tests
> >> where OVS does more complex processing it should be fine.
> >> I'll try to move the prefetch earlier in OVS codebase, but I'm not sure if
> >> it'll help.
> > I would suggest trying to prefetch more than one packet ahead. Prefetching 4 or
> > 8 ahead might work better, depending on the processing being done.
> 
> I've moved the prefetch earlier, and it seems to work:
> 
> https://patchwork.ozlabs.org/patch/519017/
> 
> However it raises the question: should we remove header prefetch from
> all the other drivers, and the CONFIG_RTE_PMD_PACKET_PREFETCH option?

My vote would be for that.
Konstantin


> 
> >
> > /Bruce



More information about the dev mailing list