Re: [RFC PATCH 0/6] Convert all tasklets to workqueues

From: Christoph Hellwig
Date: Fri Jun 22 2007 - 03:10:36 EST


On Fri, Jun 22, 2007 at 12:00:14AM -0400, Steven Rostedt wrote:
> The most part, tasklets today are not used for time critical functions.
> Running tasklets in thread context is not harmful to performance of
> the overall system. But running them in interrupt context is, since
> they increase the overall latency for high priority tasks.

I think we probably want some numbers, at least for tasklets used in
potentially performance critical code.

> Even in Matthew's paper, he says that work queues have replaced tasklets.
> But this is not truly the case. Tasklets are common and plentiful.
> But to go and replace each driver that uses a tasklet with a work queue
> would be very painful.
>
> I've developed this way to replace all tasklets with work queues without
> having to change all the drivers that use them. I created an API that
> uses the tasklet API as a wrapper to a work queue. This API doesn't need
> to be permanent. It shows 1) that work queues can replace tasklets, and
> 2) we can remove a duplicate functionality from the kernel. This API
> only needs to be around until we removed all uses of tasklets from
> all drivers.

I don't like this wrapping at all. What you're doing is a tradeoff to
do less work today in exchange for more maintaince overhead and more crufty
code in the future. So while I sympathize a lot with trying to get rid
of tasklets I'd rather prefer to convert individual drivers over until
all users are gone. It's not exactly a very complicated conversion either.

> 6) This is the magic to make tasklets into work queues. It allows for
> the kernel to be configured either with the normal tasklets, as it is
> today, or with the tasklets-as-work-queues.

And this is something that might be fine for benchmarking, but not something
we should put in. Keeping two wildly different implementation of core
functionality with very different behaviour around is quite bad. Better
kill tasklets once for all.

-
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/