Thread (32 messages) 32 messages, 7 authors, 2016-03-07

Re: Softirq priority inversion from "softirq: reduce latencies"

From: Thomas Gleixner <hidden>
Date: 2016-02-29 19:16:05
Also in: lkml

On Mon, 29 Feb 2016, Peter Hurley wrote:
On 02/29/2016 10:24 AM, Eric Dumazet wrote:
quoted
quoted
Just to be clear

		if (time_before(jiffies, end) && !need_resched() &&
		    --max_restart)
			goto restart;

aborts softirq *even if 0ns have elapsed*, if NET_RX has woken a process.
Sure, now remove the 1st and 2nd condition.
Well just removing the 2nd condition has everything working fine,
because that fixes the priority inversion.
No. It does not fix anything. It hides the shortcomings of the driver.
 
However, when system resources are _not_ contended, it makes no
sense to be forced to revert to ksoftirqd resolution, which is strictly
intended as fallback.
No. You claim it is simply because your driver does not handle that situation
properly.
 
Or flipping your argument on its head, why not just _always_ execute
softirq in ksoftirqd?
Which is what that change effectivley does. And that makes a lot of sense,
because you get the softirq load under scheduler control and do not let the
softirq run as a context stealing entity which is completely uncontrollable by
the scheduler.

Running the softirq on return from interrupt can cause real priority
inversions.

Thanks,

	tglx
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help