mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: "Kristian Høgsberg" <krh@redhat.com>
Cc: Ingo Molnar <mingo@elte.hu>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Christoph Hellwig <hch@infradead.org>,
	john stultz <johnstul@us.ibm.com>,
	Oleg Nesterov <oleg@tv-sign.ru>,
	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
	Dipankar Sarma <dipankar@in.ibm.com>,
	"David S. Miller" <davem@davemloft.net>,
	kuznet@ms2.inr.ac.ru
Subject: Re: [RFC PATCH 0/6] Convert all tasklets to workqueues
Date: Mon, 25 Jun 2007 15:11:18 -0400	[thread overview]
Message-ID: <1182798678.5493.179.camel@localhost.localdomain> (raw)
In-Reply-To: <1182797325.1689.14.camel@hinata.boston.redhat.com>

On Mon, 2007-06-25 at 14:48 -0400, Kristian Høgsberg wrote:

> OK, here's a yell.  I'm using tasklets in the new firewire stack for all

Thanks for speaking up!

> interrupt handling.  All my interrupt handler does is read out the event
> mask and schedule the appropriate tasklets.  Most of these tasklets
> typically just end up scheduling work or completing a completion, so
> moving it to a workqueue is pretty pointless.  In particular, the
> isochronous DMA events must be handled with as little latency as
> possible, so a workqueue in that code path would be pretty bad.
> 
> I'm not strongly attached to tasklets, and it sounds like I got it wrong
> and used the wrong delayed execution mechanism.  But that's just another
> data point that suggests that there are too many of these.  I guess I
> need to sit down and look into porting that to softirqs?
> 
> 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.

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.

I think I even found a bug in a driver that was trying to get around the
non-reentrancy of a tasklet (will post this soon).

It's looking like only a few tasklets have this critical requirement,
and are the candidates to move to a more generic softirq.  The rest of
the tasklets would be switched to work queues, and this gross wrapper of
mine can do that in the meantime so we can find those that should be
converted to a generic softirq.

-- Steve



  reply	other threads:[~2007-06-25 19:13 UTC|newest]

