[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20110622093706.GB30101@htj.dyndns.org>
Date: Wed, 22 Jun 2011 11:37:06 +0200
From: Tejun Heo <tj@...nel.org>
To: Peter Zijlstra <a.p.zijlstra@...llo.nl>
Cc: linux-kernel@...r.kernel.org,
Linus Torvalds <torvalds@...ux-foundation.org>,
Ingo Molnar <mingo@...e.hu>,
Thomas Gleixner <tglx@...utronix.de>,
Jens Axboe <jaxboe@...ionio.com>
Subject: Re: [RFC][PATCH 2/3] sched, workqueue: Move WQ-sleeper wakeup
On Wed, Jun 22, 2011 at 11:27:28AM +0200, Peter Zijlstra wrote:
> On Wed, 2011-06-22 at 11:24 +0200, Tejun Heo wrote:
> > Preemption could still be enabled here, right? What prevents
> > preemtion kicking after wq_worker_sleeping() and do it again thus
> > breaking nr_running tracking.
>
> Aren't all PF_WQ_WORKER threads cpu-bound?
Hmmm... I don't see how that would matter. Please consider the
following scenario.
* A work item calls schedule() for whatever reason.
* schedule() calls sched_submit_work() which in turn calls
wq_worker_sleeping() which adjusts nr_running. All this happens
with preemption enabled.
* sched_submit_work() returns but before schedule() does
preempt_disable(), an IRQ is delivered. By the time IRQ return path
is executed, TIF_NEED_RESCHED is set which in turn calls schedule()
again and repeats the above two steps for the same worker.
Thanks.
--
tejun
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists