On Tue, Jun 23, 2015 at 7:22 PM, Pravin Shelar <pshe...@nicira.com> wrote: > On Tue, Jun 23, 2015 at 7:09 PM, Jesse Gross <je...@nicira.com> wrote: >> On Tue, Jun 23, 2015 at 7:06 PM, Pravin Shelar <pshe...@nicira.com> wrote: >>> On Tue, Jun 23, 2015 at 2:51 PM, Jesse Gross <je...@nicira.com> wrote: >>>> On Mon, Jun 22, 2015 at 8:08 PM, Pravin Shelar <pshe...@nicira.com> wrote: >>>>> On Fri, Jun 19, 2015 at 11:24 AM, Daniele Di Proietto >>>>> <diproiet...@vmware.com> wrote: >>>>>> >>>>>> >>>>>> On 18/06/2015 23:57, "Traynor, Kevin" <kevin.tray...@intel.com> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>>> -----Original Message----- >>>>>>> >>>>>>>> From: dev [mailto:dev-boun...@openvswitch.org] On Behalf Of Daniele Di >>>>>>> >>>>>>>> Proietto >>>>>>> >>>>>>>> Sent: Tuesday, June 16, 2015 7:39 PM >>>>>>> >>>>>>>> To: dev@openvswitch.org >>>>>>> >>>>>>>> Subject: [ovs-dev] [PATCH] dpif-netdev: Check for PKT_RX_RSS_HASH flag. >>>>>>> >>>>>>>> >>>>>>> >>>>>>>> DPDK mbufs contain a valid RSS hash only if PKT_RX_RSS_HASH is >>>>>>> >>>>>>>> set in 'ol_flags'. Otherwise the hash is garbage and doesn't >>>>>>> >>>>>>>> relate to the packet. >>>>>>> >>>>>>>> >>>>>>> >>>>>>>> This fixes an issue with vhost, which, being a virtual NIC, doesn't >>>>>>> >>>>>>>> compute the hash. >>>>>>> >>>>>>>> >>>>>>> >>>>>>>> Unfortunately the ixgbe vPMD doesn't set the PKT_RX_RSS_HASH, forcing >>>>>>> >>>>>>>> OVS to compute an hash is software. This has a significant impact on >>>>>>> >>>>>>>> performance (-30% throughput in a single flow setup) which can be >>>>>>> >>>>>>>> mitigated in the CPU supports crc32c instructions. >>>>>>> >>>>>>> >>>>>>> >>>>>>>As per the other thread on this I'm a bit concerned about the performance >>>>>>> >>>>>>>drop from this patch, so I did some testing of this and alternative/ >>>>>>> >>>>>>>complimentary solutions. >>>>>>> >>>>>>> >>>>>>> >>>>>>>Here's the options I looked at and some comments: >>>>>>> >>>>>>>1. This patch in isolation: vhost drops about ~15% vhost-vhost and >>>>>>> >>>>>>>phy-vhost-phy (because of sw hash) but also there is drops of ~25% for >>>>>>> >>>>>>>phy-phy and ~15% drop for phy-ivshmem-phy. >>>>>>> >>>>>>> >>>>>>> >>>>>>>2. Leave the code as is and let EMC misses happen for vhost rx pkts: >>>>>>> >>>>>>>I measure this at ~35% drop if missed *everytime* for vhost-vhost. We >>>>>>> >>>>>>>see in testing that it can also never happen, but this is not realistic. >>>>>>> >>>>>>>There should be no impact to other DPDK interfaces. >>>>>>> >>>>>>> >>>>>>> >>>>>>>3. Add hash reset for packets from vhost: This is another way of forcing >>>>>>> >>>>>>>the software hash for vhost rx and it is roughly equivalent in >>>>>>>performance >>>>>>> >>>>>>>to 1. for vhost-vhost (~15% drop). While there is a no significant drop >>>>>>> >>>>>>>for phy-vhost-phy. There should be no impact to other DPDK interfaces. >>>>>>> >>>>>>> >>>>>>> >>>>>>>4. Apply this patch and turn off Rx Vectorisation. vhost-vhost will drop >>>>>>> >>>>>>>~15% as per 1. and there should be nothing significant for phy-vhost-phy. >>>>>>> >>>>>>>We would lose the 10% gain that rx vectorisation gave us for phy-phy. >>>>>>> >>>>>>>There should be no impact for dpdkr ports. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>>In terms of not knowing whether the hw hash is valid or not if the flag >>>>>>>is >>>>>>> >>>>>>>not checked, I would have expected the pmd to return an error on config >>>>>>>if >>>>>>> >>>>>>>the hash wasn't supported, but I'm not sure that it does. >>>>>>> >>>>>>>In the worst case where there was an incorrect hash, it would miss the >>>>>>>EMC >>>>>>> >>>>>>>which is about a 45% drop for phy-phy. I would think it's pretty safe >>>>>>>that >>>>>>> >>>>>>>if we configure it, the hash will be correct but I guess there is a >>>>>>> >>>>>>>possibility it wouldn't be. >>>>>>> >>>>>>> >>>>>>> >>>>>>>Even if it is possible to get a smaller patch to fix the underlying issue >>>>>>> >>>>>>>in DPDK, it would be in DPDK 2.1 at the earliest meaning the performance >>>>>>> >>>>>>>would remain low until sometime in August. If it's DPDK 2.2, then it >>>>>>>would >>>>>>> >>>>>>>be sometime in December. This would mean any performance drops would be >>>>>>> >>>>>>>present in OVS 2.4 and possibly OVS 2.5. >>>>>>> >>>>>>> >>>>>>> >>>>>>>Sorry :( but based on the performance drop with this patch in isolation >>>>>>>it >>>>>>> >>>>>>>would be a NAK from me. My preference would be 3 which gives best >>>>>>>performance, >>>>>>> >>>>>>>or 4 which is a bit lower for phy-phy but safer. >>>>>>> >>>>>>> >>>>>>> >>>>>>>Kevin. >>>>>> >>>>>> Thanks for all the testing. I guess it might make sense to stretch our >>>>>> interpretation of the API in this case, because it wouldn't affect >>>>>> correctness. >>>>>> >>>>>> Unless there any other objection I'm fine with the 3rd approach. >>>>>> >>>>> >>>>> We can use 3rd approach to fix issue on branch 2.4. Then have patch to >>>>> check the PKT_RX_RSS_HASH flag on master. By the time we release >>>>> branch 2.5 we will have proper fix in DPDK and performance will bounce >>>>> back. >>>> >>>> I think this is probably a reasonable compromise. I think it's better >>>> to not keep a workaround in for an unbounded amount of time, otherwise >>>> we'll forget about it and it will come back to bite us in the future. >>> >>> ok, Once the DPDK fix is backported to DPDK 2.0, we can remove the >>> workaround. >> >> Oh, I was just providing my justification for agreeing with you. I was >> considering putting the check for the RSS flag on master to be >> removing the workaround, so I don't think there is anything to be done >> beyond what you described. > > I thought you did not wanted to keep the workaround in 2.4.
I think it's OK as long as we are making progress towards the right solution. It might be somewhat difficult to correctly pair backports of OVS and DPDK anyways. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev