Re: [RFC PATCH 0/6] Convert all tasklets to workqueues
From: Steven Rostedt
Date: Mon Jun 25 2007 - 16:34:19 EST
On Mon, 2007-06-25 at 16:07 -0400, Kristian Høgsberg wrote:
> > Maybe we should be looking at something like GENERIC_SOFTIRQ to run
> > functions that a driver could add. But they would run only on the CPU
> > that scheduled them, and do not guarantee non-reentrant as tasklets do
> > today.
> Sounds like this will fill the gap. Of course, this won't reduce the
> number of delayed-execution mechanisms available...
I disagree. Adding a generic softirq is not really adding another
delayed-execution, it's just extending the sofitrq. It would not have
any different semantics as a normal softirq, except that it would be
dynamic for modules to use. A tasklet has different concepts than
softirq. It adds non-reentrancy and that the tasklet function can run
where it wasn't scheduled.
Adding a generic softirq would keep the same concepts as a softirq but
just extend the users for it. Tasklets are probably not the best for
critical sections since it can be postponed longer if it was scheduled
on another CPU that is handling a bunch of other tasklets. So the
latency of running the tasklet is higher and you lose a cache advantage
by jumping to another CPU to execute.
Work queues already exist, so all we need to do to replace tasklets is
to extend softirqs for those critical cases that tasklets are used, and
replace the rest with work queues. By removing the non critical tasklets
to work queues will even lower the latency to execution of the more
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/