[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20161121.113344.1752464897217831370.davem@davemloft.net>
Date: Mon, 21 Nov 2016 11:33:44 -0500 (EST)
From: David Miller <davem@...emloft.net>
To: eric.dumazet@...il.com
Cc: ttoukan.linux@...il.com, netdev@...r.kernel.org,
tariqt@...lanox.com
Subject: Re: [PATCH v2 net-next] mlx4: avoid unnecessary dirtying of
critical fields
From: Eric Dumazet <eric.dumazet@...il.com>
Date: Sun, 20 Nov 2016 09:24:36 -0800
> From: Eric Dumazet <edumazet@...gle.com>
>
> While stressing a 40Gbit mlx4 NIC with busy polling, I found false
> sharing in mlx4 driver that can be easily avoided.
>
> This patch brings an additional 7 % performance improvement in UDP_RR
> workload.
>
> 1) If we received no frame during one mlx4_en_process_rx_cq()
> invocation, no need to call mlx4_cq_set_ci() and/or dirty ring->cons
>
> 2) Do not refill rx buffers if we have plenty of them.
> This avoids false sharing and allows some bulk/batch optimizations.
> Page allocator and its locks will thank us.
>
> Finally, mlx4_en_poll_rx_cq() should not return 0 if it determined
> cpu handling NIC IRQ should be changed. We should return budget-1
> instead, to not fool net_rx_action() and its netdev_budget.
>
>
> v2: keep AVG_PERF_COUNTER(... polled) even if polled is 0
>
> Signed-off-by: Eric Dumazet <edumazet@...gle.com>
Applied.
Powered by blists - more mailing lists