[dpdk-dev] [PATCH v2] vhost: fix virtio_net false sharing
Yuanhan Liu
yuanhan.liu at linux.intel.com
Mon Mar 27 10:33:12 CEST 2017
On Mon, Mar 27, 2017 at 09:34:19AM +0200, Maxime Coquelin wrote:
>
>
> On 03/23/2017 04:44 PM, Kevin Traynor wrote:
> >The broadcast_rarp field in the virtio_net struct is checked in the
> >dequeue datapath regardless of whether descriptors are available or not.
> >
> >As it is checked with cmpset leading to a write, false sharing on the
> >virtio_net struct can happen between enqueue and dequeue datapaths
> >regardless of whether a RARP is requested. In OVS, the issue can cause
> >a uni-directional performance drop of up to 15%.
> >
> >Fix that by only performing the cmpset if a read of broadcast_rarp
> >indicates that the cmpset is likely to succeed.
> >
> >Fixes: a66bcad32240 ("vhost: arrange struct fields for better cache sharing")
> >Cc: stable at dpdk.org
> >
> >Signed-off-by: Kevin Traynor <ktraynor at redhat.com>
> >---
> >
> >V2:
> >Change from fixing by moving broadcast_rarp location in virtio_net struct
> >to performing a read before cmpset.
> >
> > lib/librte_vhost/virtio_net.c | 16 ++++++++++++++--
> > 1 file changed, 14 insertions(+), 2 deletions(-)
>
> Nice!
> Reviewed-by: Maxime Coquelin <maxime.coquelin at redhat.com>
Applied to dpdk-next-virtio.
Thanks.
--yliu
>
> I'll try to benchmark it with testpmd only to see if we measure the
> same gain without OVS.
>
> Thanks,
> Maxime
More information about the dev
mailing list