public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Dmitry Safonov <dima@arista.com>
To: Linus Torvalds <torvalds@linux-foundation.org>,
	Eric Dumazet <edumazet@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Frederic Weisbecker <frederic@kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Dmitry Safonov <0x7f454c46@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	David Miller <davem@davemloft.net>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	Hannes Frederic Sowa <hannes@stressinduktion.org>,
	Ingo Molnar <mingo@kernel.org>,
	"Levin, Alexander (Sasha Levin)" <alexander.levin@verizon.com>,
	Paolo Abeni <pabeni@redhat.com>,
	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
	Radu Rendec <rrendec@arista.com>, Rik van Riel <riel@redhat.com>,
	Stanislaw Gruszka <sgruszka@redhat.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Wanpeng Li <wanpeng.li@hotmail.com>
Subject: Re: [RFC 1/2] softirq: Defer net rx/tx processing to ksoftirqd context
Date: Thu, 11 Jan 2018 20:34:43 +0000	[thread overview]
Message-ID: <1515702883.3039.27.camel@arista.com> (raw)
In-Reply-To: <CA+55aFwA1skftujPWmuQJq_s-EG=PP+mFiuUiZNBar=deYNu3Q@mail.gmail.com>

On Thu, 2018-01-11 at 12:22 -0800, Linus Torvalds wrote:
> On Thu, Jan 11, 2018 at 12:16 PM, Eric Dumazet <edumazet@google.com>
> wrote:
> > 
> > Note that when I implemented TCP Small queues, I did experiments
> > between
> > using a work queue or a tasklet, and workqueues added unacceptable
> > P99
> > latencies, when many user threads are competing with kernel
> > threads.
> 
> Yes.
> 
> So I think one solution might be to have a hybrid system, where we do
> the softirq's synchronously normally (which is what you really want
> for good latency).
> 
> But then fall down on a threaded model - but that fallback case
> should
> be per-softirq, not global. So if one softirq uses a lot of CPU time,
> that shouldn't affect the latency of other softirqs.
> 
> So maybe we could get rid of the per-cpu ksoftirqd entirely, and
> replace it with with per-cpu and per-softirq workqueues?
> 
> Would something like that sound sane?
> 
> Just a SMOP/SMOT (small matter of programming/testing).

I could try to write a PoC for that..
What should be the trigger to fall into workqueue?
How to tell if there're too many softirqs of the kind?
Current logic with if (pending) in the end of __do_softirq()
looks working selectively..
It looks to be still possible to starve a cpu.

-- 
Thanks,
             Dmitry

  reply	other threads:[~2018-01-11 20:34 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-09 13:36 [RFC 0/2] Net softirq deferring to ksoftirqd Dmitry Safonov
2018-01-09 13:36 ` [RFC 1/2] softirq: Defer net rx/tx processing to ksoftirqd context Dmitry Safonov
2018-01-09 16:03   ` Frederic Weisbecker
2018-01-10 21:20     ` Dmitry Safonov
2018-01-09 18:02   ` Eric Dumazet
2018-01-10 21:48     ` Dmitry Safonov
2018-01-11  2:13       ` Linus Torvalds
2018-01-11  3:22         ` Frederic Weisbecker
2018-01-11  4:19           ` Linus Torvalds
2018-01-11  4:44             ` Frederic Weisbecker
2018-01-11 14:31               ` Dmitry Safonov
2018-01-11 16:20                 ` Eric Dumazet
2018-01-11 16:32                   ` Peter Zijlstra
2018-01-11 16:38                     ` David Miller
2018-01-11 16:43                       ` Peter Zijlstra
2018-01-11 18:48                     ` Linus Torvalds
2018-01-11 19:15                       ` Eric Dumazet
2018-01-11 19:43                         ` Linus Torvalds
2018-01-11 19:48                           ` Eric Dumazet
2018-01-11 20:03                             ` Linus Torvalds
2018-01-11 20:16                               ` Eric Dumazet
2018-01-11 20:22                                 ` Linus Torvalds
2018-01-11 20:34                                   ` Dmitry Safonov [this message]
2018-01-11 20:37                                     ` Eric Dumazet
2018-01-11 20:40                                     ` Linus Torvalds
2018-01-11 20:46                                       ` Dmitry Safonov
2018-01-11 20:53                                         ` Eric Dumazet
2018-01-11 21:13                                           ` Dmitry Safonov
2018-01-12  5:41                                             ` Frederic Weisbecker
2018-01-12  5:23                                   ` Mike Galbraith
2018-01-12 10:13                                     ` Peter Zijlstra
2018-01-12 17:26                                       ` Linus Torvalds
2018-01-12 17:44                                         ` Mike Galbraith
2018-01-12 17:51                                           ` Linus Torvalds
2018-01-12 18:15                                             ` Mike Galbraith
2018-01-12 18:44                                               ` Mike Galbraith
2018-01-17 20:30                                                 ` David Miller
2018-01-17 21:06                                                   ` Linus Torvalds
2018-01-17 21:49                                                     ` David Miller
2018-01-17 21:54                                                       ` Thomas Gleixner
2018-01-17 21:58                                                         ` Linus Torvalds
2018-01-17 22:00                                                           ` Thomas Gleixner
2018-01-17 22:02                                                             ` Eric Dumazet
2018-01-17 22:24                                                               ` David Miller
2018-01-17 22:54                                                                 ` Thomas Gleixner
2018-02-06 16:56                                                                 ` Sebastian Andrzej Siewior
2018-02-13 16:36                                                                   ` Thomas Gleixner
2018-01-17 21:54                                                       ` Linus Torvalds
2018-01-17 21:58                                                         ` Thomas Gleixner
2018-01-12 19:28                                             ` Thomas Gleixner
2018-01-12 19:53                                               ` Frederic Weisbecker
2018-01-12 14:58                                     ` Frederic Weisbecker
2018-01-12 15:15                                       ` Mike Galbraith
2018-01-12 17:00                                         ` Frederic Weisbecker
2018-01-12 18:08                                           ` Mike Galbraith
2018-01-12 17:24                                     ` Linus Torvalds
2018-01-09 13:36 ` [RFC 2/2] softirq: Introduce mask for __do_softirq() Dmitry Safonov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1515702883.3039.27.camel@arista.com \
    --to=dima@arista.com \
    --cc=0x7f454c46@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=alexander.levin@verizon.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=frederic@kernel.org \
    --cc=fweisbec@gmail.com \
    --cc=hannes@stressinduktion.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=pabeni@redhat.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=peterz@infradead.org \
    --cc=riel@redhat.com \
    --cc=rrendec@arista.com \
    --cc=sgruszka@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=wanpeng.li@hotmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox