Messages in this thread | | | Date | Mon, 02 Feb 2009 09:42:45 +0100 | From | Stefan Richter <> | Subject | Re: [RFC][PATCH] create workqueue threads only when needed |
| |
Benjamin Herrenschmidt wrote: > On Mon, 2009-02-02 at 03:24 +0100, Frederic Weisbecker wrote: >> On Mon, Feb 02, 2009 at 08:37:41AM +1100, Benjamin Herrenschmidt wrote: >> > >> > > I don't know, most of those I've looked on are not documented about the reason >> > > for a private workqueue. I guess most of them can use the usual kevent.
I rather suspect that the majority of private workqueues are there for good reasons.
>> > The main problem with kevent is that it gets clogged up. >> >> I don't think so. Here is a snapshot of the workqueue tracer in my >> box currently: > > That's not quite what I meant ... > > The main problem with keventd I'd say is that it's used in all sort of > exeptional code path (ie, driver reset path, error handling, etc...) for > things that will msleep happily for tenth milliseconds, that sort of > thing. > > IE. It will be pretty responsive -in general- but can suffer form > horrible latencies every now and then.
Actually it /should/ be the other way around:
The shared workqueue should only be used for work that sleeps only briefly (perhaps with the exception of very unlikely longer sleeps e.g. for allocations that cause paging).
Work which /may/ sleep longer, for example performs SCSI transactions, needs to go into a private workqueue or other kind of context.
OTOH you are right too; work which must not be deferred too long by work from another uncooperative/ unfair subsystem is probably also better off in an own workqueue... -- Stefan Richter -=====-==--= --=- ---=- http://arcgraph.de/sr/
| |