Messages in this thread | | | Date | Wed, 1 Apr 2015 09:56:07 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH] workqueue: avoid nohz_full cores |
| |
On Tue, Mar 31, 2015 at 03:37:45PM -0400, Tejun Heo wrote: > Hello, Chris. > > On Tue, Mar 31, 2015 at 03:25:59PM -0400, cmetcalf@ezchip.com wrote: > > From: Chris Metcalf <cmetcalf@ezchip.com> > > > > When queuing work, we should avoid queuing it on the local cpu if > > we are using WORK_CPU_UNBOUND and the local cpu is nohz_full, since > > the workqueue will mean a later interrupt of the nohz_full process > > that presumably would prefer continuing to have 100% of the core > > without interrupts. > > > > Likewise, remove the nohz_full cores from unbound workqueues. If > > all the cores are nohz_full, we leave them in. > > The problem with this is that workqueue currently doesn't distinguish > why work items are queued on per-cpu workqueues. It can't tell > whether being bound to local CPU is for correctness or optimization > and thus can't break local execution guarantee for anybody. We need > to hunt down all the ones which depend on local execution and annotate > them with explicit queue_work_on() before being able to do this.
This is moot on unbound workqueues, they can run wherever so it can never be a correctness thing, right?
| |