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

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

From: Mike Galbraith <hidden>
Date: 2016-02-29 04:58:15
Also in: lkml

On Sun, 2016-02-28 at 18:01 +0100, Francois Romieu wrote:
Mike Galbraith [off-list ref] :
[...]
quoted
Hrm, relatively new + tasklet woes rings a bell.  Ah, that..


What's worse is that at the point where this code was written it was
already well known that tasklets are a steaming pile of crap and
should die.


Source thereof https://lwn.net/Articles/588457/
tasklets are ingrained in the dmaengine API (see Documentation/dmaengine/client.txt
and drivers/dma/virt-dma.h::vchan_cookie_complete).

Moving everything to irq context or handling his own sub-{jiffy/ms} timer
while losing async dma doesn't exactly smell like roses either. :o(
https://lwn.net/Articles/239633/

If I'm listening properly, the root cause is that there is a timing
constraint involved, which is being exposed because one softirq raises
another (ew).  Processing timeout happens, freshly raised tasklet
wanders off to SCHED_NORMAL kthread context where its constraint dies.

Given the dma stuff apparently works fine in -rt (or did, see below),
timing constraints can't be super tight, so perhaps we could grow
realtime workqueue support for the truly deserving.  The tricky bit
would be being keeping everybody and his brother from abusing it.

WRT -rt: if dma tasklets really do have hard (ish) constraints, -rt
recently "broke" in the same way.. of all softirqs which are deferred
to kthread context, due to a recent change, only timer/hrtimer are
executed at realtime priority by default.

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