lkml.org 
[lkml]   [2007]   [Jun]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [RFC PATCH 0/6] Convert all tasklets to workqueues
    From
    Date
    On Mon, 2007-06-25 at 15:11 -0400, Steven Rostedt wrote:
    > On Mon, 2007-06-25 at 14:48 -0400, Kristian Høgsberg wrote:
    > ...
    > > However, I don't really understand how you can discuss a wholesale
    > > replacing of tasklets with workqueues, given the very different
    > > execution sematics of the two mechanisms. I would think that others
    > > have used tasklets for similar purposes as I have and moving that to
    > > workqueues just has to break a bunch of stuff. I don't know the various
    > > places tasklets are used as well as other people in this thread, but I
    > > think deprecating them and moving code to either softirqs or workqueues
    > > on a case by case basis is a better approach. That way we also avoid
    > > the gross wrappers.
    >
    > The gross wrappers were a perfect way to shed light on something that is
    > overused, and should most likely be replaced.
    >
    > Does your system need to have these functions that are in tasklets need
    > to be non-reentrant? I wonder how many "irq critical" functions used
    > tasklets just because adding a softirq requires too much (no generic
    > softirq code). A tasklet is constrained to run on one CPU at a time,
    > and it is not guaranteed to run on the CPU it was scheduled on.

    When I started the firewire work, I wasn't aware that tasklets were
    going away, but I knew that doing too much work in the interrupt handler
    was frowned upon, for good reasons. So I was looking at softirqs vs
    taslkets, and since using softirqs means you have to go add yourself to
    the big bitmask, I opted for tasklets. The comment in interrupt.h
    directly recommends this. As it stands, the firewire stack does
    actaully rely on the non-reentrancy of tasklets, but that's not a
    deal-breaker, I can add the necessary locking.

    > Perhaps it's time to add a new functionality while removing tasklets.
    > Things that are ok to bounce around CPUs (like tasklets do) can most
    > likely be replaced by a work queue. But these highly critical tasks
    > probably would benefit from being a softirq.
    >
    > 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...

    Kristian

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-06-25 22:13    [W:4.212 / U:0.180 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site