Re: [patch 4/4] sched: Distangle worker accounting from rq->lock

Tejun Heo
2011-06-23T10:15:46Z

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