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? > > /Bruce