Messages in this thread | | | Date | Thu, 23 Jun 2011 12:15:41 +0200 | From | Tejun Heo <> | Subject | Re: [patch 4/4] sched: Distangle worker accounting from rq->lock |
| |
Hello,
On Thu, Jun 23, 2011 at 11:58:12AM +0200, Thomas Gleixner wrote: > > Well, not exactly. If CPU is being thrashed, we don't want to try to > > fire up new workers or calling in rescuers. If nr_running is bumped > > up from ttwu(), a woken up but not yet running worker already counts > > as running. With the suggested change, when we hit such heavy CPU > > thrashing, workqueue code will add things on top of it. > > That's the whole problem with that self forking workqueue stuff and > I'm not accepting that ttwu() is the only solution to that. Following > that logic would just invite more abusers of callbacks into ttwu() and > if you think it through then the logical consequence is to have an > upcall hook into userspace so a threading/forking server knows how > many instances are on the fly to avoid creating new ones under > pressure.
Extrapolating to extremes doesn't really help anything. You can make any argument with logics like that. The thing isn't being exported to userland, not even close.
The patch description is simply untrue. It does affect how wq behaves under heavy CPU load. The effect might be perfectly okay but more likely it will result in subtle suboptimal behaviors under certain load situations which would be difficult to characterize and track down. Again, the trade off (mostly killing of ttwu_local) could be okay but you can't get away with just claiming "there's no harm".
Thanks.
-- tejun
| |