From: Peter Hurley <peter@hurleysoftware.com>
To: Eric Dumazet <eric.dumazet@gmail.com>
Cc: David Miller <davem@davemloft.net>,
edumazet@google.com, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, gregkh@linuxfoundation.org,
dmaengine@vger.kernel.org, john.ogness@linutronix.de,
bigeasy@linutronix.de, akpm@linux-foundation.org
Subject: Re: Softirq priority inversion from "softirq: reduce latencies"
Date: Sat, 27 Feb 2016 18:10:27 -0800 [thread overview]
Message-ID: <56D25713.8050307@hurleysoftware.com> (raw)
In-Reply-To: <1456624766.648.43.camel@edumazet-ThinkPad-T530>
On 02/27/2016 05:59 PM, Eric Dumazet wrote:
> On sam., 2016-02-27 at 15:33 -0800, Peter Hurley wrote:
>> On 02/27/2016 03:04 PM, David Miller wrote:
>>> From: Peter Hurley <peter@hurleysoftware.com>
>>> Date: Sat, 27 Feb 2016 12:29:39 -0800
>>>
>>>> Not really. softirq raised from interrupt context will always execute
>>>> on this cpu and not in ksoftirqd, unless load forces softirq loop abort.
>>>
>>> That guarantee never was specified.
>>
>> ??
>>
>> Neither is running network socket servers at normal priority as if they're
>> higher priority than softirq.
>>
>>
>>> Or are you saying that by design, on a system under load, your UART
>>> will not function properly?
>>>
>>> Surely you don't mean that.
>>
>> No, that's not what I mean.
>>
>> What I mean is that bypassing the entire SOFTIRQ priority so that
>> sshd can process one network packet makes a mockery of the point of softirq.
>>
>> This hack to workaround NET_RX looping over-and-over-and-over affects every
>> subsystem, not just one uart.
>>
>> HI, TIMER, BLOCK; all of these are skipped: that's straight-up, a bug.
>
> No idea what you talk about.
>
> All pending softirq interrupts are processed. _Nothing_ is skipped.
An interrupt that schedules HI softirq while in NET_RX softirq should
still run the HI softirq. But with your patch that won't happen.
> Really, your system stability seems to depend on a completely
> undocumented behavior of linux kernels before linux-3.8
>
> If I understood, you expect that a tasklet activated from a softirq
> handler is run from the same __do_softirq() loop. This never has been
> the case.
No.
The *interrupt handler* for DMA goes off while NET_RX softirq is running.
That's what schedules the *DMA tasklet*.
That tasklet should run before any process.
But it doesn't because your patch bails out early from softirq.
> My change simply triggers the bug in your driver earlier. As David
> pointed out, your bug should trigger the same on a loaded machine, even
> if you revert my patch.
>
> I honestly do not know why you arm a tasklet from NET_RX, why don't you
> simply process this directly, so that you do not rely on some scheduler
> decision ?
next prev parent reply other threads:[~2016-02-28 2:10 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-27 18:19 Softirq priority inversion from "softirq: reduce latencies" Peter Hurley
2016-02-27 20:13 ` Eric Dumazet
2016-02-27 20:29 ` Peter Hurley
2016-02-27 23:04 ` David Miller
2016-02-27 23:33 ` Peter Hurley
2016-02-28 1:59 ` Eric Dumazet
2016-02-28 2:10 ` Peter Hurley [this message]
2016-02-28 2:17 ` Eric Dumazet
2016-02-28 4:46 ` David Miller
2016-02-28 5:55 ` Mike Galbraith
2016-02-28 17:01 ` Francois Romieu
2016-02-29 4:58 ` Mike Galbraith
2016-02-29 15:03 ` Peter Hurley
2016-02-29 15:19 ` Eric Dumazet
2016-02-29 15:54 ` Peter Hurley
2016-02-29 16:21 ` Eric Dumazet
2016-02-29 18:05 ` Peter Hurley
2016-02-29 18:24 ` Eric Dumazet
2016-02-29 18:53 ` Peter Hurley
2016-02-29 19:14 ` Thomas Gleixner
2016-02-29 20:24 ` David Miller
2016-02-29 23:04 ` Peter Hurley
2016-02-29 15:27 ` Eric Dumazet
2016-02-29 19:13 ` Peter Hurley
2016-02-29 19:43 ` Eric Dumazet
2016-02-29 15:40 ` Mike Galbraith
2016-02-29 15:58 ` Peter Hurley
2016-02-29 16:24 ` Eric Dumazet
2016-02-29 17:16 ` David Miller
2016-03-07 15:31 ` Sebastian Andrzej Siewior
2016-03-07 17:06 ` Mike Galbraith
2016-03-07 15:48 ` Sebastian Andrzej Siewior
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=56D25713.8050307@hurleysoftware.com \
--to=peter@hurleysoftware.com \
--cc=akpm@linux-foundation.org \
--cc=bigeasy@linutronix.de \
--cc=davem@davemloft.net \
--cc=dmaengine@vger.kernel.org \
--cc=edumazet@google.com \
--cc=eric.dumazet@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=john.ogness@linutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.