Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932444AbbLBKED (ORCPT ); Wed, 2 Dec 2015 05:04:03 -0500 Received: from mail-ob0-f178.google.com ([209.85.214.178]:33280 "EHLO mail-ob0-f178.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756346AbbLBKD4 (ORCPT ); Wed, 2 Dec 2015 05:03:56 -0500 MIME-Version: 1.0 In-Reply-To: References: <1448178839-3541-1-git-send-email-mw@semihalf.com> <1448178839-3541-7-git-send-email-mw@semihalf.com> <20151126164540.GH4665@kw.sim.vm.gnt> Date: Wed, 2 Dec 2015 11:03:56 +0100 Message-ID: Subject: Re: [PATCH 06/13] net: mvneta: enable mixed egress processing using HR timer From: Marcin Wojtas To: Simon Guinot Cc: linux-kernel@vger.kernel.org, "linux-arm-kernel@lists.infradead.org" , netdev@vger.kernel.org, Thomas Petazzoni , Andrew Lunn , Russell King - ARM Linux , Jason Cooper , Yair Mahalalel , Grzegorz Jaszczyk , Evan Wang , nadavh@marvell.com, Lior Amsalem , Tomasz Nowicki , =?UTF-8?Q?Gregory_Cl=C3=A9ment?= , nitroshift@yahoo.com, "David S. Miller" , Sebastian Hesselbarth Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3460 Lines: 95 Hi Simon, I checked using hrtimer_is_queued instead of a custom flag and it resulted in ~20kpps drop in my setup. timer_scheduled flag is cleared in the tasklet, so no timer can be scheduled until the tasklet is executed. hr_timer flags do not cover this situation, so much more timers are enqueued. I added a counter and with maximal throughput during 30s test and 9 times less timers were enqueued with timer_scheduled flag (~31k vs ~281k), so it's much more efficient and I'll leave it as is. Best regards, Marcin 2015-11-30 16:57 GMT+01:00 Marcin Wojtas : > Hi Simon, > > 2015-11-26 17:45 GMT+01:00 Simon Guinot : >> Hi Marcin, >> >> On Sun, Nov 22, 2015 at 08:53:52AM +0100, Marcin Wojtas wrote: >>> Mixed approach allows using higher interrupt threshold (increased back to >>> 15 packets), useful in high throughput. In case of small amount of data >>> or very short TX queues HR timer ensures releasing buffers with small >>> latency. >>> >>> Along with existing tx_done processing by coalescing interrupts this >>> commit enables triggering HR timer each time the packets are sent. >>> Time threshold can also be configured, using ethtool. >>> >>> Signed-off-by: Marcin Wojtas >>> Signed-off-by: Simon Guinot >>> --- >>> drivers/net/ethernet/marvell/mvneta.c | 89 +++++++++++++++++++++++++++++++++-- >>> 1 file changed, 85 insertions(+), 4 deletions(-) >>> >>> diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c >>> index 9c9e858..f5acaf6 100644 >>> --- a/drivers/net/ethernet/marvell/mvneta.c >>> +++ b/drivers/net/ethernet/marvell/mvneta.c >>> @@ -21,6 +21,8 @@ >>> #include >>> #include >>> #include >>> +#include >>> +#include >> >> ktime.h is already included by hrtimer.h. >> >>> #include >>> #include >>> #include >>> @@ -226,7 +228,8 @@ >>> /* Various constants */ >>> >>> /* Coalescing */ >>> -#define MVNETA_TXDONE_COAL_PKTS 1 >>> +#define MVNETA_TXDONE_COAL_PKTS 15 >>> +#define MVNETA_TXDONE_COAL_USEC 100 >> >> Maybe we should keep the default configuration and let the user choose >> to enable (or not) this feature ? > > I think that this feature should be enabled by default, same as in RX > (which is enabled by HW in ingress). It satisfies all kinds of traffic > or queues sizes. I'd prefer a situation that if someone really wants > to disable it (even if I don't know the possible justification), then > let him use ethtool for this purpose. > >> >>> #define MVNETA_RX_COAL_PKTS 32 >>> #define MVNETA_RX_COAL_USEC 100 >>> >>> @@ -356,6 +359,11 @@ struct mvneta_port { >>> struct net_device *dev; >>> struct notifier_block cpu_notifier; >>> >>> + /* Egress finalization */ >>> + struct tasklet_struct tx_done_tasklet; >>> + struct hrtimer tx_done_timer; >>> + bool timer_scheduled; >> >> I think we could use hrtimer_is_queued() instead of introducing a new >> variable. >> > > Good point, i'll try that. > > Best regards, > Marcin -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/