Messages in this thread | | | Date | Mon, 8 Apr 2013 13:13:28 +0200 | From | Jens Axboe <> | Subject | Re: [PATCH V4 3/4] block: queue work on unbound wq |
| |
On Sun, Mar 31 2013, Tejun Heo wrote: > Hello, Viresh. > > On Sun, Mar 31, 2013 at 08:01:46PM +0530, Viresh Kumar wrote: > > Block layer uses workqueues for multiple purposes. There is no real dependency > > of scheduling these on the cpu which scheduled them. > > > > On a idle system, it is observed that and idle cpu wakes up many times just to > > service this work. It would be better if we can schedule it on a cpu which the > > scheduler believes to be the most appropriate one. > > > > This patch replaces normal workqueues with UNBOUND versions. > > Hmm.... so, we really don't want to unconditionally convert workqueues > to unbound. Especially not kblockd. On configurations with multiple > high iops devices with IRQ routing, having request completion runinng > on the same CPU has significant performance advantages. We can't > simply switch it to an unbound wokrqueue because it saves power on > small arm configuration.
I had the same complaint, when it was posted originally...
> Plus, I'd much prefer to be clearly marking the workqueues which would > contribute to powersaving when converted to unbound at least until we > can come up with a no-compromise solution which doesn't need to trade > off between cache locality and powersaving. > > So, let's please introduce a new flag to mark these workqueues, say, > WQ_UNBOUND_FOR_POWER_SAVE or whatever (please come up with a better > name) and provide a compile time switch with boot time override.
And lets please have it off by default. The specialized configs / setups can turn it on, but we should default to better performance.
-- Jens Axboe
| |