Thread overview: 129+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-22  4:00 Steven Rostedt
2007-06-22  4:00 ` [RFC PATCH 1/6] Convert the RCU tasklet into a softirq Steven Rostedt
2007-06-22  7:10   ` Christoph Hellwig
2007-06-22  7:43     ` Ingo Molnar
2007-06-22 12:35       ` Steven Rostedt
2007-06-22 12:55         ` Ingo Molnar
2007-06-22  4:00 ` [RFC PATCH 2/6] Split out tasklets from softirq.c Steven Rostedt
2007-06-22  7:11   ` Christoph Hellwig
2007-06-22 12:40     ` Steven Rostedt
2007-06-22 13:45   ` Akinobu Mita
2007-06-22 13:58     ` Steven Rostedt
2007-06-22  4:00 ` [RFC PATCH 3/6] Add a tasklet is-scheduled API Steven Rostedt
2007-06-22  4:00 ` [RFC PATCH 4/6] Make DRM use the tasklet is-sched API Steven Rostedt
2007-06-22  6:36   ` Daniel Walker
2007-06-22  6:49     ` Thomas Gleixner
2007-06-22  7:08       ` Daniel Walker
2007-06-22 12:15         ` Steven Rostedt
2007-06-22 15:36           ` Daniel Walker
2007-06-22 22:38             ` Ingo Molnar
2007-06-22 23:28               ` Daniel Walker
2007-06-22 16:10       ` Arnd Bergmann
2007-06-22 16:56         ` Steven Rostedt
2007-06-22 18:24         ` Christoph Hellwig
2007-06-22 23:38           ` Dave Airlie
2007-06-22  4:00 ` [RFC PATCH 5/6] Move tasklet.h to tasklet_softirq.h Steven Rostedt
2007-06-22  4:00 ` [RFC PATCH 6/6] Convert tasklets to work queues Steven Rostedt
2007-06-22  7:06   ` Daniel Walker
2007-06-22 13:29     ` Steven Rostedt
2007-06-22 15:52       ` Oleg Nesterov
2007-06-22 16:35         ` Steven Rostedt
2007-06-23 11:15   ` Arnd Bergmann
2007-06-22  7:09 ` [RFC PATCH 0/6] Convert all tasklets to workqueues Christoph Hellwig
2007-06-22  7:51   ` Ingo Molnar
2007-06-22  7:53     ` Christoph Hellwig
2007-06-22 11:23       ` Ingo Molnar
2007-06-22 12:32   ` Steven Rostedt
2007-06-22 12:38     ` Ingo Molnar
2007-06-22 12:58       ` Steven Rostedt
2007-06-22 13:12         ` Ingo Molnar
2007-06-22 14:27           ` Steven Rostedt
2007-06-22 13:13         ` Andrew Morton
2007-06-22 13:26           ` Ingo Molnar
2007-06-22 13:41             ` Andrew Morton
2007-06-22 14:00               ` Ingo Molnar
2007-06-22 13:35           ` Steven Rostedt
2007-06-22 14:25 ` Arjan van de Ven
2007-06-22 14:42   ` Steven Rostedt
2007-06-22 14:43     ` Arjan van de Ven
2007-06-22 17:16 ` Linus Torvalds
2007-06-22 17:31   ` Steven Rostedt
2007-06-22 18:32   ` Christoph Hellwig
2007-06-22 20:40   ` Ingo Molnar
2007-06-22 21:00     ` Christoph Hellwig
2007-06-22 21:10       ` Ingo Molnar
2007-06-22 21:13       ` Thomas Gleixner
2007-06-22 21:37     ` Linus Torvalds
2007-06-22 21:59       ` Ingo Molnar
2007-06-22 22:09         ` Ingo Molnar
2007-06-22 22:43           ` Roland Dreier
2007-06-22 22:57             ` Alan Cox
2007-06-22 22:58         ` Steven Rostedt
2007-06-23  6:23         ` Dave Airlie
2007-06-24 15:16         ` Jonathan Corbet
2007-06-24 15:52           ` Steven Rostedt
2007-06-25 16:50           ` Tilman Schmidt
2007-06-25 17:06             ` Steven Rostedt
2007-06-25 20:50               ` Tilman Schmidt
2007-06-25 21:03                 ` Steven Rostedt
2007-06-25 19:52             ` Stephen Hemminger
2007-06-26  0:00           ` Jonathan Corbet
2007-06-26  0:52             ` Steven Rostedt
2007-06-25 18:48         ` Kristian Høgsberg
2007-06-25 19:11           ` Steven Rostedt [this message]
2007-06-25 20:07             ` Kristian Høgsberg
2007-06-25 20:31               ` Steven Rostedt
2007-06-25 21:08                 ` Kristian Høgsberg
2007-06-25 21:15           ` Ingo Molnar
2007-06-25 23:36             ` Stefan Richter
2007-06-26  0:46               ` Steven Rostedt
2007-06-26  1:46         ` Dan Williams
2007-06-26  2:01           ` Steven Rostedt
2007-06-26  2:12             ` Dan Williams
2007-06-28 12:37               ` Steven Rostedt
2007-06-28 16:37                 ` Oleg Nesterov
2007-06-28 18:02                 ` Dan Williams
2007-06-28 20:46                   ` Steven Rostedt
2007-06-28 21:23                     ` Dan Williams
2007-06-28 21:40                       ` Dan Williams
2007-06-28 22:01                         ` Steven Rostedt
2007-06-28 22:00                       ` Steven Rostedt
2007-06-28  5:48         ` Jeff Garzik
2007-06-28  9:23           ` Ingo Molnar
2007-06-28 14:38             ` Alexey Kuznetsov
2007-06-28 15:23               ` Jeff Garzik
2007-06-28 15:54               ` Steven Rostedt
2007-06-28 16:00               ` Ingo Molnar
2007-06-28 17:26                 ` Jeff Garzik
2007-06-28 17:44                 ` Jeff Garzik
2007-06-28 18:19                 ` Andrew Morton
2007-06-28 20:07                   ` Ingo Molnar
2007-06-29 11:34                 ` Alexey Kuznetsov
2007-06-29 11:48                   ` Duncan Sands
2007-06-29 13:36                     ` Alexey Kuznetsov
2007-06-29 14:01                       ` Duncan Sands
2007-06-29 16:34                         ` Alexey Kuznetsov
2007-06-29 12:29                   ` Ingo Molnar
2007-06-29 13:25                     ` Alexey Kuznetsov
2007-06-29 13:43                       ` Ingo Molnar
2007-06-29 15:23                         ` Alexey Kuznetsov
2007-06-29 13:41                   ` Steven Rostedt
2007-06-29 14:24                     ` Jeff Garzik
2007-06-29 14:26                     ` Oleg Nesterov
2007-06-29 19:04                       ` Alexey Kuznetsov
2007-06-29 14:27                     ` Alexey Kuznetsov
2007-06-29 15:51                   ` Oleg Nesterov
2007-06-29 16:21                     ` Alexey Kuznetsov
2007-06-29 16:52                       ` Oleg Nesterov
2007-06-29 17:09                         ` Oleg Nesterov
2007-06-30 11:25                           ` Oleg Nesterov
2007-06-28 15:17             ` Jeff Garzik
2007-06-22 21:53     ` Daniel Walker
2007-06-22 22:09       ` david
2007-06-22 22:15         ` Daniel Walker
2007-06-22 22:44           ` Ingo Molnar
2007-06-22 23:28             ` Daniel Walker
2007-06-22 22:15       ` Ingo Molnar
2007-06-23  5:14 ` Stephen Hemminger
2007-06-26 13:03 Clemens Ladisch
2007-06-26 13:15 ` Takashi Iwai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1182798678.5493.179.camel@localhost.localdomain \
    --to=rostedt@goodmis.org \
    --cc=akpm@linux-foundation.org \
    --cc=davem@davemloft.net \
    --cc=dipankar@in.ibm.com \
    --cc=hch@infradead.org \
    --cc=johnstul@us.ibm.com \
    --cc=krh@redhat.com \
    --cc=kuznet@ms2.inr.ac.ru \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=oleg@tv-sign.ru \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®